关键词不能为空

当前您在: 首页 > 育儿 >

三级课题报告

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

十大羊奶粉排行榜-

2021年1月27日发(作者:赵石平)
姓名:熊闯

课题名称:五子棋游戏系统的开发






软

件

学

院



三级课题报告






课题名称:

















五子棋游戏

































专




业:
















网络软件开发




















班




级:
















RB
软件
122























学




号:
















2




















学生姓名:

















熊闯

























2014
年



03
月

中原工学院软件学院

姓名:熊闯

课题名称:五子棋游戏系统的开发


三
级
实
践< br>课
题
设
计
任
务
书


姓

名

熊闯






软件工程(网络软件开发方向)专业

RBW122
班

题

目

五子棋游戏系统的开发

开发一个比较完善的基于
Visual C++MFC
的五子棋系统,
为我们 提供一个业
余娱乐的平台。主要功能包括:

1.
能使用鼠标进行走棋动作,并且能区分博弈双方的棋子。

2.
能正确判断胜利或失败。

3.
能正确判断走棋是否正确,是否会引起游戏结束。

设

计

任

务

4.
可以选择对弈的类型,即是与计算机对弈还是两个人在同台计算机上对弈的。

5.
可以选择落子的先后顺序。

6.
可以进行悔棋操作。

7.
可以进行游戏暂停,继续及窗口移动,最小化等操作。

8.
可以进行数据的读写,查询,统计分析等操作。

9.
能进行音效的设置。

10.
游戏进行中信息的及时更新与显示。

开发工具:
Vissual C++6.0,

SQL
语言

第
1
周(
14-02-24~14- 03-02
)
:主要任务是对数据结构设计,系统详细设计。

时

间

进

度

第
2
周(
14-03-03~14-03-09
)
:进行各模块的详细设计。

第3
周(
14-03-10~14-03-16
)
:系统整合、系统验收、 撰写总结报告。




原

主

马石安、
魏文平
.Vissual C++
程序设计与应用教程
(第二版)
[M]:
清华大学出版社
.
始

要

资

参

2011.3
料

考

与

文




献


指导教师签字:

































年






月





日
姓名:熊闯


课题名称:五子棋游戏系统的开发

五子棋游戏系统的开发

摘


要

C++
语言是一种面向对象的语言,< br>,尽管在当前,可视化语言发展速度,普及很快,但
c++
语言作为一种基础的语言,它 的优势依旧存在,甚至有时它是不可替代的,特别是和
硬件接口技术相联系的软件。

五子棋游戏是一种简单大众的游戏,
自从计算机实现以来,
深受广大电脑玩极大喜爱,
传统的五子棋游戏功能相对单一,
为了更好的解剖大型
Windows
应用程序编程思 想,
本实
例加入了一些比较高级的功能,比如,人工智能(
AI
)的应用序列 化方式以及对文件的保
存与打开,数据库的操作等,因而这些实例应用程序要比传统的五子棋游戏要复杂 一些,
从上面的介绍功能可知,本程序的主要任务是实现游戏进行过程中各种状态参数的保存与
实时更新,并且能够把这些更新所引起的变化反映到界面上。



关键词:
c++
;

面向对象;


SQL



I
姓名:熊闯


课题名称:五子棋游戏系统的开发



目




录

摘


要

.
.............................................. .................................................. .............................................
I

第
1
章

功能描述

................................................. .................................................. ........................ 1

第
2
章

系统分析

.
............................ .................................................. ............................................ 3

2.1
实例分析

.
..................... .................................................. .................................................. ..... 3

2.2
计算机的决策方式

.
..... .................................................. .................................................. ..... 3

第
3
章

程序流程图

.
............................................. .................................................. ....................... 4

第
4
章

数据结构设计

.
.......................... .................................................. ...................................... 5

4.1

C
MANAGER
类

.
... .................................................. .................................................. ................ 5

4.1.1

类的定义
.................................................. .................................................. ................... 5

4.1.1

数据结构初始化
.................................. .................................................. ....................... 6

4.2

C
STATUS
类
......................... .................................................. ................................................. 7

4.2.1

类的定义
................. .................................................. .................................................. .. 7

4.2.2

数据结构初始化
........... .................................................. .............................................. 8

4.2.3

成员函数的实现
.............. .................................................. ........................................... 8

4.3

CC
HESS
类
.............. .................................................. .................................................. ........... 9

4.3.1

类的定义
..... .................................................. .................................................. ............ 10

4.3.2

数据结构初始化
.................................................. .................................................. ..... 10

4.3.3

成员函数的实现
....... .................................................. ................................................ 10

4.4

CP
LAYER
类
...... .................................................. .................................................. ............... 11

4.4.1

类的定义
.................................................. .................................................. ................. 11

4.4.2

数据结构初始化
.................................. .................................................. ..................... 11

4.5

CC
OMPUTER
类

.
.............. .................................................. .................................................. . 12

4.5.1

类的定义
.............. .................................................. .................................................. ... 12

4.5.2

数据结构初始化
......... .................................................. .............................................. 13

第
5
章

结束语

.
.. .................................................. .................................................. ...................... 17

附录
B:
主要源程序

.
........................... .................................................. ...................................... 19


姓名:熊闯


课题名称:五子棋游戏系统的开发


第
1
章

功能描述

本实例为传统的五子棋游戏, 它除了具有其他黑子和白子博弈游戏的基本功能外,还
具有一些较高级的功能具体如下:

1.
能使用鼠标进行走棋动作,并且能区分博弈双方的棋子。

2.
能正确判断胜利或失败。

3.
能正确判断走棋是否正确,是否会引起游戏结束。

4.
可以选择对弈的类型,即是与计算机对弈还是两个人在同台计算机上对弈的。

5.
可以选择落子的先后顺序。

6.
可以进行悔棋操作。

7.
可以进行游戏暂停,继续及窗口移动,最小化等操作。

8.
可以进行数据的读写,查询,统计分析等操作。

9.
能进行音效的设置。

10.
游戏进行中信息的及时更新与显示。

本实例应用程序运行界面如图< br>1.1
所示,该应用程序为单文档类型,整个窗口区域分
为左右两个部分。左窗口为显示 区,显示棋盘、普通棋子等;有窗口为操作区,从上自下
分为游戏设置、姓名输入、状态显示、耗时显示 以及功能按钮
5
个区。为了更方便游戏的
操作、更准确跟踪游戏进行的状态,应用程序 带有菜单项、工具栏及文档栏。
“文件”主
菜单实现文件的保存、文件的打开及游戏的重新开始 等操作,
“编辑”菜单用来进行悔棋
等,
“查看”菜单中有用于查询历次游戏的详细信 息及进行排名等,
“操作”菜单的功能与
有窗口各按钮功能相同。工具栏上的按钮与各主要菜单 项相关联,状态栏前半部分为用户
正在进行的操作功能说明,后半部分为游戏进行状态显示,包括对弈双 方姓名,目前中手
数以及日期时间等信息。

1
姓名:熊闯


课题名称:五子棋游戏系统的开发



图
1.1
五子棋游戏界面

2
姓名:熊闯


课题名称:五子棋游戏系统的开发



第
2
章

系统分析

从上面介绍的功能可知,本应 用程序的主要任务实现游戏进行程序中各状态参数的保
存于实时更新所引起的变化反映到界面上。所以系 统分析又分为实例分析和计算机的决策
方式。

2.1
实例分析
< br>一个游戏需要分为内核和界面两个部分,
界面为用户操作提供便利。
本实例游戏是
2D
的,而且整个界面简单,所以使用了适合商业软件的
GDI
绘图且使用
MFC
AppWizard
单
文档作为游戏的主界面,
并对界面进行合适的 分区与修饰,
以使整个布局更加和谐、
美观、
操作简单。

传统的五 子棋游戏功能相对单一,为了更好的解剖大型
Windows
应用程序编程思想,
本实 例加入了一些比较高级的功能,比如,人工智能(
AI
)的应用序列化方式以及对文件
的保存与打开,数据库的操作等,因而这些实例应用程序要比传统的五子棋游戏要复杂一
些。纵观整个过 程需要协调的物理对象主要有棋盘、棋子、人、计算机等,这些对象通过
一些数据进行关联,从而形成某 时刻可以种特殊的局面,或称棋局。因而,应用程序只要
对这些数据进行控制,从而就很好的管理整个棋 局。为此,我们设置了
5
个类
Cmanager
、
Cstatus< br>、
Cplayer
、
Ccomputer
和
Cchess,< br>分别代表管理者、数据、人、计算机和棋子。

本实例应用程序为单机运行,故主要是用 户与计算机对弈。下面先介绍计算机在游戏
过程中的决策方式。

2.2
计算机的决策方式

“当局者迷,
旁观者清”
,这句话用在由
AL
所控制的计算机选手上是不成立的,
相反,
计算机AL
必须要在每个回合下棋时都要能够知道有哪些获胜的方式,下一步是攻击还是
防守,并 计算算出每下一步棋到棋盘人一个子上的获胜几率,判断出最佳的落子位置。


3
姓名:熊闯


课题名称:五子棋游戏系统的开发


第
3
章

程序流程图

系统功能结构图如图
1-2
所示。

图
1-3

五子棋游戏系统功能结构图

五子棋


人
机
对
弈

两
人
对
岸弈

查
看
日
志

声
音
播
放



重
新
开
始

暂
停

继
续

悔
棋



4
姓名:熊闯


课题名称:五子棋游戏系统的开发



第
4
章

数据结构设计

根据面向对象 程序设计方法,结合上述系统分析中所描述的抽象模型,分别对个各类
进行详细设计。

4.1 Cmanager
类

该类是应用的核心类,主要用于对棋面状态数 据进行更新,并根据这些数据判断游戏
的下一个状态。比如游戏是否需要结束,是否有选手获胜等。类中 定义了
7
个数据成员,
用来保存某一时刻棋局的静态属性参数,包括对弈双方的获胜组 合表,每种获胜组合中目
前放入的棋子数等。类中除构造函数及析构函数外,另外定义了
7个成员函数,分别用来
实现改变状态参数,处理不同的对弈方式,判断胜负,播放声音以及完成序列 化等不同的
操作。由于该类中数据需要保存,所以将其基类指定为
Cobject
。其 成员属性及功能如表。

成员

P1table
与
p2table
Win
P1win
与
p2win
Over
Pause
Twoplayergame()
Withcomputergame()
Changeplayerstatus()
Judge()
Playmysound()
Opeator=()
Serialize()
功能



棋盘上的每一颗棋子是否在选手的获胜组合中

选手在各个获胜组合中所填入的棋子数

选手是否获胜

游戏是否结束

游戏是否暂停

两选手对弈

选手与计算机对弈

改变选手状态

判断是否获胜

播放声音

赋值运算符重载

序列化


4.1.1
类的定义

#include
#include
class CManager : public CObject


{
public:

CManager();

virtual ~CManager();
public:

BOOL p1table[15][15][572],p2table[15][15][572];//p1
为黑方
,p2
为白方

5
姓名:熊闯


课题名称:五子棋游戏系统的开发



int win[2][572];//0
为黑方
,1
为白方



BOOL p1win,p2win,over,pause;//p1
为黑方
,p2
为白方

public:

void TwoPlayerGame(CDC *pDC, CPoint point,CStatus* status,CChess *chess);

void
WithComputerGame(CDC
*pDC,
CChess*
playerChess,CChess*
computerChess,CStatus* status);

void ChangePlayerStatus(CChess* chess);

void Judge(CStatus& status);

void PlayMySound(UINT IDSoundRes);

CManager& operator=(CManager&);




virtual void Serialize(CArchive &ar);//
类
CManager
的序列化函数


DE CLARE_SERIAL(CManager)//
声明序列化类
CManager
};

4.1.1
数据结构初始化

CManager::CManager()
{

int i,j,k,count=0;

p1win=false;//
选手未获胜


p2win=false;

over=true;//
游戏未开始


pause=false;

//
选手的获胜组合中没有棋子


for(i=0;i<=1;i++)


for(j=0;j<572;j++)



win[i][j]=0;




//
棋盘上的每颗棋子是否在获胜组合中


for(i=0;i<15;i++)


for(j=0;j<15;j++)



for(k=0;k<572;k++)



{




p1table[i][j][k] = false;




p2table[i][j][k] = false;



}




//
水平方向


for(i=0;i<15;i++)










for(j=0;j<11;j++)


{



for(k=0;k<5;k++)



{




p1table[j+k][i][count] = true;




p2table[j+k][i][count] = true;



}



count++;


}








//
垂直方向


for(i=0;i<15;i++)









for(j=0;j<11;j++)
6
姓名:熊闯


课题名称:五子棋游戏系统的开发




{



for(k=0;k<5;k++)



{




p1table[i][j+k][count] = true;




p2table[i][j+k][count] = true;



}



count++;


}




//
右斜方向


for(i=0;i<11;i++)










for(j=0;j<11;j++)


{



for(k=0;k<5;k++)



{




p1table[j+k][i+k][count] = true;




p2table[j+k][i+k][count] = true;



}



count++;


}




//
左斜方向


for(i=0;i<11;i++)












for(j=14;j>=4;j--)


{



for(k=0;k<5;k++)



{




p1table[j-k][i+k][count] = true;




p2table[j-k][i+k][count] = true;



}



count++;


}
}
4.2 Cstatus
类

该类用于管理对弈双 方选手属性,包括选手姓名拿子类型,本局获胜本局得分等。基
类为
Cobject
。 其成员属性及功能如表
13.4
所示

成员

Name

Chess type
Score
Winner
Operator=()
Serialize()
表
13.4Cplayer
类成员属性及功能

功能

选手姓名

执棋类型,执黑为
1
,执白为
2
得分

是否获胜,胜为
1
,负为
0
,平为
2
赋值运算符重载

序列化

4.2.1
类的定义

#include
7
姓名:熊闯


课题名称:五子棋游戏系统的开发


#include
class CStatus : public CObject


{
public:

CStatus();

virtual ~CStatus();
public:

CPlayer player[2];

int nWithComputer;//
与计算机为
1,
否则为
0

int cursor;//1
为黑、
2
为白、
0
为标准


int next;//
下一步落子操作,
0
为白、
1
为黑


int count;//
落子顺序号


int sound;//
音效状态,
1
为开、
0
为关


CChess chess[15][15];
public:

CStatus& operator=(CStatus&);




virtual void Serialize(CArchive &ar);//
类
CStatus
的序列化函数


DECLARE_SERIAL(CStatus)//
声明序列化类
Cstatus
};
4.2.2
数据结构初始化

CStatus::CStatus()
{

nWithComputer=1;//
与计算机对弈


next=1;//
黑方先落子


cursor=1;//
自定义黑方落子光标


count=0;

sound=1;

player[0].name=_T(

player[0].chessType=1;//
选手执黑先下


player[1].name=_T(
电脑


player[1].chessType=2;//
计算机执白后下


//
棋盘上
225
个落子点位的窗口坐标及棋盘坐标


for(int i=0;i<15;i++)


for(int j=0;j<15;j++)


{



chess[i][j].pointB.x=j;



chess[i][j].pointB.y=i;



chess[i][j].pointW.x=j*26+85;



chess[i][j].pointW.y=i*26+9;





}
}
4.2.3
成员函数的实现

CStatus& CStatus::operator=(CStatus& p)
{

int i,j;

for(i=0;i<15;i++)
8
姓名:熊闯


课题名称:五子棋游戏系统的开发




for(j=0;j<15;j++)



chess[i][j]=[i][j];




for(i=0;i<2;i++)


player[i]=[i];





nWithComputer=omputer;


cursor=;


next=;


count=;


sound=;


return* this;
}

void CStatus::Serialize(CArchive &ar)
{

if(ing())//
保存对象的数据


{

int i,j;

for(i=0;i<15;i++)


for(j=0;j<15;j++)



chess[i][j].Serialize(ar);




for(i=0;i<2;i++)


player[i].Serialize(ar);





ar<
}

else

{

int i,j;

for(i=0;i<15;i++)


for(j=0;j<15;j++)



chess[i][j].Serialize(ar);




for(i=0;i<2;i++)


player[i].Serialize(ar);





ar>>nWithComputer>>cursor>>next>>count>>sound;

}
4.3 CChess
类

该类用于管理棋子属性, 包括棋子类型,视图窗口坐标,棋盘坐标等。基类
Cobject,
成员属性及功能如图
13.3
所示。

成员

功能

Pointw
棋子在视图窗口中的坐标

Pointb
棋子在棋盘中的坐标

Type
棋子类型,
1
为黑子,
2
为白子
0
为空子

Num
落子顺序号空子为
0
Pointtostonepos(cpoint point)
棋子窗口号坐标装换为棋盘坐标

Pointtostonepos(int m,int n)
棋子棋盘坐标装换为窗口坐标

Operator=()
赋值运算符重载

Serialize()
序列化

表


Cchess
类成员属性及功能

9
姓名:熊闯


课题名称:五子棋游戏系统的开发


4.3.1
类的定义

class CChess : public CObject


{
public:

CChess();

virtual ~CChess();
public:

CPoint pointW;//
窗口位置


CPoint pointB;//
棋盘位置


int type;//1
为黑棋、
2
为白棋、
0
为空


int num;//
落子顺序号,空子为
0
public:

CPoint PointToStonePos(CPoint point);

CPoint PointToStonePos(int m,int n);

void DisplayStone(CDC* pDC,UINT IDResource,CPoint point);

CChess& operator=(CChess&);




virtual void Serialize(CArchive &ar);//
类
CChess
的序列化函数


DECLARE_SERIAL(CChess)//
声明序列化类
CChess
};

4.3.2
数据结构初始化

CChess::CChess()
{

type=0;

num=0;
}
4.3.3
成员函数的实现

CChess& CChess::operator=(CChess& p)
{

num=;

type=;

pointB=;

pointW=;

return* this;
}

void CChess::Serialize(CArchive &ar)
{

if(ing())

{


ar<

ar<

ar<

ar<
}
10
姓名:熊闯


课题名称:五子棋游戏系统的开发









}
else
{

ar>>num;

ar>>type;

ar>>pointB;

ar>>pointW;
}
4.4 CPlayer
类

该类用于管理对弈双方选手属性,包括选手姓名拿子类型,本局获 胜本局得分等。基
类为
Cobject
。其成员属性及功能如表
13.4所示

成员

Name

Chess type
Score
Winner
Operator=()
Serialize()
表
13.4Cplayer
类成员属性及功能

功能

选手姓名

执棋类型,执黑为
1
,执白为
2
得分

是否获胜,胜为
1
,负为
0
,平为
2
赋值运算符重载

序列化

4.4.1
类的定义

class CPlayer : public CObject


{
public:

CPlayer();

virtual ~CPlayer();
public:

CString name;

int chessType;//
执黑为
1,
白为
2

int score;

int winner;//1
胜
,0
负
,2
平

public:

CPlayer& operator=(CPlayer&);




virtual void Serialize(CArchive &ar);//
类
CPlayer
的序列化函数


DECLARE_SERIAL(CPlayer)//
声明序列化类
CPlayer
};
4.4.2
数据结构初始化

CPlayer& CPlayer::operator=(CPlayer& p)
{

chessType=ype;

name=;

score=;

winner=;
11
姓名:熊闯


课题名称:五子棋游戏系统的开发



return* this;
}
void CPlayer::Serialize(CArchive &ar)
{

if(ing())

{


ar<

ar<

ar<

ar<
}

else

{


ar>>chessType;


ar>>name;


ar>>score;


ar>>winner;

}
}
4.5 CComputer
类

该类用于选手与 计算机对弈是,处理计算机对落子位置判断等相关操作。其成员属性
及功能如表
13.5
所示









成员

Cgrades,pgrades
Cgrade,pgrade
Mat, nat
Mde,nde
Computer turn()
表
13.5Ccomputer
类成员属性及功能

功能

选手与计算机在棋盘空位置上的获胜
分数

选手与计算机的最高获胜分数

计算机攻击时的位置(棋盘坐标)

计算机防守时的位置(棋盘坐标)

确定计算机落子位置

4.5.1
类的定义

#include
#include
#include
class CComputer


{
public:

CComputer();
12

十大羊奶粉排行榜-


十大羊奶粉排行榜-


十大羊奶粉排行榜-


十大羊奶粉排行榜-


十大羊奶粉排行榜-


十大羊奶粉排行榜-


十大羊奶粉排行榜-


十大羊奶粉排行榜-



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

三级课题报告的相关文章