关键词不能为空

当前您在: 首页 > 育儿 >

软件工程课程设计五子棋游戏

作者:陕西保健网
来源:http://www.xapfxb.com/yuer
更新日期:2021-01-27 05:54

严重痤疮怎么治疗-

2021年1月27日发(作者:顾印愚)

计算机工程系课程设计报告







绩:



指导教师

(签名)


课程名称:

软件工程


课程设计题目:

五子棋游戏





班级
2013
级计科
(4)



姓名

许婷娜


学号
2
2015

12

27










1.




.
..................... ..............................................
1
1.1
系统的开发背景(可行性分析)

.
........................................
1
1.2
系统简介

................... .........................................
2
1.2.1
系统介绍

........................ ...............................
2
1.2.2
开发本系统所做的工作

...........................................
2
2.
需求分析

.
............... .................................................
3
2.1
需求的描述与分析

............... .....................................
3
2.2
需求定义

......................... ...................................
3
2.2.1
功能需求

.
.................. ....................................
3
2.2.2
性能需求

.
.................. ....................................
4
3.
系统设计

.
............................ ....................................
4
3.1
总体设计

.
..................... .......................................
4
3.1.1
设计思想

........................ ...............................
4
3.1.2
五子棋游戏的功能的结构图

.......................................
5
3.2
程序设计分析

.
................... .....................................
5
4.
五子棋游戏的详细设计

.
...................... ..............................
6
4.1
五子棋游戏的主窗口界面

.
.............. ................................
6
4.2
五子棋游戏的核心模块的详细设计

.
.....................................
10
4.2.1
五子棋游戏程序核心代码

........................................
10
4.2.2
五子棋游戏程序主面板与鼠标事件

................................
13
4.2.3
五子棋游戏程序流程图

..........................................
17
4.3
五子棋游戏的游戏功能模块的详细设计

.
.................................
18
4.3.1
五子棋游戏的开局功能模块

......................................
18
4.3.2
五子棋游戏的棋盘功能模块

......................................
18
4.3.3
五子棋游戏的模式功能模块

......................................
19
4.3.4
五子棋游戏的退出功能模块

......................................
19
4.4
五子棋游戏的外观功能模块的详细设计

.
.................................
19
4.5
五子棋游戏的版本功能模块的详细设计

.
.................................
20

I
5.
五子棋游戏的测试

.
...... .................................................
20
5.1
系统测试的类型

.
........... ..........................................
20
5.2
测试举例

.
..................... ......................................
21
5.2.1
测试用户的对弈结果

............................................
21
5.2.2
测试用户切换棋盘类型功能

......................................
22
5.2.3
测试用户切换模式类型功能

......................................
23
5.2.4
测试用户切换外观类型功能

......................................
24
5.2.5
测试版本功能

...................... ............................
26
小结

.
............................................ ..........................
27
致谢

.
.............................................. ........................
28
参考文献

.
.............................................. ....................
29



II
1.




1.1
系统的开发背景(可行性分析)

人工智能是一门正在迅速发展的、新 兴的、综合性很强的交叉科学。它与生物工程、
空间技术一起被并列为二十一世纪三大尖端技术。它的中 心任务是研究如何使用计算机去
做那些过去只能靠人的智力才能做的工作。目前各发达国家都把人工智能 作为重点项目,
列入本国的高科技发展计划当中,投入巨大的人力和物力。

随着计算 机的普及,网络的飞速发展和网络技术的成熟,计算机成为了集办公、娱乐
于一体的新式工具。它的研究 为人工智能带来了很多重要的方法和理论,产生了广泛的社
会影响和学术影响。在这一背景下,网络游戏 的需求与日俱增,游戏软件是当今世界发展
最迅速,最有影响力,最有潜力与活力的领域之一。电脑游戏 的出现为人们提供了一个新
的娱乐平台,同时也丰富了人们的业余活动。因此与游戏有关的软件深受广大 青少年的喜
爱,大多数游戏普通人学几分钟就会玩,甚至连老年人也慢慢爱上了它。

计算机对弈也是其中之一。作为智能研究的一个重要分支,计算机博弈是检验人工水
平的一个重要方面。 而五子棋游戏的诞生,更是吸引着不同年龄段的人群,无论男女老少
都可以玩,也都喜欢玩,用电脑来下 五子棋是一种时尚。

五子棋游戏是一款较为常见的小游戏,通过双方下棋来实现胜负。五子棋 相传起源
于四千多年前的尧帝时期,比围棋的历史还要悠久,可能早在“尧造围棋”之前,民
间 就已有五子棋游戏。
有关早期五子棋的文史资料与围棋有相似之处,
因为古代五子
棋的 棋具与围棋是完全相同的。五子棋的实现价值方面是无法和围棋相比的,但刚好是
这点,造就了五子棋在 社会上的可推广性。棋是培养习惯的一个载体,它的作用是为社会
培养更多懂得思考的人才。现阶段五子 棋已经逐步被广大群众熟知,因此,一款网络五子
棋小游戏的诞生是符合社会发展趋势和潮流的。

五子棋对弈是计算机博弈中的一种。研究其计算机算法,可以让我们看到人工智能的
雏形, 也有助于智力的开发。五子棋是我国发明的,研究它可以让更多的外国人了解五子
棋,这有助于我国优秀 文化的推广。

使用
Java
语言开发的五子棋游戏程序,将五子棋游戏移植 到网络中,更加符合现代
人的娱乐理念,
满足用户异地自由选择游戏对手,
实现单机和 双人对战的游戏模式。
同时,
从游戏的图形界面上优化,使得
Java
五子棋 游戏软件具有很强的可操作性。


1
1.2
系统简介

1.2.1
系统介绍

五子棋,又被称为“连五子、五子连、串珠、五目、五 目碰、五格、五石、五法、
五联、京棋”
。五子棋相传起源于四千多年前的尧帝时期,比围棋的 历史还要悠久,
可能早在“尧造围棋”之前,民间就已有五子棋游戏。有关早期五子棋的文史资料与围棋有相似之处,因为古代五子棋的棋具与围棋是完全相同的。

五子棋是一种两人对弈的 纯策略型棋类游戏。五子棋游戏不但容易上手,而且它区别
于别的游戏,它不但能使人娱乐,而且能增长 智慧。

对战开始时,先由执黑棋一方将一枚棋子落在天元点上,然后由执白棋一方在黑棋周< br>围的交叉点上落子。但是,为了尊重对方和礼貌起见,执白棋的一方通常将盘面的第二着
棋步在自 己河界的一侧,即直止或斜止。此后黑白双方轮流落子,直到某一方首先在棋盘
的横线、纵线或斜线上形 成连续五子,则该方就算获胜。

Java
的广泛流行是与它编写的程序可以在网络上 运行且可以跨平台。事实上,支持
Java
的浏览器内置
Java
虚拟机,< br>使得
Java
的小程序能够在网络上完全的传送和运行,

样使得程序 人员及时不具备有关的网络知识,也能编写出高质量的网络通信程序。

本程序是一个基于
Java
的对弈游戏,基本实现了五子棋游戏的一些功能。

我制作的游戏有两种模式:人机对弈和人人对弈,让玩家自己来选择所需要的对弈模
式,进行游 戏,同时也实现了其他的基本功能,如外观的选择、棋盘的大小等。

人机对弈主要是通过使用 线程调用人工智能算法来实现的。选择人机对战时,人工智
能线程启动。当你落下一个棋子之后,人工智 能线程遍历所有棋盘的位置,然后算出所有
棋盘位置的权限值,选择权限值最大的位置落下棋子。然后, 再根据赢的条件判定双方的
胜负。

人人对弈主要是让两个不同的玩家在同一台电脑上 进行游戏,主要是将人机对战中的
人工智能算法去掉,直接由玩家控制棋子的落点,以此来完成游戏。< br>
1.2.2
开发本系统所做的工作

1


了解五子棋游戏基本运行流程

2


掌握
Java

JDK
开发技术

3


熟练应用
myEclipse
进行编程


2
4
)熟悉软件开发的流程
:
要用软件工程的结构化程序设计方法的思想开发软件。在软件开发步骤上要按照需

求分析、总体设计、详细设计、功能测试一步一步地进行。

2.
需求分析

2.1
需求的描述与分析

需求分析要根据用 户的功能要求、界面以及其他要求进行分析。当然在此需求分析是
根据我自己对五子棋游戏的基本了解以 及系统所需要的基本功能来进行的。

为了开发出真正满足用户需求量的软件产品,首先必须知 道用户的需求。软件需求中
包括了多个方面来说明用户需求。第一,此系统为智力游戏,适合于各类游戏 爱好者,由
于其经典性和游戏的简单性,各类人士都可以玩。第二,人们在与电脑对战、享受娱乐的同时也能体会到自己智力的提升。

通过需求分析阶段对五子棋的整个应用情况作全面的、 详细的调查,确定五子棋游戏
的目标,收集支持系统总的设计目标的基础数据和并对这些数据进行分析, 确定游戏者的
需求,并把这些写成用户和游戏设计者都能够接受的文档。事实上,需求分析是数据开发< br>中最难的任务之一。

2.2
需求定义

2.2.1

功能需求


该款游戏主要由以下几个模块组成:


1


人 人对弈模式:选择该模式可以实现人与人之间的对弈,系统默认黑棋先下,然后
玩家之间交替下棋,同时 系统能够准确判断哪一方先将五子连成一行,即获胜者。
如果有一方获胜,则提示玩家是赢还是输,并由 玩家决定是否重新开局。


2


人机对弈模式:选择该 模式可以实现人与电脑之间的对弈,系统默认玩家先下,玩
家是黑棋,然后人与电脑之间交替下棋,同时 系统能够准确判断哪一方先将五子连
成一行,即获胜者。如果有一方获胜,则提示玩家是赢家还是输家, 并由玩家决定
是否重新开局。


3


自由选择棋盘大小:此功能用户可以根据需要选择棋盘大小,分为

“标准棋盘”


3
“改进棋盘”和“扩大棋盘”三种。如果对弈 双方水平相差较大,不出几个回合就
出现了获胜方,那么小些的棋盘就完全能够满足用户的需要;如果对 弈双方水平旗
鼓相当,一时难分谁赢谁输,那么小些的棋盘就无法满足用户的需要,用户需要更
大的棋盘来进行长时间的对弈。因此这项功能是非常必要的。


4


自由选择棋盘外观:此功能用户可根据自己的喜好来选择棋 盘的外观,分为“类型
一”
“类型二”
“类型三”三种。由于每个人对外观的喜好不一 样,因此这个功能也
是非常必要的。

2.2.2

性能需求



该款五子棋游戏功能虽然简单,但最重要的还是实现 了“人人对弈”和“人机对弈”
功能。该游戏能够很好的在这两种模式下自由转换。人人对弈模式可以满 足对弈双方的游
戏需求,也能提高对弈双方的水平和能力。同时,在一时找不到对手的情况下,人机对弈
能够满足玩家的游戏需求。在玩家是新手的情况下,人机对弈能够给与新手一定的帮助,
同时也 能提高新手的游戏水平。

3.
系统设计

3.1
总体设计

3.1.1
设计思想


1
)本程序要实现五子棋的游戏功能,必须要有一个棋盘,所以,通过继承
JPanel,然
后在
JPanel
上画出一个
14*14
的棋盘,另外还有 三个按钮:游戏、外观和版本,提醒用
户进行相应的操作。当然,
JPanel
必须放 在
JFrame
中,所以,又通过继承
JFrame
得到一
个实例。


2
)对于下棋的操作,通过对
JPanel
增加鼠标事 件监听器
MouseListener
,每次当用户
点击鼠标时,先取得点击的坐标值 ,然后换算成对应棋盘上(即棋盘数组)的位置(数组
的下标)



3
)判断此处是否已经有棋子。如果有,则玩家不能再次在此处下子;如果没有,则通
Java
里的画图函数在此处画上棋子,重新刷新输出棋盘。


4)判断该颜色棋子的上下左右是否满足连续五个,是的话提醒相应玩家获胜,不是的
话,更换玩家下 棋。对于玩家的更换是程序自动的,每次用户点击鼠标后,若本局还未结

4
束则会变换玩家,从而画出对应的黑方白方的棋子,直到有一方获胜为止。

3.1.2
五子棋游戏的功能的结构图





























































退























五子棋游戏主控界面

五子棋游戏





3.1
五子棋游戏结构图

3.2
程序设计分析


1< br>)本款游戏有“游戏”

“外观”和“版本”三个选项。其中“游戏”包括“开局”
“棋
盘”

“模式”

“退出”四个选项;
“外观”则包含“类型一”

“类型二”

“类型三”三个
选项;< br>“版本”包含“关于”一个选项。
“棋盘”又包含了“标准棋盘”

“改进棋盘 ”和“扩
大棋盘”

“模式”包含了“人机对弈”和“人人对弈”



5

2
)绘制棋盘。以标准棋盘为例,绘制
14
条横线,
14
条竖线,在直线交点处下棋子,棋
子为实心黑白圆形。

3
)首先程序会判断是人机对弈模式还是人人对弈模式。若是人机对弈模式,则是玩家< br>先下,玩家为黑棋,电脑为白棋;若是人人对弈模式,则是为黑棋的玩家先下,而后是白
色棋子的 玩家下。不论哪种模式,都是黑白交替下子。


4
)棋盘处于鼠标监听状态 。当鼠标在棋盘上有点击操作的时候,程序会获得鼠标点击
的坐标,然后换算成对应的棋盘的位置,再判 断此处是否有棋子,如果没有,那么在此处
画出对应颜色的实心棋子,如果已经有棋子了,那么就不能再 次下棋子。

4.
五子棋游戏的详细设计

4.1
五子棋游戏的主窗口界面

/*main
方法创建了
ChessFrame
类的一个实例对象(
cf
),

并启动屏幕显示显示该实例对象。
*/
public class FiveChessAppletDemo {
public static void main(String args[]){
ChessFrame cf = new ChessFrame();
}
}

//
用类
ChessFrame
创建五子棋游戏主窗体和菜单

import .*;
import .*;
import .*;
import .*;
import tream;
import nent;
import

class ChessFrame extends JFrame implements ActionListener {

6
private String[] strsize={
标准棋盘

改进棋盘

扩大棋盘

private String[] strmode={
人机对战

人人对战

public static boolean
iscomputer
=true,
checkcomputer< br>=true;
private int width,height;
private ChessModel cm;
private MainPanel mp;

//
构造五子棋游戏的主窗体

public ChessFrame() {
le(
五子棋游戏

cm=new ChessModel(1);
mp=new MainPanel(cm);
Container con=tentPane();
(mp,
izable(false);
dowListener(new ChessWindowEvent());
MapSize(14,14);
JMenuBar mbar = new JMenuBar();
nuBar(mbar);
JMenu gameMenu = new JMenu(
游戏

(makeMenu(gameMenu, new Object[] {

开局

棋盘

模式

退出

}, this));
JMenu lookMenu =new JMenu(
外观

(makeMenu(lookMenu,new Object[] {

类型一

类型二

类型三

},this));
JMenu helpMenu = new JMenu(
版本

(makeMenu(helpMenu, new Object[] {

关于

}, this));

7
}

//
构造五子棋游戏的主菜单

public JMenu makeMenu(Object parent, Object items[], Object target){
JMenu m = null;
if(parent instanceof JMenu)
m = (JMenu)parent;
else if(parent instanceof String)
m = new JMenu((String)parent);
else
return null;
for(int i = 0; i < i++)
if(items[i] == null)
arator();
else if(items[i] ==
棋盘

JMenu jm = new JMenu(
棋盘

ButtonGroup group=new ButtonGroup();
JRadioButtonMenuItem rmenu;
for (int j=0;j<;j++){
rmenu=makeRadioButtonMenuItem(strsize[j],target);
if (j==0)
ected(true);
(rmenu);
(rmenu);
}
(jm);
}else if(items[i] ==
模式

JMenu jm = new JMenu(
模式

ButtonGroup group=new ButtonGroup();
JRadioButtonMenuItem rmenu;
for (int h=0;h<;h++){

8
rmenu=makeRadioButtonMenuItem(strmode[h],target);
if(h==0)
ected(true);
(rmenu);
(rmenu);
}
(jm);
}else
(makeMenuItem(items[i], target));
return m;
}
此五子棋游戏的主窗体界面如图
4.1
所示



4.1
五子棋游戏的主窗体

本窗口主要显示了该五子棋游戏 的游戏界面,展示了各种选项和功能,其中包括了此
五子棋游戏的游戏、外观、版本等功能按钮。通过继 承
JPanel
,然后在
JPanel
上画出一

14*1 4
的棋盘。当然,
JPanel
必须放在
JFrame
中,所以,又 通过继承
JFrame
得到一个
实例。



9
4.2
五子棋游戏的核心模块的详细设计

4.2.1
五子棋游戏程序核心代码

//
用类
ChessModel
实现了整个五子棋程序算法的核心

import .*;
import .*;
import .*;
import .*;
import tream;
import nent;
import
class ChessModel {
//
规定棋盘的宽度、高度、棋盘的模式

private int width,height,modeChess;
//
规定棋盘方格的横向、纵向坐标

private int x=0,y=0;

/*
棋盘方格的横向、纵向坐标所对应的棋子颜色,

数组
arrMapShow
只有
3
个值:
1
2

3

-1


其中
1
代表该棋盘方格上下的棋子为黑子,

2
代表该棋盘方格上下的棋子为白子,

3
代表为该棋盘方格上没有棋子,

-1
代表该棋盘方格不能够下棋子
*/
private int[][] arrMapShow;
//
交换棋手的标识,棋盘方格上是否有棋子的标识符

private boolean isOdd,isExist;
public ChessModel() {}
//
该构造方法根据不同的棋盘模式(
modeC hess
)来构建对应大小的棋盘

public ChessModel(int modeChess){}
//
按照棋盘模式构建棋盘大小


10
private void PanelInit(int width, int height, int modeChess){}
//
获取是否交换棋手的标识符

public boolean getisOdd(){}
//
设置交换棋手的标识符

public void setisOdd(boolean isodd){}
//
获取某棋盘方格是否有棋子的标识值

public boolean getisExist(){}
//
获取棋盘宽度

public int getWidth(){}
//
获取棋盘高度

public int getHeight(){}
//
获取棋盘模式

public int getModeChess(){}
//
获取棋盘方格上棋子的信息

public int[][] getarrMapShow(){}
//
判断下子的横向、纵向坐标是否越界

private boolean badxy(int x, int y){}

/*
计算棋盘上某一方格上八个方向棋子的最大值,

这八个方向分别是:左、右、上、下、左上、左下、右上、右下
*/
public boolean chessExist(int i,int j){}
//
判断该坐标位置是否可下棋子

public void readyplay(int x,int y){}
//
在该坐标位置下棋子

public void play(int x,int y){}

/*
计算机走棋

说明:用穷举法判断每一个坐标点的四个方向的的最大棋子数,

最后得出棋子数最大值的坐标,下子
*/
public void computerDo(int width,int height){
int max_black,max_white,max_temp,max=0;

11
setisOdd(true);
n(
计算机走棋
...
for(int i = 0; i <= width; i++){
for(int j = 0; j <= height; j++){
//
算法判断是否下子

if(!chessExist(i,j)){
//
判断白子的最大值

max_white=checkMax(i,j,2);
//
判断黑子的最大值

max_black=checkMax(i,j,1);
max_temp=(max_white,max_black);
if(max_temp>max){
max=max_temp;
this.x=i;
this.y=j;
}
}
}
}
setX(this.x);
setY(this.y);
Show[this.x][this.y]=2;
}

//
记录电脑下子后的横向坐标

public void setX(int x){}
//
记录电脑下子后的纵向坐标

public void setY(int y){}
//
获取电脑下子的横向坐标

public int getX(){}
//
获取电脑下子的纵向坐标


12
public int getY(){}

/*
计算棋盘上某一方格上八个方向棋子的最大值,

这八个方向分别是:左、右、上、下、左上、左下、右上、右下
*/
public int checkMax(int x, int y,int black_or_white){}

//
判断胜负

public boolean judgeSuccess(int x,int y,boolean isodd){}
//
赢棋后的提示

public void showSuccess(JPanel jp){}
//
输棋后的提示

public void showDefeat(JPanel jp){}
4.2.2
五子棋游戏程序主面板与鼠标事

/*
用类
MainPanel
主要完成如下功能

1
、构建一个面板,在该面板上画上棋盘;

2
、处理在该棋盘上的鼠标事件(如鼠标左键点击、鼠标右键点击、鼠标拖动等)
*/
import .*;
import .*;
import .*;
import .*;
import tream;
import nent;
import
class MainPanel extends JPanel
implements MouseListener,MouseMotionListener{
//
设定棋盘的宽度和高度

private int width,height;
private ChessModel cm;
//
根据棋盘模式设定面板的大小


13

严重痤疮怎么治疗-


严重痤疮怎么治疗-


严重痤疮怎么治疗-


严重痤疮怎么治疗-


严重痤疮怎么治疗-


严重痤疮怎么治疗-


严重痤疮怎么治疗-


严重痤疮怎么治疗-



本文更新与2021-01-27 05:54,由作者提供,不代表本网站立场,转载请注明出处:http://www.xapfxb.com/yuer/429886.html

软件工程课程设计五子棋游戏的相关文章