java-----五子棋小游戏(二)-----黑白棋落子制作
来源:互联网 发布:编程励志图片 编辑:程序博客网 时间:2024/04/30 02:09
一、代码实现
package org.like.game.frame;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.Toolkit;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import javax.imageio.ImageIO;import javax.swing.JFrame;import javax.swing.JOptionPane;public class FiveChessFrame extends JFrame implements MouseListener{int width = Toolkit.getDefaultToolkit().getScreenSize().width;int height = Toolkit.getDefaultToolkit().getScreenSize().height; BufferedImage bgImage = null; int x = 0;//存放鼠标点击位置的x坐标 int y = 0;//存放鼠标点击位置的y坐标 int[][] allChess = new int[19][19];//一个19*19的二维数组,0代表无棋子,1代表黑棋,2代表白旗,这样能保存之前的落子,避免repaint后,只有一个棋子显示,默认数组所有值都为0 boolean isBlack = true;//用来判断下一步是否下黑棋 public FiveChessFrame(){this.setTitle("五子棋");this.setSize(500,500);this.setLocation((width-500)/2,(height-500)/2);this.setResizable(false);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);this.addMouseListener(this);try{bgImage = ImageIO.read(new File("F:/mypicture/java/background.jpg"));}catch (IOException e){e.printStackTrace();}}public void paint(Graphics g){g.drawImage(bgImage,3,20,this);g.setFont(new Font("黑体",Font.BOLD,20));g.drawString("游戏信息:", 150, 50);g.setFont(new Font("宋体",0,14));g.drawString("黑方时间:无限制", 45, 470);g.drawString("白方时间:无限制", 260, 470);for(int i=0;i<19;i++){ g.drawLine(13, 70+20*i, 372, 70+20*i); g.drawLine(13+20*i,70,13+20*i,430);}g.fillOval(71, 128, 4, 4);g.fillOval(311, 128, 4, 4);g.fillOval(311, 368, 4, 4);g.fillOval(71, 368, 4, 4);g.fillOval(311, 248, 4, 4);g.fillOval(191, 128, 4, 4);g.fillOval(71, 248, 4, 4);g.fillOval(191, 368, 4, 4);g.fillOval(191, 248, 4, 4);for(int i=0;i<19;i++)//输出棋盘上所有的棋子for(int j=0;j<19;j++){if(allChess[i][j] == 1){x = i * 20 + 13;//各个相邻横线和各个相邻竖线的距离是20,棋盘距离边界13y = j * 20 + 70;g.fillOval(x-7, y-7, 14, 14);//画大小为14的圆,x,y都减7使圆心在交叉线处}if(allChess[i][j] == 2){x = i * 20 + 13;y = j * 20 + 70;g.setColor(Color.WHITE);//设置颜色为白色,默认是黑色g.fillOval(x-7, y-7, 14, 14);g.setColor(Color.BLACK);g.drawOval(x-7, y-7, 14, 14);//在实心白圆的外边画一个空心黑圈}}}@Overridepublic void mouseClicked(MouseEvent e){}@Overridepublic void mousePressed(MouseEvent e){ x = e.getX(); y = e.getY(); if(x >= 13 && x <= 372 && y >= 70 && y <= 430)//判断鼠标点击位置是否在棋盘内部 { x = (x - 13) / 20;//使坐标与二位数组坐标对应起来 y = (y - 70) / 20; if(allChess[x][y] == 0)//判断那个地方是否有棋子,如果有,就弹出窗口提示 { if(isBlack) { allChess[x][y] = 1;//存储棋盘上这个地方的棋子信息 isBlack = false;//使得下次落子显示白棋 } else { allChess[x][y] = 2; isBlack = true;//使得下次落子显示黑棋 } this.repaint();//重新调用paint()绘制一遍 } else { JOptionPane.showMessageDialog(this, "当前位置已经有旗子了,请重新落子!"); } } }@Overridepublic void mouseReleased(MouseEvent e){}@Overridepublic void mouseEntered(MouseEvent e){}@Overridepublic void mouseExited(MouseEvent e){}public static void main(String[] args){FiveChessFrame ff = new FiveChessFrame(); }}
二、效果展示
0 0
- java-----五子棋小游戏(二)-----黑白棋落子制作
- 黑白棋的落子
- 黑白棋(落子)
- C++——黑白棋(落子)
- c++黑白棋小游戏
- 黑白棋求使新状态己方子最多的落子位置
- java-----五子棋小游戏(一)-----背景图片制作
- JAVA 黑白棋
- c语言图形小游戏(黑白棋)
- 黑白棋(落子)绞尽脑汁 与老师模式强烈不兼容的思路(不推荐)
- 五子棋落子游戏
- 一款java休闲小游戏--黑白棋
- 【java】五子棋小游戏
- 【java】五子棋小游戏
- Java写五子棋小游戏
- java----五子棋小游戏
- reversi-cli - 跟风做的一个黑白棋小游戏
- 黑白棋的设计说明(二)
- WebLogic 11g重置用户密码过程
- Windows命令行学习
- Spring Java 发送各种邮件
- nyoj 70阶乘因式分解(二)(数学)
- 如何用LR11测试flex开发的平台
- java-----五子棋小游戏(二)-----黑白棋落子制作
- 第6周作业1-闰年之循环判断
- C++随记:【cstdio(25) : error C2143: syntax error : missing '{' before ':'】
- hive(数据仓库工具)
- Excel宏操作
- Ubuntu下配置samba实现文件夹共享
- 钥匙计数之二
- JSP自定义标签库
- jquery,Ajax判断验证码是否正确,不正确阻止提交