房天下 > 房天下问答 > 业主生活 > 其他
  • JAVA五子棋程序代码分析(2)

    public void itemStateChanged(ItemEvent e){if (ckbHB[0].getState()) //选择黑子先还是白子先{ color_Qizi=0;}else{ color_Qizi=1;}}public void actionPerformed(ActionEvent e){Graphics g=getGraphics();if (e.getSource()==b1){ Game_start();}else{ Game_re();}}public void mousePressed(MouseEvent e){}public void mouseClicked(MouseEvent e){Graphics g=getGraphics();int x1,y1;x1=e.getX();y1=e.getY();if (e.getX()<20 || e.getX()>300 || e.getY()<20 || e.getY()>300){ return;}if (x1%20>10){ x1+=20;}if(y1%20>10){ y1+=20;}x1=x1/20*20;y1=y1/20*20;set_Qizi(x1,y1);}public void mouseEntered(MouseEvent e){}public void mouseExited(MouseEvent e){}public void mouseReleased(MouseEvent e){}public void mouseDragged(MouseEvent e){}public void mouseMoved(MouseEvent e){}public void paint(Graphics g){draw_qipan(g);}public void set_Qizi(int x,int y) //落子{if (intGame_Start==0) //判断游戏未开始{ return;}if (intGame_Body[x/20][y/20]!=0){ return;}Graphics g=getGraphics();if (color_Qizi==1)//判断黑子还是白子{ g.setColor(Color.black); color_Qizi=0;}else{ g.setColor(Color.white); color_Qizi=1;}g.fillOval(x-10,y-10,20,20);intGame_Body[x/20][y/20]=color_Qizi+1;if (Game_win_1(x/20,y/20)) //判断输赢{ lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!"); intGame_Start=0;}if (Game_win_2(x/20,y/20)) //判断输赢{ lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!"); intGame_Start=0;}if (Game_win_3(x/20,y/20)) //判断输赢{ lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!"); intGame_Start=0;}if (Game_win_4(x/20,y/20)) //判断输赢{ lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!"); intGame_Start=0;}}public String Get_qizi_color(int x){if (x==0){ return "黑子";}else{ return "白子";}}public void draw_qipan(Graphics G) //画棋盘 15*15{G.setColor(Color.lightGray);G.fill3DRect(10,10,300,300,true);G.setColor(Color.black);for(int i=1;i<16;i++){ G.drawLine(20,20*i,300,20*i); G.drawLine(20*i,20,20*i,300);}}public void Game_start() //游戏开始{intGame_Start=1;Game_btn_enable(false);b2.setEnabled(true);}public void Game_start_csh() //游戏开始初始化{intGame_Start=0;Game_btn_enable(true);b2.setEnabled(false);ckbHB[0].setState(true);for (int i=0;i<16 ;i++ ){ for (int j=0;j<16 ;j++ ) { intGame_Body[i][j]=0; }}lblWin.setText("");}public void Game_re() //游戏重新开始{repaint();Game_start_csh();}public void Game_btn_enable(boolean e) //设置组件状态{b1.setEnabled(e);b2.setEnabled(e);ckbHB[0].setEnabled(e);ckbHB[1].setEnabled(e);}

    提问者:倩茹燕

    发布于2011-02-10

共1个回答
  • Y564335 丨Lv 0
    前面一些跟(1)有重复,而且代码不全…public void itemStateChanged(ItemEvent e) //ItemListener接口中的方法,必须要有{ if (ckbHB[0].getState()) //选择黑子先还是白子先 { color_Qizi=0; //白棋先} else { color_Qizi=1; //黑棋先} } public void actionPerformed(ActionEvent e) //ActionListener接口中的方法,也是必须的{ Graphics g=getGraphics(); //这句话貌似可以去掉,g是用来画图或者画界面的if (e.getSource()==b1) //如果动作的来源是第一个按钮{ Game_start(); //游戏开始} else //否则{ Game_re(); //游戏重新开始} } public void mousePressed(MouseEvent e){} //MouseListener接口中的方法,用不到所以留个空,但一定要有public void mouseClicked(MouseEvent e) //鼠标单击时{ Graphics g=getGraphics(); //获得画笔int x1,y1; x1=e.getX(); //单击处的x坐标y1=e.getY(); //单击处的y坐标if (e.getX()<20 || e.getX()>300 || e.getY()<20 || e.getY()>300) //在棋盘范围之外{ return; //则这是不能走棋的,直接返回} //下面这两个if和两个赋值的作用是将x和y坐标根据舍入原则修改成棋盘上格子的坐标if (x1%20>10) { x1+=20; } if(y1%20>10) { y1+=20; } x1=x1/20*20; y1=y1/20*20; set_Qizi(x1,y1); //在棋盘上画上一个棋子} public void mouseEntered(MouseEvent e){} //MouseListener接口中的方法,用不到所以留个空,但一定要有public void mouseExited(MouseEvent e){} //MouseListener接口中的方法,用不到所以留个空,但一定要有public void mouseReleased(MouseEvent e){} //MouseListener接口中的方法,用不到所以留个空,但一定要有public void mouseDragged(MouseEvent e){} //MouseListener接口中的方法,用不到所以留个空,但一定要有public void mouseMoved(MouseEvent e){} //MouseListener接口中的方法,用不到所以留个空,但一定要有public void paint(Graphics g) //重绘和applet程序装载的时候会调用这个绘制的过程{ draw_qipan(g); //画棋盘}public void set_Qizi(int x,int y) //落子 { if (intGame_Start==0) //判断游戏未开始 { return; //走棋无效,返回} if (intGame_Body[x/20][y/20]!=0) //如果这个位置上已经有了棋子{ return; //走棋无效,返回} Graphics g=getGraphics(); //获得画笔if (color_Qizi==1)//判断黑子还是白子 { g.setColor(Color.black); //设置颜色为黑色color_Qizi=0; //下一步棋就会是白色了} else { g.setColor(Color.white); //设置颜色为白色color_Qizi=1; //下一步棋颜色为黑色} g.fillOval(x-10,y-10,20,20); //画一个圆,前面两个参数是左上角坐标intGame_Body[x/20][y/20]=color_Qizi+1; //棋盘状态中这个位置上相应地添上棋子,1为白棋2为黑棋0为空位置if (Game_win_1(x/20,y/20)) //判断输赢,这么几个判断输赢的函数没找到嘛~楼主看看代码是不是全的{ lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!"); //修改标签上的输赢的信息intGame_Start=0; //游戏结束} if (Game_win_2(x/20,y/20)) //判断输赢 { lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!"); //修改标签上的输赢的信息intGame_Start=0; //游戏结束} if (Game_win_3(x/20,y/20)) //判断输赢 { lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!"); //修改标签上的输赢的信息intGame_Start=0; //游戏结束} if (Game_win_4(x/20,y/20)) //判断输赢 { lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!"); //修改标签上的输赢的信息intGame_Start=0; //游戏结束} } public String Get_qizi_color(int x) //获得棋子颜色的字符串{ if (x==0) //黑棋{ return "黑子"; } else //白棋{ return "白子"; } }public void draw_qipan(Graphics G) //画棋盘 15*15 { G.setColor(Color.lightGray); //设置颜色为亮灰色G.fill3DRect(10,10,300,300,true); //绘制一个用当前颜色填充的 3-D 高亮显示矩形,矩形的边是高亮显示的G.setColor(Color.black); //设置颜色为黑色for(int i=1;i<16;i++) //15*15的棋盘,横竖各有16道线{ G.drawLine(20,20*i,300,20*i); //画竖线G.drawLine(20*i,20,20*i,300); //画横线} } public void Game_start() //游戏开始 { intGame_Start=1; //游戏状态为 1游戏中Game_btn_enable(false); //设置所有组件不可用b2.setEnabled(true); //重新开始游戏的按钮可用} public void Game_start_csh() //游戏开始初始化 { intGame_Start=0; //游戏状态为 0未开始游戏Game_btn_enable(true); //设置所有组件可用b2.setEnabled(false); //重新开始游戏的按钮不可用ckbHB[0].setState(true); //默认设置为白棋先手//下面的二重循环是初始化棋盘为空棋盘,即一个棋子都没有for (int i=0;i<16 ;i++ ) { for (int j=0;j<16 ;j++ ) { intGame_Body[i][j]=0; } } lblWin.setText(""); //输赢信息为空} public void Game_re() //游戏重新开始 { repaint(); //界面重绘Game_start_csh(); //游戏重新初始化} public void Game_btn_enable(boolean e) //设置组件状态 { b1.setEnabled(e); //第一个按钮设置为可用(e == true)或不可用(e == false)b2.setEnabled(e); //第二个按钮设置 同上ckbHB[0].setEnabled(e); //第一个checkbox设置 同上ckbHB[1].setEnabled(e); //第二个checkbox设置 同上}
    +1 2011-02-10 举报
热门人气推荐
免责声明:问答内容均来源于互联网用户,房天下对其内容不负责任,如有版权或其他问题可以联系房天下进行删除。