韶关学院计算机科学学院。
数据结构课程设计。
题目:五子棋。
学生姓名:魏得龙。
学号:11115011100
专业:计算机科学与技术。
班级:11级(1)班。
指导教师姓名及职称:陈正铭讲师。
起止时间:2024年2月——2024年5月。
1 需求分析。
1.1 五子棋基本规则。
五子棋行棋时,黑棋先下第一子,由天元开始,后白棋在黑棋周围的交叉点的落子。接着黑方再以天元中心的25个交叉点的范围内落盘面的第三子,之后黑白双方相互顺序子。
.最先在棋盘线交点横向,纵向,斜向形成已方的五个棋子连续的一方为胜。
出现禁手对方指出后将判负,其中包括两个或两个以上的活三,活四,长连均称之为禁手。
禁手只对黑棋有效,白棋无禁手。
黑方禁手形成时,白方需立即指出,黑方将被判负。若白方未发现黑方禁手存在而继续应子,其后指出黑方禁手不能判黑方负。
黑方连五与禁手同时形成,因黑方已连成五即黑方已获胜,故禁手规则失效。
在对局中,在盘上落下的子又拿起来,此动作称为拔子,若拔子将被判为负。
在对局中棋子掉落在棋盘上将被判负。若推子或蹭子,以盘面第一落点为准。用手将棋子推正不算违犯规则。
在对局中,一方自行中止比赛如:中途退场,将被判负。
在对局中对方宣布认输,本局获胜。
超过比赛规定所用时间限制,将被判为负:正式比赛期间,迟到时间超过比赛容许时间将被判负。
如下至最终一子仍不分胜负则定为平局。
中盘期间双方同意和局提议,判定为平局。
1.2 课程设计的目
.通过课程设计把课堂上讲的内容融会贯通,学会设计程序、开发应用软件、开发系统软件等各项工作。
.通过实习掌握语言的语法结构,理解类和对象的概念,准确的使用各种数据类型,对面向对象中的继承和多态的概念要理解、会使用,在程序中提高**的重用性,使设计的程序结构清晰、易于维护。
1.3 游戏需求
画出棋盘的大小;
画棋子并确定棋子的大小;
判断模。根据不同的模式下棋,判断鼠标移动或是单击键执行操作;
式,是人机对弈,人人对弈;
判断赢家。本程序要实现五子棋的游戏功能,必须先有一个棋盘,所以,通过继承jpanel,然后在jpanel上画出一个20*20的棋盘,另外还有三个按钮:开局、请黑方下子和请白方下子,提醒用户进行相应的操作。
当然,jpanel必须放在jframe中,所以,又通过继承jframe得到一个实例;
2 概要设计。
2.1 功能模块图。
图a .功能模块图。
2.2 流程图。yesno
yesno
图 b 流程图。
3 详细设计。
3.1 定义全局变量。
. private string strmode = 表示两种模式。
public static boolean iscomputer = false , checkcomputer = false;
private chessmodel cm;
private mainpanel mp;
3.2 主要类的介绍:
3.2.1 class chessframe extends jframe implements actionlistener
类chessframe继承jframe类和actionlistener接口,主要功能是创建五子棋游戏主窗体和菜单。
3.2.2 class chessmodel
类chessmodel实现整个五子棋程序算法的核心(实现构造棋盘,实现判断某一点是否可以下棋子,实现人人博弈、人机博弈,实现判断胜负,实现输、赢之后的提示输出等等。)
3.2.3 class mainpanel extends jpanel implements mouselistener,mousemotionlistener
类mainpanel继承jpanel类和mouselistener,mousemotionlistener接口,主要功能是根据棋盘模式设定面板的大小;根据坐标得到棋盘方格棋子的信息,然后调用draw方法在棋盘上画出相应的棋子和棋盘;定义相应的鼠标点击事件,为鼠标的活动作出相应的反应。
3.3 主要方法的介绍:
3.3.1 public chessframe( )
构造五子棋游戏的主窗体,settitle设置窗体名为:欢迎来到魏得龙五子棋游戏,gamemenu在窗体中加一个游戏菜单和helpmenu帮助菜单。在游戏菜单中加开局、模式、分隔线、退出,子菜单选项。
在帮助在菜单中加关于子菜单选项。
3.3.2 public jmenu makemenu( )
构造五子棋游戏的主菜单。
3.3.3 public jmenuitem makemenuitem( )
构造五子棋游戏的菜单项。
3.3.4 public jradiobuttonmenuitem makeradiobuttonmenuitem( )
构造五子棋游戏的单选按钮式菜单项。
3.3.5 public void mapsize( )
设置棋盘大小。
3.3.6 public void restart( )
定义重新开局键,在按下开局时以做出相应的反应。
3.3.7 public void actionperformed(actionevent e)
定义菜单选项按键的事件,在按下相应的键时,做出相应的反应。
3.3.8 private int[arrmapshow
定义private int[arrmapshow数组表示棋盘某一点的状态。数组arrmapshow只有3个值:1,2,3,-5。
1代表该棋盘方格上下的棋子为黑子,2代表该棋盘方格上下的棋子为白子,3代表为该棋盘方格上没有棋。-5代表该棋盘方格不能够下棋子。
3.3.9 public void computerdo(int width , int height)
判断计算机走棋,用穷举法判断每一个坐标点的四个方向的的最大棋子数,最后得出棋子数最大值的坐标,下子。
3.3.10 public void setx( )或 public void sety( )
记录电脑下子后的横、纵向坐标。
3.3.11 public int getx( )或 public int gety( )
获取电脑下子的横、纵向坐标。
3.3.12 public int checkmax(int x , int y , int black_or_white)
计算棋盘上某一方格上八个方向棋子(白棋、黑棋)的最大值,这八个方向分别是:左、右、上、下、左上、左下、右上、右下。
3.3.13 public boolean judgesuccess(int x , int y , boolean isodd)
分别从:左、右、上、下、左上、左下、右上、右下判断胜负。
3.3.14 public void showsuccess(jpanel jp)
赢棋后的提示:你赢了,好厉害!
3.3.15 public void showdefeat(jpanel jp)
输棋后的提示:你输了,请重新开始!
3.3.16 class mainpanel extends jpanel implements mouselistener,mousemotionlistener
定义主面板mainpanel类。
3.3.17 mainpanel( )
根据棋盘模式设定面板的大小。
3.3.18 public void setmodel( )
根据棋盘模式设定棋盘的宽度和高度。
3.3.19 public void paintcomponent(graphics g)
根据坐标计算出棋盘方格棋子的信息,然后调用draw方法在棋盘上画出相应的棋子。
3.3.20 public void draw(graphics g, int i , int j , int v)
根据提供的棋子信息(颜色、坐标)用画盘、棋子。
3.3.21 public void mousepressed(mouseevent evt)
定义响应鼠标的点击事件,在鼠标点击时做出相应的反应。
3.3.22 public void mousemoved(mouseevent moveevt)
定义响应鼠标的拖动事件,在鼠标拖动时做出相应的反应。
3.3.23 主函数main( )
chessframe cf = new chessframe();定义棋盘结构的对象。
将其显示出来。
3.4 局部变量。
private int x = 0 , y = 0; 棋盘方格的横向、纵向坐标。
private boolean isodd,isexist; 交换棋手的标识,棋盘方格上是否有棋子的标识符。
boolean isodd = true ,isodd = false ;定义是否交换棋手的标识符。
int max_black , max_white , max_temp , max = 0;定义白棋、黑棋的最大值,用穷举法判断每一个坐标点的四个方向的的最大棋子数,最后得出棋子数最大值的坐标,下棋子。
private boolean badxy = true ,boolean badxy = false;定义badxy用来判断下的棋子是否越界。
4 调试分析。
课程设计报告格式 课程设计
洛阳理工学院。课程设计说明书。课程名称。设计课题。专业。班级。学号。姓名。完成日期2014年12月26日。问题描述 小四宋体,行间距单倍行距,每段缩进两个字符。叙述一下设计的内容要求。基本要求 小四宋体,行间距单倍行距,每段缩进两个字符。叙述一下设计的基本要求。测试数据 小四宋体,行间距单倍行距,每...
课程设计总结,课程设计报告
课程设计总结,课程设计报告。3.尝试应用项目管理软件进行项目进程的规划管理 绘制甘特图,不作硬性要求 二 选题说明。人事管理是企业信息管理的重要部分,面对大量的人事工资信息,财务部门采用人力处理将浪费大量的时间 人力和物力,且数据的准确性低。因此,开发一个界面友好,易于操作的人事工资管理软件进行自动...
课程设计 课程设计报告格式
学校名。课程设计报告。课程名称 c语言程序设计 系别 专业班级 学号。姓名。课程题目 企业人事管理系统 完成日期 指导老师 年月日。附件。课程设计的内容。企业人事管理系统 本项目的目标是开发一个功能实用,操作简便,简单明了的人事管理系统。能够录入人事的基本资料,在操作上能够完成诸如添加 修改 删除 ...