Java实现两人五子棋游戏(七)屏幕提示信息

  

之前的两篇文章:Java实现两人五子棋游戏(二)画出棋盘;Java实现两人五子棋游戏(三)画出棋子;Java实现两人五子棋游戏(四)落子动作的实现;Java实现两人五子棋游戏(六)行棋方变换,可以点击查看。

  

接下来我们要实现的功能是在有五连珠的时候,在屏幕上提示信息。直接在mousePressed函数的isWin部分使用showMessageDialog即可。

  

mousePressed函数代码如下:

        @Override//当用户按下鼠标按钮时发生   公共空间mousePressed (MouseEvent e) {   int point_x=e.getX ();   int point_y=e.getY ();      int imgWidth=boardImg.getHeight(这个);   int imgHeight=boardImg.getWidth(这个);   int FWidth=getWidth ();   int FHeight=获得();      int x=(FWidth-imgWidth)/2;   int y=(FHeight-imgHeight)/2;      int span_x=imgWidth/行;   int span_y=imgHeight/行;//System.out.println(“媒体”);   int status_x=0;   int status_y=0;   如果(point_x>=x,,point_x<=x + imgWidth,,point_y>=y,和point_y & lt;=y + imgHeight)   {//System.out.println(“合法”);   (int i=0; i<行+ 1,我+ +)   {   如果(point_x>=x-chessman_width/2 + 1 + i * span_x)   {   如果(point_x<=x + chessman_width/2 - 1 + i * span_x)//如果是宽/2会在中间点出现两个匹配值   {//system . out。println (“x”+我+ " " + point_x + " " +(我* span_x x-chessman_width/2 +) + " " + (x + chessman_width/2 + i * span_x));   status_x=我;   }   }   }   (int i=0; i<行+ 1,我+ +)   {   如果(point_y>=y-chessman_width/2 + 1 + i * span_y)   {   如果(point_y & lt;=y + chessman_width/2 - 1 + i * span_y)   {//system . out。println (“y”+我+ " " + point_y + " " + (y-chessman_width/2 + 1 + i * span_y) + " " + (y + chessman_width/2 - 1 + i * span_y));   status_y=我;   }   }   }      如果(chessStatus [status_x] [status_y]==null | | chessStatus [status_x] [status_y] .getPlaced ()==false)   {   棋子棋子=new棋子(chessColor,真实);   chessStatus [status_x] [status_y]=棋子;   system . out。println(“象棋颜色:”+ chessColor);   如果(chessColor==黑)   {   chessColor=白;   其他}{   chessColor=黑色;   }   重画();//如果胜出,给出提示信息   如果(isWin (status_x status_y chessStatus))   {   System.out.println(“赢! ! ! ! !”);   字符串赢家;//如果下一子是白色的,那么此次为黑方   如果怀特(chessColor==)   赢家="黑方”;   其他的   赢家="白方”;   字符串mString=字符串。格式(“恭喜,% s赢! ! ! ! !”赢家);   JOptionPane。showMessageDialog(这个,mString);   }   }   }   }      之前      

运行一下:

  

癑ava实现两人五子棋游戏(七)屏幕提示信息"

  

至此,我们完成了最基本的五子棋功能。下面我将完整代码贴出:

  

癑ava实现两人五子棋游戏(七)屏幕提示信息"

  

Chessman.java         包xchen.test.simpleGobang;      公开课棋子{   私人int颜色;//一只白,0代表黑   私人布尔=false;   int matchCount=1;      公共棋子(int颜色,布尔){   this.color=颜色;   this.placed=放置;   }      公共布尔getPlaced () {   返回放置;   }      公共空间setPlaced(布尔){   这一点。放置=放置;   }      公共int色鬼(){   返回颜色;   }      公共空间改变颜色(int颜色){   这一点。颜色=颜色;   }   }      

主要。java
  

        包xchen.test.simpleGobang;      进口java.awt.Container;   进口javax.swing.JFrame;      进口xchen.test.simpleGobang.DrawChessBoard;      公开课主要延伸JFrame {   私人DrawChessBoard DrawChessBoard;   公共Main () {   drawChessBoard=new drawChessBoard ();//帧标题   setTitle(“单机五子棋”);      容器containerPane=getContentPane ();   containerPane.add (drawChessBoard);   }   公共静态void main (String [] args) {   主要m=新Main ();   m。setSize (800、800);   m.setVisible(真正的);   }   }   之前      

DrawChessBoard。java
  

        包xchen.test.simpleGobang;      进口java.awt.Color;   进口java.awt.Graphics;   java . awt . graphics2d进口;   进口java.awt.Image;   进口java.awt.RadialGradientPaint;   进口java.awt.Toolkit;   进口java.awt.event.MouseEvent;   进口java.awt.event.MouseListener;      进口javax.swing.JOptionPane;   进口javax.swing.JPanel;      公共类DrawChessBoard JPanel延伸实现MouseListener {   最终的静态int黑=0;   最终的静态int白色=1;   公共int chessColor=黑色;   int chessman_width=30;      公众形象boardImg;   最后一个私人int行=19;   棋子[][]chessStatus=new棋子(行数+ 1)(行数+ 1);      公共DrawChessBoard () {   boardImg=Toolkit.getDefaultToolkit () .getImage (“res/可拉的/chessboard2.png”);   如果(boardImg==null)   System.err。println (“png不存在”);      addMouseListener(这个);   }   @Override   保护无效paintComponent(图形g) {//TODO自动生成方法存根   super.paintComponent (g);      int imgWidth=boardImg.getHeight(这个);   int imgHeight=boardImg.getWidth(这个);   int FWidth=getWidth ();   int FHeight=获得();      int x=(FWidth-imgWidth)/2;   int y=(FHeight-imgHeight)/2;      int span_x=imgWidth/行;   int span_y=imgHeight/行;      g。drawImage (boardImg, x, y, null);//画横线   for (int i=0; i

Java实现两人五子棋游戏(七)屏幕提示信息