J2se(11)--------五子棋游戏

J2se(11)

阶段小练习

----五子棋游戏

gobang----五子连珠


第一阶段:  画棋盘
A、首先把图片转换成程序中可以使用对象,把作为一个面板背景

1、创建一个窗体,宽度610px,高630px
2、在窗体中放置一个面板Jpanel,填充满整个屏幕
3、编写Jpanel面板的单击事件  --MouseListener----MouseClicked
4、编写内部类MyPanel继承于JPanel
(把图片文件夹,导入到工程的根目录)

A、在类中,重写父类的paint(Graphics g)方法
B、在方法,首先利用swing组件的一些方法,将3张图片转换程序中可以使用的对象
Image bg = Toolkit.getDefaultToolkit().createImage("img/bg.gif");
C、创建媒体跟踪器(它用于注册程序中要使用的图片对象)
MediaTracker mt = new MediaTracker(this);

D、在媒体跟踪器中,注册三个图片对象
mt.addImage(b,0);
E、让媒体跟踪器,把所有注册过的图片添加到内存,供程序使用
mt.waitForAll();

F、利用画笔在面板中绘制背景
g.drawImage(bg,0,0,null);

5、将GobangFrm窗体类中的
jpanel1 = new MyPanel();


第二阶段:  在棋盘落子
1、定义一个二维数组用于保存每一个棋子的坐标(全局变量)
private int[][]  arrs = new int[15][15];//用于存储棋子的坐标
2、定义一个boolean型的变量flag,用于标识,当前应该是谁落棋子,默认true,表示黑棋

3、在第一阶段第3步中的事件中如下处理
A、先确定鼠标点击的位置的x与y值
int x = evt.getX()/40;
int y = evt.getY()/40;
缩小40倍,刚好对应到二维数组的下标

4、判断当前x,y对应的位置是否有棋子

5、 判断flag是true还是false,true为1,false为2

if(flag){
arrs[x][y]=1;
}else{
arrs[x][y]=2;
}
6、让棋盘重新绘图
jpanel1.repaint();//只要该方法一调用,棋盘就会重新绘制,包含棋子
用户调用jpanel1的repaint(),系统则会自动调用面板类的 paint()方法
7、flag取反,让对方落棋  

flag = !flag;
8、在MyPanel的方法中,绘棋子(对二维数组循环判断当前的值是0,1,2)
for(int i=0;i<15;i++){
for(int j=0;j<15;j++){
if(arrs[i][j]==1){
g.drawImage(a,i*40,j*40,null);
}
if(arrs[i][j]==2){
g.drawImage(b,i*40,j*40,null);
}
}
}

第三阶段: 判断胜负(五子连成一条线)

1、编写方法,判断是否胜利  isWin

2、在方法中做如下处理:

A、定义一个整型变量,用于保存棋子的颜色

int chessman=0;//用于保存棋子的颜色
if(flag){
chessman = 1;//黑棋
}else{
chessman=2;//白棋
}
3、定义一个int类型的变量,用于保存有几个相同颜色棋子连成一条线


int count=1;

4、将x,y定义成全局变量


for(int i=0;i<15;i++){
for(int j=0;j<15;j++){
arrs[i][j]=0;
}
}

你可能感兴趣的:(j2se,j2se,五子棋,java,基础)