您当前的位置:JAVA培训五子棋游戏教程05
JAVA培训五子棋游戏教程05

 五子棋第二步:


在棋盘上的鼠标点击位置显示一个棋子。

通过MouseListener实现  使用MousePressed()

黑棋使用实心的黑圆表示  白棋用一个空心黑圆加上一个实心的白圆表示





类的外面添加   int x=0,y=0;//棋子的坐标
               //下过的棋子通过二维数组保存
               int[][] allChess = new int[19][19];//用于保存棋盘上每个交点的状态
               //为0表示这个点无棋子,1表示黑子,2表示白子
               //标示当前是黑棋还是白棋
               boolean isBlack = true;

public void mousePressed(MouseEvent e){

      /*System.out.print("X:"+e.getX());

      System.out.print("Y:"+e.getY());//上一讲中用于取得坐标*/

      int x = e.getX();

      int y = e.getY();

      //判断点击位置是否在棋盘内

      if(x>=10 && x<=370 && y>=70 && y<=430){//10 370 70 430分别为棋盘边界 

              //判断距离哪个交叉点最近,得到该点坐标并保存到数组中
              x = (x-10)/20 ;
              y = (y-70)/20 ;
              if(allChess[x][y]==0){
              //判断是否可下
                       if(isBlack == true){
                              allChess[x][y] = 1;
                              isBlack = false;
                        }else{
                               allChess[x][y] = 2;
                               isBlack = true;
                        }
              }else{
                    JOptionPane.showMessageDialog(this,"当前位置已经有棋子,请重新下棋!");
              }
              this.repaint();//表示重新执行一次paint()

       }  





paint()下方添加

          //绘制棋子
          for(int i = 0;i<19;i++){
               for(int j =0;j<19;j++){
                      if(allChess[i][j] == 1){
                           //黑子
                           int tempX = i*20+10;//10为左上点横坐标
                           int tempY = j*20+70;
                           g.fillOval(tempX-7,tempY-7,14,14);
                      }
                      if(allChess[i][j] == 2){
                      //白子
                           int tempX = i*20+10;//10为左上点横坐标
                           int tempY = j*20+70;
                           g.setColor(Color.WHITE);
                           g.fillOval(tempX-7,tempY-7,14,14);
                           g.setColor(Color.BLACK);
                           g.drawOval(tempX-7,tempY-7,14,14);
                      }
                }
           }
收藏状态
收藏本课程的同学
相关课程