目录1. 初识项目开发语言技术技能2.继承3.五子棋的初步开发1. 初识项目开发语言游戏矩阵游戏五子棋、围棋、象棋、连连看、俄罗斯方块、扫雷界面开发创建窗体设置属性、创建组件对象添加到窗体上监听器创建监听器类实现监听器接口重写监听器方法创建对象与组件绑定数组[] 初始化、下标、长度判断与循环if-else、for、while类与对象属性、方法、创建对象、调用属性以及方法鼠标、键盘控制游戏自己独立完成一些任务植物大战僵尸、雷霆战机技术技能画图Graphics 图形、GPU-显卡-5060绘制直线、矩形、圆形、设置颜色、设置字体、绘制图片窗体对象在可视化之后也可以获取一个 Graphics 对象用于在窗体上绘制图形。Graphics g jf.getGraphics();鼠标监听器接口MouseListener功能监听窗体当鼠标在窗体上按下、松开、点击等操作后会被识别用来获取坐标。public class GoBangListener implements MouseListener { Override public void mouseClicked(MouseEvent e) { }// 鼠标单击按下释放且没有拖动 Override public void mousePressed(MouseEvent e) { }// 鼠标按下任意按键按下瞬间 Override public void mouseReleased(MouseEvent e) { }// 鼠标释放松开按键 Override public void mouseEntered(MouseEvent e) { }//鼠标光标进入组件区域 Override public void mouseExited(MouseEvent e) { }//鼠标光标离开组件区域 }2.继承在编写五子棋的代码时我们会遇到以下问题绘制好的图形在窗体上一旦窗体改变尺寸/最大化/最小化/移出屏幕外绘制的图形就会消失而出现这个问题的原因是窗体以上情况发生时会调用GPU重新绘制窗体自己本身基于此我们可以通过继承的学习来解决这个问题~继承是面向对象三大特性之一封装、继承、多态作用复用已有类的代码建立类与类之间的父子关系类与类之间的关系子类 继承 父类public class 子类名 extends 父类名{ }1.子类中可以继承父类所有的属性以及方法2.子类可以改造父类的方法 通过重写方法的形式3.五子棋的初步开发package xzn0721; import javax.swing.*; import java.awt.*; import java.awt.image.ImageObserver; import java.text.AttributedCharacterIterator; public class GoBangUI { public void showUI(){ myFrame jf new myFrame(); jf.setSize(600,700); jf.setLocationRelativeTo(null);//居中显示 jf.setDefaultCloseOperation(3); jf.setVisible(true); //将鼠标监听器绑定到窗体上实现点击鼠标就能画圆 GoBangListener gbl new GoBangListener(jf); jf.addMouseListener(gbl); } static void main() { GoBangUI gbUI new GoBangUI(); gbUI.showUI(); } }package xzn0721; import javax.swing.*; import java.awt.*; public class myFrame extends JFrame { Override public void paint(Graphics g) { super.paint(g); g.setColor(Color.orange); g.fillRect(0,0,500,500); //划线 g.setColor(Color.black); for(int i1;i16;i) { g.drawLine(50, 20 i * 30, 470, 20 i * 30);//(x1,y1)是线段的起点坐标(x2,y2)是线段的终点坐标 g.drawLine(20 i * 30, 50, 20 i * 30, 470); } //画棋盘上的点 g.setColor(Color.black); g.fillOval(137,137,6,6);//(x,y)是圆形外接正方形的左上角顶点width、height分别是正方形的宽与高 g.fillOval(377,377,6,6); g.fillOval(377,137,6,6); g.fillOval(137,377,6,6); g.fillOval(257,257,6,6); } }​package xzn0721; import javax.swing.*; import java.awt.*; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; public class GoBangListener implements MouseListener { JFrame jf; int clickCount;//记录点击次数初始值为0 //构造方法将窗体地址传给鼠标监听器的成员变量 public GoBangListener(JFrame jf){ this.jf jf; } Override public void mouseClicked(MouseEvent e) { clickCount; int xe.getX();//获取鼠标点击的坐标 int ye.getY(); //使用窗体的作图工具简称画笔 Graphics g1 jf.getGraphics(); if (clickCount % 2 0) { g1.setColor(Color.white); } else { g1.setColor(Color.black); } g1.fillOval(x-15,y-15,30,30); } Override public void mousePressed(MouseEvent e) { } Override public void mouseReleased(MouseEvent e) { } Override public void mouseEntered(MouseEvent e) { } Override public void mouseExited(MouseEvent e) { } }运行结果提示不能把监听器 “绑定到圆上”。 Swing 原生没有图形碰撞监听圆只是画出来的像素不是组件鼠标监听器只能绑定组件。该程序的缺陷1、在窗体上随意落子未将棋子限定在交点坐标2、可重复落子下篇博客我来改进这些问题~