之前的两篇文章: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); } } } } >之前运行一下:
至此,我们完成了最基本的五子棋功能。下面我将完整代码贴出:
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; iJava实现两人五子棋游戏(七)屏幕提示信息