五子棋(一)
来源:互联网 发布:java dom4j解析xml文件 编辑:程序博客网 时间:2024/05/20 12:49
package day141028;import java.awt.Color;import java.awt.Graphics;import java.awt.Image;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.image.BufferedImage;import javax.swing.JFrame;import javax.swing.Timer;@SuppressWarnings("serial")public class MyFrame1 extends JFrame {private Board board = new Board();// 创建棋盘类的对象private Image offImage = new BufferedImage(800, 800, BufferedImage.TYPE_INT_RGB);public MyFrame1() {this.setTitle("五子棋");// 设置窗口标题this.setSize(800, 800);// 设置窗口宽度和高度this.setResizable(false);// 设置窗口大小不可改变this.setLocationRelativeTo(null);// 设置窗口居中this.getContentPane().setBackground(new Color(200, 185, 25));// 设置窗口背景色this.setDefaultCloseOperation(EXIT_ON_CLOSE);// 关闭窗口时结束应用程序Timer timer = new Timer(1000, new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {board.makeAMove();repaint();// 通知操作系统通知你的窗口调用paint方法重新绘制界面}});timer.start();}@Overridepublic void paint(Graphics g) {// 重写此方法的目的是在窗口上绘制自己想要的东西Graphics newG = offImage.getGraphics();super.paint(newG);board.draw(newG);g.drawImage(offImage, 0, 0, 800, 800, null);}}
package day141028;import java.awt.BasicStroke;import java.awt.Color;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.Stroke;public class Board {private int[][] b = new int[15][15];private boolean blackTurn = true;// 是否轮到黑方走棋/** * 绘制棋盘 * @param g 画笔 */public void draw(Graphics g) {g.setColor(Color.BLACK);Graphics2D g2d = (Graphics2D) g;Stroke oldStroke = g2d.getStroke();// 记录画笔原来的粗细(保存现场)g2d.setStroke(new BasicStroke(5));// 修改画笔的粗细g.drawRect(50, 50, 700, 700);// 绘制棋盘边框g2d.setStroke(oldStroke);// 将画笔还原为原来的粗细(恢复现场)// 绘制横纵线条for (int i = 0; i < 13; i++) {g.drawLine(50, 100 + 50 * i, 750, 100 + 50 * i);g.drawLine(100 + 50 * i, 50, 100 + 50 * i, 750);}g.fillOval(395, 395, 10, 10);// 绘制天元g.fillOval(195, 195, 10, 10); // 绘制四个星g.fillOval(595, 595, 10, 10);g.fillOval(195, 595, 10, 10);g.fillOval(595, 195, 10, 10); // 画棋子for(int i = 0; i < b.length; i++) {// 行控制纵坐标for(int j = 0; j < b[i].length; j++) {// 列控制横坐标if(b[i][j] != 0) {g.setColor(b[i][j] == 1? Color.BLACK : Color.WHITE);g.fillOval(25 + 50 * j, 25 + 50 * i, 50, 50);}}}}/** * 随机下棋 */public void makeAMove() {int row = (int) (Math.random() * 15);int col = (int) (Math.random() * 15);if(b[row][col] == 0) {b[row][col] = blackTurn ? 1 : 2;// 用数字1表示黑棋用; 数字2表示白棋blackTurn = !blackTurn;// 交换走棋方}}}
package day141028;public class GameRunner {public static void main(String[] args) {new MyFrame1().setVisible(true);}}
0 0
- 五子棋(一)
- 五子棋收获(一)
- 五子棋(一)
- 五子棋(一)
- 五子棋(一)
- java 实践( 一 )---五子棋
- 五子棋游戏开发点滴-(一)
- 五子棋中的人工智能(一):局面估计
- 五子棋-人人对战(一)
- 基于MFC的五子棋应用(一)
- J2ME的游戏堆积一(入门篇---五子棋)
- 网络五子棋的架构设计(一)--网络通信层
- MFC设计局域网对战五子棋游戏(一)设计
- 2014.10.28五子棋(一)与多态
- Android实现五子棋游戏(一) 游戏基本逻辑
- SDL 实现五子棋 GUI (一)
- 【五子棋AI】一、AI概述
- 【五子棋AI】一、AI概述 .
- 哈票网微信订阅号调研报告
- Java 1028 继承
- MySQL复制之初体验
- leetcode:Find Minimum in Rotated Sorted Array II
- 8.25在操作UI时不让定时器停止的方法 模态
- 五子棋(一)
- 基于第三方QQ授权登录和新浪微博授权登录的iOS代码分析
- 【android】应用架构一一一一一Activity和Fragment的对比分析
- Hdu 1814 Peaceful Commission(2-sat+输出字典序最小方案)
- 如何更改AVD的默认路径
- Jquery,图片依次进入内容区域,幻灯片
- do you know why localhost=127.0.0.1
- hdu 4770 Lights Against Dudely
- 见机行事【Nhibernate懒加载】