- 1、本文档共28页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
五子棋游戏_java课设_含可运行程序
五子棋游戏
1.课程设计目的
Java语言是当今最为流行的程序语言之一,它具有面向对象,与平台无关,分布式应用,安全,稳定和多线程等优良特点。所以通过此次课程设计,不仅巩固所学Java语言基本知识,重点掌握Java的图形界面的设计,增进Java语言编辑基本功,还要掌握JDK、Editplus、Eclipse、JCreator等开发工具的运用,拓宽常用类库的应用,和一些像绘图辅助工具的使用。把所学课程及相关知识加以融会贯通,全面掌握Java语言的编程思想及面向对象程序设计的方法,为以后的工作打下坚实的基础。
本课程设计设计GUI界面的五子棋游戏,该软件不仅仅简单的把五子棋的各种算法实现还对各种问题设置选择方式,使该程序更具有人性化,可以方便的保存,保存上一期没有完成的游戏对弈,打开时会有提示界面。总之,程序的设计充分体现优良的界面和简单操作。
2.设计方案论证
2.1设计思路
2.1.1 棋盘和棋子布局
现代五子棋棋盘,经过国际棋联的多次修改,最终定为15 X 15路,即棋盘由横竖各15条平行线交叉组成,共有225个交叉点;棋盘上共有五个星位,中间的星位称为天元,周围四点为小星。五子棋的棋子和围棋相同,分黑白2种颜色,通常为散圆形,有一面凸起或二面凸起等形状,一副棋子总数为225枚,其中黑子113枚,白子112枚。
关于计时,正规比赛按不同级别设置了不同的时间限制,一般的玩家都没有这个限制。
2.1.2 规则和解释
(1)黑棋先行,白棋随后。从天元开始相互顺序落子。
(2)最先在棋盘的横向、竖向、斜向形成连续的相同色五个棋子的一方为胜利。
(3)黑棋主动判负、白棋也是这样。
(4)如分不出胜负,则定位平局。
(5)对局中拔子、中途退场均判为负
(6)五连与禁手同时形成,先五为胜。
(7)黑方禁手形成时,白方应立即指出。若白方未发现或发现后不立即指正,反而继续落子,则不能判黑方负。
五子棋是由两个人在一盘棋上进行对抗的竞技运动。在对局开始时,先由执黑棋的一方将一枚棋子的落在“天元”上,然后由执白棋的一方在黑棋周围的交叉点上落子。如此轮流落子直到某一方首先在棋盘的直线 横线或斜线上形成连续的五子或五子以上,则该方就算获胜。
2.1.3 程序结构说明
图1 五子棋程序流程图
2.2设计方法
本程序是Java Application,要实现五子棋双人对弈,程序包含3个独立的类文件分别是FiveChessFrame.java、MyChessFrame.java、Test.java。
其中FiveChessFrame.java主要负责棋盘的初始化,定义了面板上的其他元素,
以及判断胜负条件等主题框架结构。MyChessFrame.java则是响应鼠标事件的处理和监
听。也包括了事件处理和人工智能。Test.java则负责调用各个类,保存玩家的信息,完成整体的实现。
2.2.1 Test.java 主类
Test类是主程序类 有main函数 该类主要是设计提示窗口,完成在运行时的操作,主要有游戏开始、游戏结束、重新选择等信息,很好的友好界面设计。它们的主要实现是通过Swing的JOptionPane.showMessageDialog()函数简单实现。或者调用主函数FiveChessFrame。
2.2.2 FiveChessFrame
整个架构的核心部分,类名为FiveChessFrame。封装了棋盘的各种可能用到的功能,如保存棋盘数据、初始化、判断胜负等。用户操作主界面,主界面与FiveChessFrame进行交互来完成对游戏的操作。
2.2.3 棋盘及棋盘类
调用Swing中的JFrame类的paint()函数,用paint()实现窗体的设计尤其是棋盘的绘制。这里主要是19行19列,每行和列添加20个像素,并且为棋盘添加了五个驻点,使棋盘看起来清楚明了。
public void paint(Graphics g) {// 双缓冲技术防止屏幕闪烁
BufferedImage bi = new BufferedImage(500, 500,
BufferedImage.TYPE_INT_RGB);
Graphics g2 = bi.createGraphics();
g2.setColor(Color.BLACK);
g2.drawImage(bgImage, 1, 20, this); // 绘制背景
g2.setFont(new Font(黑体, Font.BOLD, 20)); // 输出标题信息
g2.drawString(游戏信息: + message, 130, 60);// 输出时间信息
g2.setFont(new Font(宋体, 0, 14));
g2.drawStr
文档评论(0)