《JAVA程序设计》五子棋制作实训

合集下载

基于JAVA的五子棋游戏系统设计与实现

基于JAVA的五子棋游戏系统设计与实现

基于JAVA的五子棋游戏系统设计与实现五子棋是一种双人对弈的棋类游戏,也是一种非常经典的游戏类型。

设计一个基于JAVA的五子棋游戏系统,需要考虑到以下几个方面:游戏规则、游戏界面和游戏功能的实现。

一、游戏规则的设计:五子棋的规则非常简单,双方轮流下棋,先连成五子的一方为胜。

游戏区域是一个15x15的棋盘,棋盘上有黑白两种棋子。

玩家可以通过点击棋盘的不同位置来下棋。

二、游戏界面的设计与实现:1. 创建一个游戏主界面,并在界面上绘制棋盘。

可以使用JAVA Swing来创建界面,并使用Graphics类来实现绘制棋盘的功能。

2.在棋盘上绘制出15x15的格子,并设置鼠标点击事件,以便玩家可以通过点击棋盘的不同位置来下棋。

3. 在玩家下棋后,使用Graphics类来在棋盘上绘制出对应的棋子。

可以使用不同的颜色来区分黑白两种棋子。

三、游戏功能的实现:1.实现轮流下棋的功能。

通过一个变量来记录当前轮到哪个玩家下棋,玩家可以通过鼠标点击事件来确定落子的位置。

2.实现判断胜负的功能。

在每次下棋后,判断是否已经有五子连线的情况出现。

可以使用一个二维数组来保存棋盘上每个位置的棋子情况,并根据棋子位置来判断是否满足胜利条件。

3.实现悔棋功能。

当玩家点击悔棋按钮时,可以将最后一步下的棋子清除,并将轮到下棋的玩家切换至上一步下棋的玩家。

4.实现重新开始的功能。

当游戏结束后,可以通过点击重新开始按钮来重新开始游戏。

以上是一个基于JAVA的五子棋游戏系统的设计与实现的简要思路。

在实际的开发过程中,还需要考虑到异常处理、界面美化、多人对战等更多的细节。

希望以上内容能够帮助您完成五子棋游戏系统的设计与实现。

五子棋实训报告(电子版)

五子棋实训报告(电子版)

《JA V A程序设计》实训报告课程名称:JA V A程序设计专业:计算机应用技术班级:11计算机应用班小组成员:巨敏石丽涛张娅雯李延尚文学董丁喜周致远指导老师:武文廷目录一.实训目的 (1)二. 实训题目和要求2.1实训题目描述 (1)2.2实训要求 (1)三.实训报告内容3.1五子棋主框架 (1)3.2棋盘、棋子及说明信息 (1)3.3对弈算法相关问题设计 (1)四.实训中的部分代码 (2)五.五子棋源程序代码 (3)六. 总结 (17)一、实训目的本次实训,学生可以将理论知识与具体实践相结合,巩固对JA VA相关方法和概念的理解。

通过实训单机版五子棋游戏的编程,掌握JA V A语言编程的基础知识并能熟练运用,熟悉累声明与对象的使用,运用JA V Aswing编写单机版五子棋游戏,并实现其功能。

通过本次实训,可以开拓思维,增强编程思想,为深入学习JA VA打下良好的基础。

二、实训题目描述和要求2.1实训题目描述实训题目:JA V A五子棋单机版游戏。

描述:通过JA V A的swing组件,实现五子棋简单的双人对弈,并通过内部条件判断实现输赢的双方的下棋过程。

2.2实训要求(1)五子棋游戏的主窗口也就是游戏界面的实现(2)棋子黑白色的设置及判定(3)完成判断某一横行是否练成五子及所有方向是否练成五子的功能(4)几个简单按钮的实现,“重新开始”“悔棋”“退出”按钮(5)菜单栏的实现,“重新开始”“悔棋”“退出”菜单项三、实训报告内容3.1主框架编写一个startCheesJFrame类,主要用来显行主窗体界面,包括工具条面板、菜单栏项。

设置界面关闭事件。

并编写一个内部类MyItemListener来监听按钮和菜单栏的单机事件。

3.2棋盘、棋子(1)编写point类,包括棋子的X/Y索引,颜色。

定义构造函数和相应的get方法。

(2)编写ChessBoard类,设置棋盘背景颜色为橘黄色(3)在主框架类中创建ChessBoard对象,并添加到主框架中(4)编写mousePressed方法来进行绘制棋盘和棋子3.3对弈算法相关问题设计(1)编写mousePressed方法的内容,预定义isBlack表示下的是黑棋还是白棋。

崔钊 五子棋实训报告

崔钊 五子棋实训报告

《java语言程序设计》实训报告实训题目: 五子棋游戏制作专业:软件技术班级:15软件(1)班姓名:崔钊指导教师:邓衍青2016年6月11日目录一、实训目的: (1)二、实训题目描述和要求 (1)2.1实训题目描述: (1)2.2实训题目要求: (1)三、实训报告内容: (2)3.1需求分析: (2)3.2需求设计: (3)3.3详细设计 (4)四、游戏的测试 (16)五、结论 (21)六、参考书目: (22)一、实训目的:在制作五子棋游戏过程中,增加学生对java和Eclipse的熟练使用,增加对java语言的运用,让我们学到用到的知识来掌握熟练度!二、实训题目描述和要求2.1实训题目描述:五子棋的娱乐性强、规则简单、易学、流行性广,普通人不需长时间专门训练即可自如行棋,因此极受大众喜欢·五子棋规则为:1.棋盘:采用像围棋盘一样的棋盘,本系统采用18路的棋盘·2.下法:两人分别执黑白两色棋子,轮流在棋盘上选择一个无子的交叉点落子,无子的交叉点又被称为空点·3.输赢判断:黑、白双方有一方的五个棋子在横、竖或斜方向上连接成一线即为该方赢·2.2实训题目要求:1.设计功能明确。

2.熟悉JAVA开发环境,掌握JAVA程序的编译和运行。

3.掌握JAVA基本编程技术和方法。

4.实训上交内容:实训报告一份,电子版本实训报告一份,源程序代码。

5.游戏界面要如下图所示:三、实训报告内容:3.1需求分析:程序流程我们看到本程序由4个基本功能模块构成,各模块的详细分析如下:1.初始化FiveChessFrame类过try {bgImage = ImageIO.read(new File("E:/帅志文/image/background.jpg"));} catch (IOException e) {e.printStackTrace();}}加载背景图片,然后再背景图上通过:paint方法中的for(int i= 0; i< 19; i++) {g2.drawLine(10, 70 + 20 * i, 370, 70 + 20 * i);g2.drawLine(10 + 20 * i, 70, 10 + 20 * i, 430);}语句绘制一个18*18的网格棋盘,每次下棋后通过调用repaint方法来初始化程序。

java课程设计报告_五子棋

java课程设计报告_五子棋

目录第一章软件平台……………………………游戏设计思路…………………………第二章小游戏五子棋的开发过程………………第一节JAVA基础知识………………………第二节启动程序的分析……………………第三节游戏设计过程………………………第三章总结…………………………………………第四章参考文献……………………………………第五章附录…………………………………………游戏设计思路:第一节 java程序基础知识本系统有4个程序每个程序都导入了不同的包和类运用了不同的所学知识。

不同的类和包提供的方法、类型等都不同,本程序还使用了继承。

以至使其能够完成不同的功能。

本节主要讲述本系统所使用的基础知识。

1、类的基础<1、类的定义JAVA中的类实质上是一种对象类型,它是对具有相同属性和相同行为对象的一种抽象。

类是java程序中最小的组成单位。

<2、 Java中类定义的格式为:[类修饰符] class 类名 [extends 基类] [implements 接口]{// 成员变量声明(Member variable declaration)// 成员方法声明(Member method declaration)}其中,class、extends和implements都是Java的关键字。

类修饰符、extends和implements是关于修饰符、继承和接口的容。

2、继承继承性是面向对象程序设计语言的一个重要特征,通过继承可以实现代码的复用。

Java语言中,所有的类都是直接或间接的继承 ng.object类而得到的。

被继承的类称为基类或父类,继承而的来的类成为子类。

子类继承基类的方法和属性,同时也可以修改基类的方法和属性,并增加自己新的属性和方法。

Java不支持多重继承。

即一个子类不能拥有两个或以上的父类。

3、包<1、包的定义在Java中,把相关的代码组织到一起,称为“包”。

包市一种将相关类、接口或其他包组织起来的集合体,目的是为了将包含类代码的文件组织起来,易于查找和使用。

java五子棋实习报告

java五子棋实习报告

Java程序设计基础实习报告课程名称Java程序设计基础实习题目java五子棋专业班级学号学生姓名指导教师Java实习报告一、JAVA技术介绍:Java技术是一门编程语言,也是一个平台,它基于Java虚拟机技术,借助这个东西建立了跨平台的优势。

Java编程语言和众不同之处在于:Java程序既是编译型的(转换为一种称为Java字节码的中间语言),又是解释型的(JVM 对字节码进行解析和运行)。

编译只进行一次,而解释在每次运行程序时都会进行。

编译后的字节码采用一种针对JVM 优化过的机器码形式;解释器是JVM 的实现。

二、摘要五子棋作为一个棋类竞技运动,在民间十分流行,本课题主要完成了五子棋人机对战和玩家之间联网对战2个功能。

网络连接部分为Socket编程应用,客户端和服务器端的交互用Class Message定义,有很好的可扩展性,客户端负责界面维护和收集用户输入的信息,及错误处理。

服务器维护在线用户的基本信息和任意两个对战用户的棋盘信息,动态维护用户列表。

在人机对弈中通过深度搜索和估值模块,来提高电脑棋手的智能。

分析估值模块中的影响精准性的几个要素,以及提出若干提高精准性的办法,以及对它们搜索的节点数进行比较,在这些算法的基础上分析一些提高电脑AI方案,如递归算法、电脑学习等。

算法的研究有助于理解程序结构,增强逻辑思维能力,在其他人工智能方面也有很大的参考作用。

三、课题分析和设计1)键盘上事先设定8个按键,分作两组,每组四个,分别代表两个人用来控制棋子的上下左右键。

2)绘制棋盘,15条横线,15条竖线,在直线交点处下棋子(实心圆形)。

3)黑子先行,黑白交替下子,在棋盘上设定一个和棋盘格大小边长相等的正方形,初始状态,正方形的中心位于期盼的中心点。

当一方欲走棋的时候,应用四个按键来控制所要下棋的位置,每按一次按键,正方形都要向相应方向移动一个格,并且让喇叭发出某种声音,将要移出边界时,发出另一种警告声音并不让其移出边界。

JAVA程序设计五子棋制作实训

JAVA程序设计五子棋制作实训

JAVA程序设计五子棋制作实训五子棋是一种非常古老而有趣的棋类游戏,它的规则简单,但又充满了智慧的机会。

在这个实训中,我们将使用JAVA编程语言来制作一个五子棋游戏程序。

首先,我们需要创建一个棋盘类,来表示游戏的棋盘。

棋盘可以用一个二维数组来表示,每个数组元素可以是一个空格、一个黑子或一个白子。

我们可以使用0表示空格,1表示黑子,-1表示白子。

棋盘类还需要提供方法来判断是否有玩家赢得了游戏,以及判断当前位置是否为空。

接下来,我们需要创建两个类来表示黑子和白子。

这两个类都可以拥有一个坐标属性来表示它们在棋盘上的位置,还可以拥有方法来判断它们是否赢得了游戏。

然后,我们需要创建一个游戏类,来控制整个游戏的进行。

游戏类需要实例化一个棋盘对象和两个玩家对象。

游戏类提供方法来让玩家交替落子、判断游戏是否结束以及输出棋盘的状态。

最后,我们可以创建一个主类,来启动游戏。

在主类中,我们可以创建游戏对象并调用游戏的开始方法来开始游戏。

下面是一个示例代码,用于实现上述的五子棋游戏程序:```javapublic class Chessboardprivate int[][] board;public Chessboard(int size)board = new int[size][size];}public boolean isOccupied(int x, int y)return board[x][y] != 0;}public boolean isWin(int x, int y, int player)//判断该位置是否4子连珠,即判断水平、垂直和两个对角线方向上是否有连续的4个同色棋子//略}public void prin//输出棋盘的状态//略}public class Playerprivate int x;private int y;public Player(int x, int y)this.x = x;this.y = y;}public void move(Chessboard board)//玩家落子的逻辑//略}public boolean isWin(Chessboard board) return board.isWin(x, y, 1);}public class Gameprivate Chessboard board;private Player player1;private Player player2;public Game(int size)board = new Chessboard(size);player1 = new Player(0, 0);player2 = new Player(size - 1, size - 1); }public void starint turn = 1;while (true)Player currentPlayer = (turn == 1) ? player1 : player2; currentPlayer.move(board);board.print(;if (currentPlayer.isWin(board))System.out.println("Player " + turn + " wins!"); break;}turn = -turn;}}public class Mainpublic static void main(String[] args)Game game = new Game(15);game.start(;}```。

《Java程序设计实训教程》教学课件—02网络五子棋

《Java程序设计实训教程》教学课件—02网络五子棋

3. 创建棋子类(1)
• Chess 类
private int col; //棋子在棋盘中的列索引 private int row; //棋子在棋盘中的行索引 private Color color;//颜色 public static final int DIAMETER=GRID_SPAN-2; ChessBoard cb; //棋子是要画在棋盘中,需要一个棋盘的引用 public void draw(Graphics g)
2.9 完善“关闭程序”按钮的功能
1. 在Command类中添加命令
2. 客户端向服务器发送命令
修改“关闭程序”按钮的响应代码 Communication类添加方法disConnect()
3. 服务器处理quit命令 4. 客户端处理delete命令
作业
• 1.目前的程序每方总的用时是在程序中指定的,如果用 户希望在申请对局时自己指定用时时间,程序中应如何处 理?
2. 创建客户端界面右侧的三个类
• 图标: black.jpg, white.jpg • PanelTiming类 • PanelUserList类 • PanelMessage类 • 修改FiveClient类
PanelBoard
PanelTiming PanelUserList
PanelMessage
• 在Five类加入:
private ChessBoard boardPanel; • 准备图片Boad.jpg
Toolkit getDefaultToolkit() getImage()
paintComponent() getPreferredSize() : (Jfram在pack时,要知道board的大小)。

五子棋程序实习报告

五子棋程序实习报告

一、实习背景随着计算机技术的不断发展,编程已成为现代生活的重要组成部分。

为了提高自己的编程技能,培养自己的实际动手能力,我选择了五子棋程序设计作为实习项目。

五子棋是一种古老的中国传统棋类游戏,具有极高的趣味性和挑战性。

通过本次实习,我学习了Java编程语言,掌握了五子棋游戏的算法和实现方法,提高了自己的编程水平。

二、实习目标1. 熟练掌握Java编程语言的基本语法和常用类库;2. 掌握五子棋游戏的设计和实现方法;3. 学会使用面向对象编程思想进行程序设计;4. 培养自己的团队协作和沟通能力。

三、实习内容1. 系统设计在系统设计阶段,我首先分析了五子棋游戏的规则和特点,明确了游戏的基本功能,包括:棋盘显示、落子、判断胜负、悔棋等。

然后,我设计了五子棋游戏的基本架构,包括以下几个模块:(1)棋盘模块:负责棋盘的显示和落子操作;(2)落子模块:负责实现玩家的落子操作;(3)判断胜负模块:负责判断游戏是否结束,以及判断胜负;(4)悔棋模块:负责实现玩家的悔棋操作。

2. 算法设计五子棋游戏的算法主要包括以下几个部分:(1)棋盘表示:使用二维数组表示棋盘,每个元素代表一个棋子,其中0表示空位,1表示玩家1的棋子,2表示玩家2的棋子;(2)落子算法:根据玩家的落子位置,在棋盘上放置对应的棋子;(3)判断胜负算法:从落子位置开始,向四个方向(上、下、左、右)查找连续的五个相同的棋子,如果找到,则判断为胜利;(4)悔棋算法:撤销上一步的落子操作,将棋盘恢复到上一步的状态。

3. 编码实现在编码实现阶段,我按照设计文档和算法要求,使用Java编程语言完成了五子棋游戏的基本功能。

具体实现如下:(1)棋盘模块:使用JFrame创建一个窗口,使用JPanel绘制棋盘,使用鼠标监听器实现落子操作;(2)落子模块:在棋盘模块的基础上,增加一个方法,用于处理玩家的落子操作;(3)判断胜负模块:编写一个方法,用于判断游戏是否结束,以及判断胜负;(4)悔棋模块:编写一个方法,用于撤销上一步的落子操作。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《JAVA程序设计》实训报告实训题目: 五子棋游戏制作专业:计算机网络班级:14网络(1)班姓名:指导教师:2015 年12 月31日目录1.实训目的 (3)2.实训题目描述和要求 (4)2.1 实训题目描述 (4)2.2 实训题目要求 (4)3.实训报告内容 (5)3.1 需求分析 (5)3.2 概要设计 (5)3.3 详细设计 (6)3.4 编码 (7)3.5 测试 (19)4.总结 (24)实训指导教师评语 (26)1.实训目的随着经济社会的迅速发展,人们生活水平有了很大的提高,人们的生活观念也发生了巨大的改变。

高品质的生活、现代化得生活方式成为人们共同追求的目标;休闲、娱乐性活动作为时尚生活中的一部分,而被大多数的人所追捧。

棋类项目作为一种智力型项目,可以益智健心、修身养性,也可以满足人们对于娱乐和休闲的新需求。

一些项目比如五子棋等等,由于项目本身互动的特点,一直被人们所喜爱,因此得以生存和发展,成为许多人喜爱的休闲娱乐性棋类项目。

而今,以网络技术为核心和计算机技术的现代网络技术已经在现实生活得到了十分的广泛的使用。

休闲类网络游戏集合了益智性、趣味性、互动性、娱乐性于一体,已经成为多数人群的选择的休闲方式。

《Java程序设计》课程实训,学生可以将理论知识与具体实践相结合,巩固对JAVA相关方法和概念的理解,通过实训单机版五子棋游戏的编程,加深对所学知识的理解和应用。

如: 通过实训能够结合实例进一步理解面向对象程序设计的基本概念,掌握程序设计的基本方法和技巧,灵活的使用包,进一步的理解接口,熟练的掌握在接口中对事件的实现。

深入理解和灵活运用面向对象程序设计的基本特性,培养良好的程序设计风格,提高抽象思维、逻辑思维的能力。

并且让学生能够基本使用实训软件eclipse,以及安装JDK和环境变量的配置。

通过本次实训,可以开拓思维,增强编程思想,为深入学习JAVA打下良好基础,在学完此门课程后,能使用Java开发小型应用程序。

2.实训题目描述和要求2.1 实训题目描述实训题目:JAVA五子棋单机版游戏制作。

描述:五子棋在我国的历史可谓是源远流长,喜爱它的玩家也是大有人在,是很多人的娱乐首选,也是一种竞技项目。

但很多的五子棋软件一般都是单机版的,游戏无法在两个玩家之间进行。

基于上述原因,五子棋作为一个古老而又有广泛群众基础的游戏,他的完善性无疑是家玩家有很大的影响,在互联网迅速发展的今天,五子棋的流行已经不仅仅只是在现实生活中的面对面的娱乐竞技,在网上也已经是广大玩家的首选娱乐游戏已在各个游戏平台有应用。

通过JAVA的swing组件,实现五子棋简单的双人对弈并通过内部条件判断实现输赢的双方下棋过程。

2.2 实训题目要求1. 运用JAVA程序设计和Eclipse软件设计出一个五子棋程序。

2. 五子棋游戏的主窗口也就是游戏界面的实现(尽量制作一个界面美观的游戏界面)3. 棋子黑白色的设置及判定。

4. 完成判断某一横行是否连成五子及所有方向是否连成五子的判断。

5. 几个简单按钮的实现,“开始游戏”,“游戏设置”,“游戏说明”,“关于”,“认输”,“退出”。

6. 能够完成基本的下棋功能并能判断输赢7. 能够实现开始游戏的功能,随时重新开始一盘游戏。

8. 能够实现游戏设置的功能,可以对游戏玩家有时间的设定,且要求时间不能为负数,如果时间为0则无限制,9. 能够实现游戏说明的功能,可以解释游戏的基本规则。

10. 能够实现游戏认输的功能,当有一方认输时,游戏结束。

11. 能够实现游戏关于的功能,关于游戏的制作及问题解决指南。

12. 能够实现游戏退出的功能,当游戏结束时游戏退出。

13. 完成当某一方下棋是游戏界面会有游戏信息提示。

14. 完成游戏时间设置游戏界面下方会有时间走时功能。

3.实训报告内容3.1 需求分析一款小游戏的确立是建立在各种各样的需求上面的,这种需求往往来自于玩家的实际需求,其中玩家的实际需求最为重要.面对游戏拥有不同知识和理解层面的玩家,游戏制作人对玩家需求的理解程度,在很大程度上决定了此类游戏开发的成败因此如何更好地的了解,分析,明确玩家需求,并且能够准确,清晰以文档的形式表达给游戏制作人,保证开发过程按照满足玩家需求为目的正确开发方向进行,是游戏制作人需要面对的问题。

作为五子棋的设计需要考虑到的最基本的需求莫过于人机对战与人人对战功能的实现,当然还有下棋过程中的下棋悔棋功能以及判断游戏的胜负等方面的要求当然最好是要考虑到界面的友好性,作为一个娱乐软件,还应该考虑到玩家在游戏时的舒适性本次实训要求制作的是一个简单的单机版五子棋游戏,所以只需要完成一些最基本的功能即可,例如游戏开始功能、游戏设置功能、游戏认输功能以及游戏退出功能等。

3.2 概要设计制作的五子棋游戏整体界面设计为500*500像素大小,其中棋盘大小为360*360像素大小。

游戏界面上能够显示相关游戏信息,例如当前游戏玩家信息、游戏剩余时间、游戏输赢信息等。

3.3 详细设计整个游戏界面的上方显示当前游戏玩家信息,能够提醒黑白双方下棋。

中间靠左显示游戏棋盘,由纵横相互构成一个分割均匀的小正方形。

中间靠右放置各个游戏功能按钮,如:“开始游戏”“游戏设置”“游戏说明”“认输”“关于”“退出”,且它们都能各自实现自己的功能。

下方显示双方玩游戏玩家剩余时间信息。

而判断胜负是这个游戏的核心,一个游戏最重要的部分,如果连判断胜负都不可以实现的话,那么这个游戏程序是没有用的。

依据五子棋的基本规则,判断某一方向上是否有同一颜色的棋子连成五个或五个以上的,如果有,那么游戏就结束了,并判先连成五子的一方获得了胜利。

效果如下图所示:3.4 编码1. 导入包代码package org.liky.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;2. 窗口制作代码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.addMouseListener(this);//将窗体显示出来this.setVisible(true) ;t.start();t.suspend() ;//刷新屏幕,防止开始游戏时出现无法显示的情况3. 图片路径代码String imagePath = "" ;try {imagePath = System.getProperty("user.dir")+ "/bin/image/background.jpg" ;bgImage = ImageIO.read(new File(imagePath.replaceAll("\\\\", "/")));} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}this.repaint();}4. 双缓冲技术代码public void paint(Graphics g) {//双缓冲技术防止屏幕闪烁BufferedImage bi = new BufferedImage (500,500,BufferedImage.TYPE_INT_ARGB);Graphics g2 = bi.createGraphics() ;g2.setColor(Color.BLACK);5. 绘制界面信息代码//绘制背景g2.drawImage(bgImage, 1, 25, this) ;//输出标题信息g2.setFont(new Font("黑体",Font.BOLD,20));g2.drawString("游戏信息:" + message, 130, 60);//输出时间信息g2.setFont(new Font("宋体",0,16));g2.drawString("黑方时间: "+blackMessage, 40, 470);g2.drawString("白方时间: "+whiteMessage, 235, 470);6. 绘制棋盘,棋子代码//绘制棋盘for (int i = 0;i<19;i++){g2.drawLine(10, 70+20 * i, 370, 70+20 * i);g2.drawLine(10 + 20 * i, 70, 10 + 20 * i, 430);}g2.fillOval(188, 248, 4, 4);//绘制棋子x = (x-10) / 20*20+10; y = (y-70) / 20*20+70;//黑子/*g.fillOval(x-7, y-7, 14, 14); //白子 g.setColor (Color,WHTTE);g.fillOval(x-7,y-7,14,14); g.setColor(Color,BLACK);g.drawOval(x-7,y-7,14,14);//绘制全部棋子for (int i= 0; i<19;i++){for (int j = 0; j<19;j++) {if (allChess[i][j] == 1){//黑子int tempX = i * 20+10 ;int tempY = j * 20+70 ;g2.fillOval(tempX-7, tempY-7, 14, 14);}if (allChess[i][j] == 2) {//白子int tempX = i * 20+10 ;int tempY = j * 20+70;g2.setColor(Color.WHITE);g2.fillOval(tempX-7, tempY-7, 14, 14);g2.setColor(Color.BLACK);g2.drawOval(tempX-7,tempY-7,14,14);}}}g.drawImage(bi,0,0,this) ;}7. 判断鼠标按下棋子下落代码public void mousePressed(MouseEvent e) {// TODO Auto-generated method stub/*System.out.println("X:"+e.getX());System.out.println("y:"+e.getY());*/if (canPlay == true) {x = e.getX() ;y = e.getY() ;if (x >=10 && x <= 370 && y >= 70 && y <= 430){ if(((x - 10) - (x - 10) /20 * 20) <= 10){x = (x - 10) / 20;}else{x = (x - 10) / 20 + 1;}if(((y - 70) - (y - 70) / 20 * 20) <= 10){y = (y - 70) / 20;}else{y = (y - 70) /20 + 1;}8. 判断游戏胜利的代码//判断这个棋子和其他棋子连成5连,即判断游戏是否结束boolean winFlag = this.checkWin();if (winFlag == true) {JOptionPane.showMessageDialog(this, "游戏结束:"+ (allChess[x][y] == 1 ? "黑方" : "白方") + "获胜! ");t.suspend() ;canPlay = false ;}}else{JOptionPane.showMessageDialog(this,"当前位置已有棋子,请重新落子!");}this.repaint() ;}}9. 设置开始游戏代码//点击开始游戏按钮if (e.getX() >=390 && e.getX() <= 470 && e.getY() >=70 && e.getY() <= 95){int result = JOptionPane.showConfirmDialog(this, "是否重新开始游戏?");if (result == 0) {//现在重新开始游戏//重新开始要做的操作:1,把棋盘清空,allChess这个数组全部数据归0.//2.将游戏信息的显示回到开始位置//3.将一步下棋改为黑方for (int i = 0; i < 19;i++){for (int j = 0; j < 19; j++){allChess[i][j] = 0;}}//另一种方式allChess = new int[19][19];message = "黑方先行";isBlack = true ;blackMessage = "无限制";whiteMessage = "无限制";this.canPlay = true ;t.suspend() ;this.repaint() ;}}10. 设置游戏设置代码//点击游戏设置按钮if (e.getX() >=390 && e.getX() <= 470 && e.getY() >=120 && e.getY() <= 150){String input = JOptionPane.showInputDialog("请输入游戏最大时间(单位:分钟)如果输入0,表示没有时间限制:");try {maxTime = Integer.parseInt(input) * 60;if (maxTime < 0) {JOptionPane.showMessageDialog(this, "请输入正确信息,不允许输入负数!");}if (maxTime == 0) {intresult = JOptionPane.showConfirmDialog(this,"设置完成,是否重新开始游戏?");if (result == 0){for (int i = 0; i < 19;i++){for (int j = 0; j < 19; j++){ allChess[i][j] = 0;}}//另一种方式allChess = new int[19][19];message = "黑方先行";isBlack = true ;blackTime = maxTime ;whiteTime = maxTime ;blackMessage = "无限制";whiteMessage = "无限制";this.canPlay = true ;t.suspend() ;this.repaint() ;}}if (maxTime > 0) {int result = OptionPane.showConfirmDialog(this,"设置完成,是否重新开始游戏?");if (result == 0){for (int i = 0; i < 19;i++){for (int j = 0; j < 19; j++){allChess[i][j] = 0;}}//另一种方式allChess =new int[19][19];message = "黑方先行";isBlack = true ;blackTime = maxTime ;whiteTime = maxTime ;blackMessage = maxTime /3600 + ":" +(maxTime /60 -maxTime /3600 * 60) + ":" + (maxTime - maxTime / 60 * 60);iteMessage = maxTime / 3600 + ":" + (maxTime /60 -maxTime /3600 * 60) + ":"+ (maxTime - maxTime / 60 * 60);t.resume();this.canPlay = true ;this.repaint() ;}}} catch (NumberFormatException e1) {// TODO Auto-generated catch blockif(input!= null){JOptionPane.showMessageDialog(this, "请正确输入信息!");}}}11. 设置游戏说明代码//点击游戏说明按钮if (e.getX() >=390 && e.getX() <= 470 && e.getY() >=170& e.getY() <= 200){JOptionPane.showMessageDialog(this, "这是一个五子棋小游戏程序,黑白双方轮流下棋,当某一方连到五子时,游戏结束。

相关文档
最新文档