Windows程序综合实验报告模板.docx
- 文档编号:9633331
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:17
- 大小:58.70KB
Windows程序综合实验报告模板.docx
《Windows程序综合实验报告模板.docx》由会员分享,可在线阅读,更多相关《Windows程序综合实验报告模板.docx(17页珍藏版)》请在冰豆网上搜索。
Windows程序综合实验报告模板
《Windows应用开发》
综合实验报告
课题名称:
黑白棋
专业:
软件技术班级:
103361
姓名:
敖丹学号:
10336113
指导教师:
李莹成绩:
完成日期:
2012年5月16日
目录
1需求分析1
1.1开发背景1
1.2项目目标1
1.3游戏说明2
2技术路线3
2.1MicrosoftVisualStudio2010及C++简介3
2.2总体方案3
3系统设计与实现5
3.1系统功能模块实现5
3.1.1游戏模块5
结论13
1需求分析
1.1开发背景
我国是棋文化的发祥地之一,上古的尧时代,围棋就在我国诞生了!
在随后的几千年长河里,我国人民不断以自己的聪明才智创造出深受人们喜爱的棋类游戏,像中国象棋,五子棋,军棋等等一直是在民间很流行的棋类项目。
同时国外的棋类游戏也流传到中国,比如国际象棋,跳棋等,逐渐在国内盛行。
可以说棋类游戏一直是中国人民喜闻乐见的一种休闲方式,由于棋类游戏都是比较注重智力策略的,所以从中也可以折射出我国人民的智慧。
棋类游戏规则简单,对外部要求不高,人们可以随时随地进行对弈。
但是,真正能够精通棋类游戏的人却不是很多,主要是棋类游戏具有变化莫测的特点,人们经常得在棋局上深思熟虑才能找到克敌制胜的办法。
因此,各种棋类游戏都具有开发智力的效能。
在休闲中使自己得到真正的长进,这或许就是其倍受人们青睐的原因所在!
黑白棋游戏,起源于古希腊,在日本和西方国家比较盛行,其独特的游戏规则,对人类智慧进行着不断地挑战和激励,因此人们一直乐此不疲!
加上上世纪后期电脑的普及,使黑白棋在全球范围内风靡,人们通过电脑可以轻松地实现人机对弈或者双人对弈!
但是,黑白棋在我国开展的比较晚,流行范围还不够广,很多人对它的规则还不是很了解。
为了配合国内黑白棋的普及活动,为广大的人民群众增添一种既能休闲又能益智的娱乐形式,使人们得到身心的全面发展,我们开发了这款PC版黑白棋游戏。
现阶段沉迷于网络游戏或者其他游戏的学生不少,作为国家即将的建设者和接班人决不能只是游戏中的高手,我们只有去磨练自己的思维,发挥创造性才能担当得起如此重任,所以我们更希望能将其在学生中加以推广,让我们学生找到真正适合自己的游戏
1.2项目目标
我们将主要通过VC++语言,运用面向对象的程序设计方法,开发此款黑白棋游戏。
力争使程序短小精悍,简洁明了;游戏界面优美,容易操作;功能丰富,趣味性强。
现在将我们对项目期望实现的目标一一介绍:
a.能供两人对弈。
b.可以实现人机对弈。
c.棋力可调,分初级,中级,高级。
d.可以悔棋。
e.倒计时功能,双方中有一方时间用完即判该方输。
f.提示音功能,下错、下对有不同的提示音。
g.界面色彩丰富,给人以良好的视觉冲击。
h.操作方便,容易上手。
1.3游戏说明
(1)游戏流程:
启动游戏后,直接进入棋盘界面,在这里,可以选择人人对弈还是人机对弈,同时可以调节棋力,(我们设定了三种棋力,初级、中级和高级,分别用不同的算法实现),还可以选择执黑和执白,如果对黑白棋有什么不明白之处,可以点击帮助来查看游戏的规则。
在选定之后,我们就可以开始游戏了,(当然,在游戏开始后修改各个属性也是可以的),当我们开始下棋时,我们有一个计时器和一个计数器分别对下棋用时和双方棋子数进行记录,以作为判定输赢的依据。
我们的判断标准为:
若双方都未超时,棋子多者为胜;若有一方超时,直接判定此方为负,每局时限为5分钟。
(2)游戏规则:
吃子:
以方格为直线或者斜线的方向,以一方对照棋子和即将落下棋子之间(此两子之间必须没有空格且全部为对方棋子)的所有对方棋子被吃掉,被吃掉的对方棋子变为自己一方的棋子。
下子:
必须在可以吃子的位置处并且该位置为空格时可以落下己方的棋子,如果不能下子,棋子无法显示在棋盘上,同时有声音提示。
停走:
任何一方无法下子时屏幕上面会自动出现对话框,提示某方不能下子,让对方下子。
赢棋:
若一方超时,则自动判负,屏幕上面会自动出现对话框提示;当双方都无法下子时屏幕上面也会自动出现对话框,提示本次游戏结束,并且根据计数器记录的双方棋子数判定棋子数多的一方取得本次游戏的胜利。
(3)特别提示:
我们在这个黑白棋程序中添加了悔棋功能,可以实现一步甚至多步悔棋,当你要仔细研究你的下棋思路和对手的下棋思路时,用悔棋功能可以把本盘棋单步悔棋到底,实现全过程的再现。
2技术路线
2.1MicrosoftVisualStudio2010及C++简介
VisualStudio.NET是一个功能强大、高效并且可以扩展的编程环境,是一个构建企业分布式应用的开发平台,基于Web服务的技术得到了VisualStudio.NET的大力支持。
使用VisualStudio.NET开发平台可以构建Windows应用程序、Web应用程序以及Web服务。
使用VisualStudio.NET构建分布式应用程序将更加简单、高效而且稳定。
C++这个词在中国大陆的程序员圈子中通常被读做“C加加”,而西方的程序员通常读做“Cplusplus”,“CPP”。
它是一种使用非常广泛C的计算机编程语言。
C++是一种静态数据类型检查的、支持多重编程范式的通用程序设计语言。
它支持过程化程序设计、数据抽象、面向对象程序设计、制作图标等等泛型程序设计等多种程序设计风格。
2.2总体方案
我们的程序从总体上说分为四个块,希望通过四个类来解决,分别为:
(1)位图的导入与棋盘的生成。
(2)记录双方对弈时间的计时器与记录双方子数的计数器。
(3)选择人机对战和人人对战的函数及控制堆栈难度的主函数。
(4)实现悔棋功能的堆栈。
游戏的简单流程如下:
3系统设计与实现
3.1系统功能模块实现
3.1.1游戏模块
打开游戏界面之后会出现一个界面,此界面不能游戏,只有当玩家点击GameNewGame之后,才会出现一个游戏界面,在游戏界面里,游戏玩家可以通过下面一排的快捷图标来悔棋或重新开始游戏,也可以通过上面菜单栏中的Move中的一些按钮来实现。
具体如图3.1和图3.2所示:
图3.1开始游戏之前的界面
图3.2游戏开始之后的界面
实现代码:
(1)实现棋盘的类CGrid
classCGrid
{
public:
CBitmap*GetBmp(intkernel);
boolSetPoint(intx,inty,intline,introw);
CPointpoint;
CBitmapm_bCan;
CBitmapm_bEmpty;
CBitmapm_bBlackNow;
CBitmapm_bBlack;
CBitmapm_bWhiteNow;
CBitmapm_bWhite;
intGridSize;
CGrid();
virtual~CGrid();
CGrid:
:
CGrid()
{
m_bBlack.LoadBitmap(IDB_BLACK);
m_bBlackNow.LoadBitmap(IDB_BLACKNOW);
m_bWhite.LoadBitmap(IDB_WHITE);
m_bWhiteNow.LoadBitmap(IDB_WHITENOW);
m_bEmpty.LoadBitmap(IDB_EMPTY);
m_bCan.LoadBitmap(IDB_CAN);
GridSize=48;
}
得到位图及位置函数
boolCGrid:
:
SetPoint(intx,inty,intline,introw)
{
intn=line;
intm=row;
point=CPoint(x+n*GridSize,y+m*GridSize);
return1;
}
CBitmap*CGrid:
:
GetBmp(intkernel)
{
switch(kernel)
{
case0:
return&m_bEmpty;
case1:
return&m_bBlack;
case2:
return&m_bBlackNow;
case3:
return&m_bWhite;
case4:
return&m_bWhiteNow;
case5:
return&m_bCan;
default:
return0;
}
}
(2)主函数类CDialog
1翻转函数B2W
intCB_WDlg:
:
B2W(intx1,inty1,intflag)
{
intyes;//ifyes==0thenthereisnopositiontochange
//ifyes==1thenthereisanypositiontochange
inttemp=flag;
intx=0,y=0,i=0,j=0;
intresult=0;//result==0indicatethatx1,y1isthewrongposition
//result==1indicatethattheyarelegalposition
if(x1<0||x1>=8||y1<0||y1>=8)
return0;
//横向--当前左
x=x1;
//y=0;
yes=0;
for(i=y1-1;i>=0;i--)
{
if(kernel[x][i]==0)
{
yes=0;
break;
}
elseif(kernel[x][i]==temp)
break;
else
yes=1;
}
if((i!
=0-1)&&(yes==1))
{
for(i++;i { kernel[x][i]=temp; result=1; } } //横向--当前向右 //x=x1; //y=NUM; yes=0; for(i=y1+1;i<8;i++) { if(kernel[x][i]==0) { yes=0; break; } elseif(kernel[x][i]==temp) break; else yes=1; } if((i! =8)&&(yes==1)) { for(i--;i>y1;i--) { kernel[x][i]=temp; result=1; } } //竖向--向上 //x=0; y=y1; yes=0; for(i=x1-1;i>=0;i--) { if(kernel[i][y]==0) { yes=0; break; } elseif(kernel[i][y]==temp) break; else yes=1; } if((i! =0-1)&&(yes==1)) { for(i++;i { kernel[i][y]=temp; result=1; } } //竖向--向下 //x=8; //y=y1; yes=0; for(i=x1+1;i<8;i++) { if(kernel[i][y]==0) { yes=0; break; } elseif(kernel[i][y]==temp) break; else yes=1; } if((i! =8)&&(yes==1)) { for(i--;i>x1;i--) { kernel[i][y]=temp; result=1; } } //斜向左上 //x=0; //y=y1; yes=0; for(i=x1-1,j=y1-1;(i>=0)&&(j>=0);i--,j--) { if(kernel[i][j]==0) { yes=0; break; } elseif(kernel[i][j]==temp) break; else yes=1; } if((i! =0-1)&&(j! =-1)&&(yes==1)) { for(i++,j++;i { kernel[i][j]=temp; result=1; } } //斜向上向右 yes=0; for(i=x1-1,j=y1+1;(i>=0)&&(j<8);i--,j++) { if(kernel[i][j]==0) { yes=0; break; } elseif(kernel[i][j]==temp) break; else yes=1; } if((i! =0-1)&&(j! =8)&&(yes==1)) { for(i++,j--;i { kernel[i][j]=temp; result=1; } } //斜向左下 yes=0; for(i=x1+1,j=y1-1;(i<8)&&(j>=0);i++,j--) { if(kernel[i][j]==0) { yes=0; break; } elseif(kernel[i][j]==temp) break; else yes=1; } if((i! =8)&&(j! =-1)&&(yes==1)) { for(i--,j++;i>x1;i--,j++) { kernel[i][j]=temp; result=1; } } //斜向右下 yes=0; for(i=x1+1,j=y1+1;(i<8)&&(j<8);i++,j++) { if(kernel[i][j]==0) { yes=0; break; } elseif(kernel[i][j]==temp) break; else yes=1; } if((i! =8)&&(j! =8)&&(yes==1)) { for(i--,j--;i>x1;i--,j--) { kernel[i][j]=temp; result=1; } } if(result==1) kernel[x1][y1]=temp;returnresult; } 结论 本黑白棋小游戏程序主要是分为对人和对机游戏两种,两种游戏分别都有提示,对人的时候就是需要两名玩家来完成,先下棋子的玩家为黑房,后下的为白方,然后只要依据黑白棋的规则进行游戏就可以了。 当选择对机游戏时,就是一名玩家与计算机之间进行游戏。 当玩家觉得自己所下子的位置有误时,可以选择悔棋,而悔棋时则可以反悔一步或者多步,并且,悔棋可以通过第二排的快捷键方法,也可以通过第一排的菜单方法进行,这给玩家提供了很多方便。 通过这几个星期以来的实验,不但是我提高了编程方面的技能,更是我了解到了作为一个程序员的艰辛。 虽然已经很努力了,但程序还是存在着一些不足之处,比如在对机游戏时,没有难度的选择;以及一些地方总会有毛病。 但其根本还是实现了这一小游戏的基本功能。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Windows 程序综合 实验 报告 模板