关键词不能为空

当前您在: 首页 > 育儿 >

三级课题报告

作者:陕西保健网
来源: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

三级课题报告的相关文章