Java项目:五子棋(一)
五子棋项目主要分为三个类
主界面,鼠标监听器,窗体,以及配置文件(便于修改)
需要导入的文件,可以通过编译器自动补全完成,因此我们只需关注主体部分。
主界面部分
public class UI implements Config{
public static void main(String[] args)
{
...}
public void showUI()
{
...}
}
主类继承了Config文件中的常量,从而便于修改
public static void main(String[] args)
{
UI ui = new UI();
ui.showUI();
}
main方法是程序的入口,在程序启动时自动执行,内容是创建一个名为ui的UI对象,并且调用showUI方法
public void showUI(){
NewFrame jf = new NewFrame(); //新建一个窗体对象
jf.setSize(width,height); //设置分辨率
jf.setTitle(title); //设置标题
jf.setLocationRelativeTo(null); //居中
jf.setDefaultCloseOperation(3); //点击关闭后,在后台结束程序,从而避免占用资源
jf.setVisible(true); //将窗体设置为可见
Graphics g = jf.getGraphics(); //新建一个画笔对象,依附于窗体对象上
MouseListener m = new MouseListener();//新建一个鼠标监听器
jf.addMouseListener(m); //在窗体上添加鼠标监听器
m.gr = g; //将新建的画笔对象g赋值给鼠标监听器上的画笔gr,从而实现参数和方法的传递
jf.m = m; //
}
鼠标监听器部分
监听器的类型是接口(interface),接口中的抽象方法不能直接使用,因此要写一个子类来继承
public class MouseListener implements java.awt.event.MouseListener,Config {
@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) {
}
接口中的所有抽象方法都必须包含在子类中,且不能改动重写方法的类型,参数,返回值。其中只有鼠标点击方法(mouseClicked)需要重写
public Graphics gr;
int [][]chess = new int[size_x][size_y];
int x1,y1; //get location
int first = 0; //if black first,choose 0; else, choose 1;
int x2,y2; //location in array
为了在类之间传递参数,需要创建一个画笔对象。为了保存棋盘上的棋子位置,需要创建一个二维数组,大小为棋盘的长度和宽度。
需要注意的是,在二维数组中是按列、行的顺序排序的。因为五子棋的棋盘是正方形,颠倒行列不影响程序运行。
数组的特点是从零开始计数,若一个数组的大小为4,则保存的位置为0~3
我们将x1,x2定义为鼠标点击的原始坐标,x2,y2定义为它在数组中的位置,如第三列第二行为x2 = 3,y2 = 2
将first定义为下棋的先后顺序,偶数为黑棋先下
public int getLocation(int x)
{
int a =x%size;