课程设计报告

发布 2022-10-01 05:50:28 阅读 4711

韶关学院计算机科学学院。

数据结构课程设计。

题目:五子棋。

学生姓名:魏得龙。

学号: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语言程序设计 系别 专业班级 学号。姓名。课程题目 企业人事管理系统 完成日期 指导老师 年月日。附件。课程设计的内容。企业人事管理系统 本项目的目标是开发一个功能实用,操作简便,简单明了的人事管理系统。能够录入人事的基本资料,在操作上能够完成诸如添加 修改 删除 ...