五子棋游戏软件说明书1.docx

上传人:b****1 文档编号:10352772 上传时间:2023-05-25 格式:DOCX 页数:13 大小:18.80KB
下载 相关 举报
五子棋游戏软件说明书1.docx_第1页
第1页 / 共13页
五子棋游戏软件说明书1.docx_第2页
第2页 / 共13页
五子棋游戏软件说明书1.docx_第3页
第3页 / 共13页
五子棋游戏软件说明书1.docx_第4页
第4页 / 共13页
五子棋游戏软件说明书1.docx_第5页
第5页 / 共13页
五子棋游戏软件说明书1.docx_第6页
第6页 / 共13页
五子棋游戏软件说明书1.docx_第7页
第7页 / 共13页
五子棋游戏软件说明书1.docx_第8页
第8页 / 共13页
五子棋游戏软件说明书1.docx_第9页
第9页 / 共13页
五子棋游戏软件说明书1.docx_第10页
第10页 / 共13页
五子棋游戏软件说明书1.docx_第11页
第11页 / 共13页
五子棋游戏软件说明书1.docx_第12页
第12页 / 共13页
五子棋游戏软件说明书1.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

五子棋游戏软件说明书1.docx

《五子棋游戏软件说明书1.docx》由会员分享,可在线阅读,更多相关《五子棋游戏软件说明书1.docx(13页珍藏版)》请在冰点文库上搜索。

五子棋游戏软件说明书1.docx

五子棋游戏软件说明书1

XX大学

软件大型实验周

说明书

 

 

 

学院:

 

专业:

题目:

学生姓名:

学号:

成绩

 

 

指导教师:

职称:

 

 

 

年月日

 

1.设计目的

(1)要求学生达到熟练掌握C++语言的基本知识和C++调试技能;

(2)基本掌握面向对象程序设计的基本思路和方法;

(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。

(4)培养学生综合利用C++语言进行程序设计的能力,主要是培养学生利用系统提供的标准图形函数进行创新设计。

2.设计内容

1、创建棋盘大小(可任意),并且要保存棋盘上各个点的位置;

2、创建棋子类及其属性和方法;

3、从盘键分别获取两个用户的输入,根据用户的身份及输入的位置,调用棋子类的相应方法,完成棋子的走动;

4、输赢的判断;

5、游戏结束。

3.开发和运行环境介绍

该课程设计在设计与实验过程中需要在windowsXP系统/windows2000以上系统中进行,程序设计要求在visualC++6.0平台中进行,完成代码的编写、编译、调试、测试等工作。

本游戏对计算机硬件和操作系统要求极低,所以在这里只是把自己的电脑硬件参数和系统参数列下:

操作系统:

windowsxp

软件环境:

安装VC++6.0

4.需求分析(以下项目根据实际情况自定)

4.1功能需求

游戏说明:

游戏开始时,由黑子开局,将一枚棋子落在棋盘一坐标上,然后由白棋落子,如此轮流下子,直到某一方首先在棋盘的竖、横或斜三方向上的五子连成线,则该方该局获胜;然后继续下一局,每胜一局得10分,输一局或平局得0分,先赢两局的一方为最终获胜者;在下棋途中可以悔棋。

1、功能列表如下:

a)输出棋盘;

b)显示用户行程,提示用户下子;

c)查看用户的输入是否出界;

d)悔棋,下错位置可以悔棋;

e)记录并显示每局游戏结束时的步数;

f)判断每局游戏输赢,显示每局游戏的获胜者及分数。

g)判断是否进行下一局。

h)判最终赢家(三局两胜)。

i)退出游戏。

2、功能描述

(1)棋盘是15*15的方格棋盘,下棋区为a[0][0]到a[14][14]。

(2)黑子先下,白子后下,两者交替下子,下子坐标范围为(1,1)到(15,15)。

(3)当一方棋子下错位置时,输入(-1,-1)悔棋,屏幕提示悔棋方请输入下子位置。

(4)当下子的坐标处有子时,提示有子请重下。

(5)每赢一局积累10分,输一局或平局得0分,先得够20分的一方为最终赢家。

4.2性能需求

1、技术可行性

运用Windows2000/XP以上的操作系统,SQLSERVER2000的数据库技术,开发以WindowsXP为用户的操作平台,界面友善、功能齐全的《五子棋双人对战小游戏》。

2、经济可行性

一方面,新系统中棋盘界面和更强劲的功能支持,再加三局两胜制的规则,不仅增加了游戏的趣味性,而且使游戏者更尽兴;另一方面系统开发成本低,现有PC机即可提供该系统开发工作需要的所有硬件设备环境。

3、操作可行性

操作上是键盘的使用,主要凭借输入坐标确定棋子落子位置,方便简单。

使用前只要看明白游戏规则及其方法即可。

 

4.3数据流图

 

黑子下棋

白棋下子

输出棋盘

下棋位置正确

悔棋

下棋位置正确

悔棋

开始游戏

结束游戏

N

Y

Y

Y

Y

Y

N

N

N

N

N

本局胜负

本局胜负

Y

Y

Y

等于20分

等于20分

N

N

 

4.4数据字典

变量及说明

数据编码:

数据名(标识符)

库名:

三局两胜制双人对战五子棋游戏

信息:

变量类型说明

x1int黑子下棋行数

y1int黑子下棋列数

x2int白子下棋行数

y2int白子下棋列数

nint下棋步数

score1int黑子分数

score2int白子分数

iint棋盘行数

jint棋盘列数

pint黑棋赢的盘数

qint白棋赢的盘数

mint下棋的局数

heimint单局黑子赢后,将要下的局数

baimint单局白子赢后,将要下的局数

5.系统设计与实现(主要说明自己所负责的模块的情况)

5.1模块功能描述

1.界面的设计

程序界面程序在启动运行时,系统会通过调用视图类中的重绘图函数对界面进行界面的初始化。

使程序界面更加友好,在使用上给用户一种清新怡然的感觉。

2.游戏中棋盘的形成

实现此功能相关代码如下:

voidCCk19View:

:

OnDraw(CDC*pDC)

{

CCk19Doc*pDoc=GetDocument();

ASSERT_VALID(pDoc);

//TODO:

adddrawcodefornativedatahere

CBitmapbitmap;//背景棋盘

bitmap.LoadBitmap(IDB_BITMAP1);

CDCmem,mem1,mem2,qzh,qzb;

mem.CreateCompatibleDC(pDC);

mem.SelectObject(&bitmap);

pDC->BitBlt(0,0,600,400,&mem,0,0,SRCCOPY);

CBitmapbitmap5;//死骑

bitmap5.LoadBitmap(IDB_BITMAP5);

mem2.CreateCompatibleDC(pDC);

mem2.SelectObject(&bitmap5);

pDC->BitBlt(350,0,600,352,&mem2,0,0,SRCCOPY);

CBitmapbitmap4;//五子棋

bitmap4.LoadBitmap(IDB_BITMAP4);

mem1.CreateCompatibleDC(pDC);

mem1.SelectObject(&bitmap4);

pDC->BitBlt(420,285,600,400,&mem1,0,0,SRCCOPY);

CBitmapbitmap2;//黑子

bitmap2.LoadBitmap(IDB_BITMAP2);

qzh.CreateCompatibleDC(pDC);

qzh.SelectObject(&bitmap2);

CBitmapbitmap3;//白子

bitmap3.LoadBitmap(IDB_BITMAP3);

qzb.CreateCompatibleDC(pDC);

qzb.SelectObject(&bitmap3);

//以下是显示棋子的代码

CRectrect;//矩形区域

GetClientRect(&rect);//获得窗口矩形区域

pDC->BitBlt(0,0,rect.Width(),rect.Height(),&qp,0,0,SRCCOPY);//绘图

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

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

{

if(qz[i][j]==1)

{

pDC->BitBlt(18+i*24,18+j*24,20,20,&qzh,0,0,SRCCOPY);

}

elseif(qz[i][j]==2)

{

pDC->BitBlt(18+i*24,18+j*24,20,20,&qzb,0,0,SRCCOPY);

}

}

}

3.游戏下子功能代码

intqz[15][15];//棋子的二维数组

实现此功能相关代码如下:

voidCCk19View:

:

OnLButtonDown(UINTnFlags,CPointpoint)

{

//TODO:

Addyourmessagehandlercodehereand/orcalldefault

inti=(point.x-10)/24;intj=(point.y-10)/24;

if(i<15&&j<15)

if(qz[i][j]==0)

{

qz[i][j]=count%2+1;

count++;

jl[i][j]=count;

OnDraw(this->GetDC());

Positionp(i,j,qz[i][j]);//Position类记录各棋子的位置和值

//inths,ss,ps,ns;是判断点(i,j)的横、竖、撇和捺有无五个子

hs=p.GetHorizontal();

ss=p.GetVertical();

ps=p.GetRightSlanting();

ns=p.GetLeftSlanting();

if(hs==5||ss==5||ps==5||ns==5)

{

if(qz[i][j]==1)

MessageBox("你真是太牛了!

\n恭喜你,黑子赢了!

\n游戏结束,请重新开始。

");

if(qz[i][j]==2)

MessageBox("你真是太牛了!

\n恭喜你,白子赢了!

\n游戏结束,请重新开始。

");

}

if((count==225)&&(hs!

=5)&&(ss!

=5)&&(ps!

=5)&&(ns!

=5))

MessageBox("你俩都很棒!

\n平手!

","请握手言和",MB_OK);

}

CView:

:

OnLButtonDown(nFlags,point);

}

4.判断功能代码

此代码用来判断当某一方下完子后是否有练成五个子的可能性。

自己创建一个类并判断

classPosition//坐标position类

{

public:

Position(intm,intn,intk)

{x=m;y=n;f=k;}

intGetHorizontal();//获得水平连续棋子的个数

intGetVertical();//获得垂直连续棋子的个数

intGetRightSlanting();//获得右斜连续棋子的个数

intGetLeftSlanting();//获得左斜连续棋子的个数

private:

intf;//记录棋子的颜色,1为黑子,2为白子

intx;//行数

inty;//列数

inthsy;//水平向右

inthsz;//水平向左

intsss;//竖直向上

intssx;//竖直向下

intys;//右上

intzx;//左下

intyx;//右下

intzs;//左上

};

实现此功能相关代码如下:

intPosition:

:

GetHorizontal()//水平方向

{

hsy=hsz=0;

for(inti=1;y-i>=0;i++)

if(qz[x][y-i]!

=f)break;

hsz=i-1;

for(i=1;y+i<=14;i++)

if(qz[x][y+i]!

=f)break;

hsy=i-1;

return(hsy+hsz+1);

}

intPosition:

:

GetLeftSlanting()//左斜方向

{

ys=zx=0;

for(inti=1;(x-i>=0)&&(y+i<=14);i++)

if(qz[x-i][y+i]!

=f)break;

ys=i-1;

for(i=1;(x+i<=14)&&(y-i>=0);i++)

if(qz[x+i][y-i]!

=f)break;

zx=i-1;

return(ys+zx+1);

}

intPosition:

:

GetRightSlanting()//右斜方向

{

yx=zs=0;

for(inti=1;(x-i>=0)&&(y-i>=0);i++)

if(qz[x-i][y-i]!

=f)break;

zs=i-1;

for(i=1;(x+i<=14)&&(y+i<=14);i++)

if(qz[x+i][y+i]!

=f)break;

yx=i-1;

return(yx+zs+1);

}

intPosition:

:

GetVertical()//垂直方向

{

sss=ssx=0;

for(inti=1;x-i>=0;i++)

if(qz[x-i][y]!

=f)break;

sss=i-1;

for(i=1;y+i<=14;i++)

if(qz[x+i][y]!

=f)break;

ssx=i-1;

return(sss+ssx+1);

}

5.设置项目中的功能代码

此功能用来在游戏结束后,用来“开始/重新开始”。

并且一次性消去棋盘上所有的棋子。

实现此功能相关代码如下:

voidCCk19View:

:

OnStart()

{

//TODO:

Addyourcommandhandlercodehere

for(inti=0;i<19;i++)

for(intj=0;j<19;j++)

wqz[i][j]=0;

OnDraw(GetDC());

}

5.2软件实现

6.软件测试

经过无数次的测试,该系统能够较好地满足游戏爱好者的需要,能够比较顺利的进行游戏,能够显示谁赢谁输,还是平局。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 面试

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2