进击的五子棋第一季

RunGmae类

1 package com.lovo;
2
3 public class GameRun {
4     public static void main(String[] args) {
5         new MyFrame().setVisible(true);
6     }
7 }

MyFrame类

 1 package com.lovo;
 2
 3 import java.awt.Color;
 4 import java.awt.Graphics;
 5 import java.awt.Image;
 6 import java.awt.event.ActionEvent;
 7 import java.awt.event.ActionListener;
 8 import java.awt.image.BufferedImage;
 9
10 import javax.swing.JFrame;
11 import javax.swing.Timer;
12
13 public class MyFrame extends JFrame{
14     private static final long serialVersionUID = -3544738451252364271L;
15     private Board board = new Board();
16     //在内存中创建一张图
17     private Image offImage = new BufferedImage(800, 800, BufferedImage.TYPE_INT_RGB);
18     public MyFrame(){
19         this.setTitle("五子棋");
20         this.setSize(800, 800);
21         this.setResizable(false);
22         this.getContentPane().setBackground(new Color(197, 194, 129));//设置窗口背景
23         this.setDefaultCloseOperation(EXIT_ON_CLOSE);
24         this.setLocationRelativeTo(null);    //窗口居中
25         Timer timer =new Timer(100, new ActionListener() {
26             @Override
27             public void actionPerformed(ActionEvent e) {
28                 board.makeAMove();
29                 repaint();//通知系统重新调用paint()
30             }
31         });
32         timer.start();
33     }
34
35     @Override
36     public void paint(Graphics g) {//操作系统调用该方法绘图
37         Graphics newG = offImage.getGraphics();//得到内存中图片的画笔
38         super.paint(newG);                //有才能设置背景,在内存中画出窗口
39         board.draw(newG);                //在内存中画出棋盘
40         g.drawImage(offImage, 0, 0, 800, 800,null);//把内存里的棋盘放到屏幕上
41     }
42 }

board类

 1 package com.lovo;
 2
 3 import java.awt.BasicStroke;
 4 import java.awt.Color;
 5 import java.awt.Graphics;
 6 import java.awt.Graphics2D;
 7 import java.awt.Stroke;
 8
 9 public class Board {
10     private int[][] b = new int[15][15];
11     private boolean blackTurn = true;
12 /**
13  * 画棋盘
14  * @param g
15  */
16     public void draw(Graphics g) {
17         g.setColor(Color.BLACK);    //加了双缓冲后默认是白色,设置为黑色
18         Graphics2D g2d = (Graphics2D) g;    //用Graphics2D可以调粗细
19         Stroke oldsStroke = g2d.getStroke();//保存现场
20         g2d.setStroke(new BasicStroke(3));    //设置画笔粗细
21         g.drawRect(50, 50, 700, 700);    //矩形框
22         g2d.setStroke(oldsStroke);        //回复现场
23         for (int i = 0; i < 13; i++) {
24             g.drawLine(50, 100 + i * 50, 750, 100 + i * 50);
25             g.drawLine(100 + i * 50, 50, 100 + i * 50, 750);
26         }
27         //画天元和三三点
28         g.fillOval(390, 390, 20, 20);//实心椭圆
29         g.fillOval(195, 195, 10, 10);
30         g.fillOval(595, 195, 10, 10);
31         g.fillOval(595, 595, 10, 10);
32         g.fillOval(195, 595, 10, 10);
33         for (int i = 0; i < b.length; i++) {//行的循环,控制纵坐标
34             for (int j = 0; j < b[i].length; j++) {//列的循环,控制横坐标
35                 if (b[i][j] != 0) {
36                     g.setColor(b[i][j] == 1 ? Color.BLACK : Color.WHITE);
37                     g.fillOval(25 + 50 * j, 25 + 50 * i, 50, 50);
38                 }
39             }
40         }
41     }
42     public void makeAMove() {
43         int row = (int) (Math.random() * 15);
44         int col = (int) (Math.random() * 15);
45         if (b[row][col] == 0) {
46             b[row][col] = blackTurn ? 1 : 2;//0表示没有走棋,1表示黑棋,2表示白棋
47             blackTurn = !blackTurn;            //交换走棋
48         }
49
50     }
51 }
时间: 2024-12-20 09:04:52

进击的五子棋第一季的相关文章

进击的五子棋第二季

1 package com.lovo; 2 3 import java.awt.BasicStroke; 4 import java.awt.Color; 5 import java.awt.Graphics; 6 import java.awt.Graphics2D; 7 import java.awt.Stroke; 8 9 import org.w3c.dom.css.Counter; 10 11 public class Board { 12 private int currentCol

视频Android studio1.3.1从菜鸟到高手--第一季-IT蓝豹

Android studio1.3.1从菜鸟到高手--第一季 01.安装Android studio前的准备工作02.安装JDK和Android studio03.创建并且启动模拟器运行代码04.Android Studio的项目结构讲解05.Android studio常用配置设置06.Android studio顶部常用视图介绍07.Android studio 底部常用视图功能08.断点调试09.快捷键简介&编写常用功能10.用Android Studio导入Android Studio工

下载大数据实战课程第一季Python基础和网络爬虫数据分析

python语言近年来越来越被程序相关人员喜欢和使用,因为其不仅简单容易学习和掌握,而且还有丰富的第三方程序库和相应完善的管理工具:从命令行脚本程序到gui程序,从B/S到C/S,从图形技术到科学计算,软件开发到自动化测试,从云计算到虚拟化,所有这些领域都有python的身影:python已经深入到程序开发的各个领域,并且会越来越多的人学习和使用. 大数据实战课程第一季Python基础和网络爬虫数据分析,刚刚入手,转一注册文件,视频的确不错,可以先下载看看:链接:http://pan.baidu

unity3D游戏开发实战原创视频讲座系列10之《保卫战:异形入侵》游戏开发第一季

讲解目录 <保卫战:异形入侵>游戏开发    1 第一讲   游戏演示和资源的介绍    1 第二讲  "异形"怪物的实现    1 第三讲  "异形"怪物生命值的体现    9 第四讲  "异形"怪物死后处理    12 第五讲  玩家的制作    15 第六讲  玩家的行走控制(键盘)    16 第七讲  武器的切换(鼠标)     16 第八讲  摄像头的变化(鼠标)    19 第九讲  子弹预制体和特效的制作    20

小梅科普:微信公众平台深度开发JAVA版(第一季)

微信作为当前流行的通信社交软件有了上亿的用户量,几乎每一个只能手机都要安装微信.但是,市场上对于JAVA开发微信公众平台的资料却少之又少,多数的资料一般是其他语言的.因此,主讲老师经过潜心研究.认真准备,录制了这套针对JAVA开发语言的微信公众平台开发教程. 1.课程研发环境 开发语言:JAVA WEBServer:TOMAT DATABASE:MySQL 开发工具:myeclipse.MySQL-Front等 其他:在手机应用中的CSS3+div布局.DWR.mybatis.gson.quar

javascript视频教程之第一季《ECMA5核心+设计模式》

javascript!是一门非常强大的脚本语言,应用的范围非常广泛,每一个web开发者学好javascript也是必须的,本套视频教程详细的讲解了javascript各个知识点.关键点,其中涉及到高深的函数概念.原型概念.接口概念.单体概念.更是详细的讲解了javascript设计模式. 本视频教程相当于基本javascript的书籍的结晶<javascript高级程序设计><javascript权威指南><javascript征途><javascript王者归来

盗墓笔记第一季全(12集)下载地址

更多:http://www.webyang.net/Html/web/article_149.html <盗墓笔记>是2014年欢瑞世纪影视传媒股份有限公司出品的一部网络季播剧,改编自南派三叔所著的同名小说,由郑保瑞和罗永昌联合导演,李易峰.唐嫣. 杨洋.刘天佐.张智尧.魏巍等主演. 该剧主要讲述了五个主要角色进入古墓探险的故事,采用季播剧形式,单季投资6000万,第一季拍摄12集. 出身"老九门"世家的吴邪,因身为考古学家的父母在某次保护国家文物行动时被国外盗墓团伙杀害,

金阳光Android自动化测试第一季

第一季:http://www.chuanke.com/v1983382-106000-218422.html 第一节:Android自动化预备课程基础(上) 1. 基于坐标点触屏:monkeyrunner, 北京播思自研工具 2. 基于随机流的单元测试:CTS,monkey 3. 基于元素图形对比:seetest,I-test 4. 腾讯bita和GT 腾讯云测试平台:http://bita.qq.com GT测试:http://gt.tencent.com/ 5. 百度云和ITestIn, 阿

【第一季:Tomcat 8迷情】 第二集:Tomcat8在的用户安全配置

Tomcat的角色 manager-gui - Access to the HTML interface. manager-status - Access to the "Server Status" page only. manager-script - Access to the tools-friendly plain text interface that is described in this document, and to the "Server Status