已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
XX大学软件大型实验周说 明 书学 院:专 业:题 目:学生姓名:学 号:成绩指导教师: 职称: 年月日1.设计目的(1)要求学生达到熟练掌握C+语言的基本知识和C+调试技能;(2)基本掌握面向对象程序设计的基本思路和方法;(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。(4)培养学生综合利用C语言进行程序设计的能力,主要是培养学生利用系统提供的标准图形函数进行创新设计。2.设计内容1、创建棋盘大小(可任意),并且要保存棋盘上各个点的位置;2、创建棋子类及其属性和方法;3、从盘键分别获取两个用户的输入,根据用户的身份及输入的位置,调用棋子类的相应方法,完成棋子的走动;4、输赢的判断;5、游戏结束。3.开发和运行环境介绍该课程设计在设计与实验过程中需要在windows XP系统/windows 2000以上系统中进行,程序设计要求在visual C+6.0平台中进行,完成代码的编写、编译、调试、测试等工作。本游戏对计算机硬件和操作系统要求极低,所以在这里只是把自己的电脑硬件参数和系统参数列下:操作系统:windows xp软件环境:安装VC+6.04.需求分析(以下项目根据实际情况自定)4.1功能需求游戏说明:游戏开始时,由黑子开局,将一枚棋子落在棋盘一坐标上,然后由白棋落子,如此轮流下子,直到某一方首先在棋盘的竖、横或斜三方向上的五子连成线,则该方该局获胜;然后继续下一局,每胜一局得10分,输一局或平局得0分,先赢两局的一方为最终获胜者;在下棋途中可以悔棋。1、功能列表如下:a) 输出棋盘;b) 显示用户行程,提示用户下子;c) 查看用户的输入是否出界;d) 悔棋,下错位置可以悔棋;e) 记录并显示每局游戏结束时的步数;f) 判断每局游戏输赢,显示每局游戏的获胜者及分数。g) 判断是否进行下一局。h) 判最终赢家(三局两胜)。i) 退出游戏。2、功能描述(1)棋盘是15*15的方格棋盘,下棋区为a00到a1414。(2)黑子先下,白子后下,两者交替下子,下子坐标范围为(1,1)到(15,15)。(3)当一方棋子下错位置时,输入(-1,-1)悔棋,屏幕提示悔棋方请输入下子位置。(4)当下子的坐标处有子时,提示有子请重下。(5)每赢一局积累10分,输一局或平局得0分,先得够20分的一方为最终赢家。4.2 性能需求1、技术可行性运用Windows2000/XP以上的操作系统,SQL SERVER2000的数据库技术,开发以Windows XP为用户的操作平台,界面友善、功能齐全的五子棋双人对战小游戏。2、经济可行性一方面,新系统中棋盘界面和更强劲的功能支持,再加三局两胜制的规则,不仅增加了游戏的趣味性,而且使游戏者更尽兴;另一方面系统开发成本低,现有PC机即可提供该系统开发工作需要的所有硬件设备环境。3、操作可行性操作上是键盘的使用,主要凭借输入坐标确定棋子落子位置,方便简单。使用前只要看明白游戏规则及其方法即可。4.3 数据流图黑子下棋白棋下子输出棋盘下棋位置正确悔棋下棋位置正确悔棋开始游戏 结束游戏 本局胜负本局胜负等于20分等于20分4.4 数据字典变量及说明数据编码:数据名(标识符)库名:三局两胜制双人对战五子棋游戏信息:变量 类型 说明 x1 int 黑子下棋行数 y1int 黑子下棋列数 x2int 白子下棋行数 y2 int 白子下棋列数 n int 下棋步数 score1 int 黑子分数score2 int 白子分数i int 棋盘行数j int 棋盘列数p int 黑棋赢的盘数 q int 白棋赢的盘数m int 下棋的局数heim int 单局黑子赢后,将要下的局数baim int 单局白子赢后,将要下的局数5.系统设计与实现(主要说明自己所负责的模块的情况)5.1 模块功能描述1.界面的设计程序界面程序在启动运行时,系统会通过调用视图类中的重绘图函数对界面进行界面的初始化。使程序界面更加友好,在使用上给用户一种清新怡然的感觉。2.游戏中棋盘的形成实现此功能相关代码如下:void CCk19View:OnDraw(CDC* pDC)CCk19Doc* pDoc = GetDocument();ASSERT_VALID(pDoc);/ TODO: add draw code for native data here CBitmap bitmap;/背景棋盘bitmap.LoadBitmap(IDB_BITMAP1);CDC mem,mem1,mem2,qzh, qzb;mem.CreateCompatibleDC(pDC);mem.SelectObject(&bitmap);pDC-BitBlt(0,0,600,400,&mem,0,0,SRCCOPY); CBitmap bitmap5;/死骑bitmap5.LoadBitmap(IDB_BITMAP5);mem2.CreateCompatibleDC(pDC);mem2.SelectObject(&bitmap5);pDC-BitBlt(350,0,600,352,&mem2,0,0,SRCCOPY); CBitmap bitmap4;/五子棋bitmap4.LoadBitmap(IDB_BITMAP4);mem1.CreateCompatibleDC(pDC);mem1.SelectObject(&bitmap4);pDC-BitBlt(420,285,600,400,&mem1,0,0,SRCCOPY); CBitmap bitmap2;/黑子bitmap2.LoadBitmap(IDB_BITMAP2);qzh.CreateCompatibleDC(pDC);qzh.SelectObject(&bitmap2); CBitmap bitmap3;/白子bitmap3.LoadBitmap(IDB_BITMAP3);qzb.CreateCompatibleDC(pDC);qzb.SelectObject(&bitmap3);/以下是显示棋子的代码 CRect rect;/矩形区域GetClientRect(&rect);/获得窗口矩形区域pDC-BitBlt(0,0,rect.Width(),rect.Height(),&qp,0,0,SRCCOPY);/绘图for(int i=0;i15;i+)for(int j=0;jBitBlt(18+i*24,18+j*24,20,20,&qzh,0,0,SRCCOPY);else if(qzij=2)pDC-BitBlt(18+i*24,18+j*24,20,20,&qzb,0,0,SRCCOPY);3.游戏下子功能代码int qz1515;/棋子的二维数组实现此功能相关代码如下:void CCk19View:OnLButtonDown(UINT nFlags, CPoint point) / TODO: Add your message handler code here and/or call defaultint i=(point.x-10)/24;int j=(point.y-10)/24;if(i15&jGetDC(); Position p(i,j,qzij);/Position类记录各棋子的位置和值 /int hs,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(qzij=1)MessageBox(你真是太牛了!n 恭喜你,黑子赢了!n 游戏结束,请重新开始。);if(qzij=2) MessageBox(你真是太牛了!n 恭喜你,白子赢了!n 游戏结束,请重新开始。);if(count=225)&(hs!=5)&(ss!=5)&(ps!=5)&(ns!=5)MessageBox(你俩都很棒!n 平手!,请握手言和,MB_OK);CView:OnLButtonDown(nFlags, point);4.判断功能代码此代码用来判断当某一方下完子后是否有练成五个子的可能性。自己创建一个类并判断class Position /坐标position类public:Position(int m,int n,int k)x=m;y=n;f=k;int GetHorizontal();/获得水平连续棋子的个数int GetVertical();/获得垂直连续棋子的个数int GetRightSlanting();/获得右斜连续棋子的个数int GetLeftSlanting();/获得左斜连续棋子的个数private:int f;/记录棋子的颜色,1为黑子,2为白子 int x;/行数int y;/列数int hsy;/水平向右int hsz;/水平向左 int sss;/竖直向上int ssx;/竖直向下int ys;/右上int zx;/左下int yx;/右下int zs;/左上;实现此功能相关代码如下:int Position:GetHorizontal()/水平方向hsy=hsz=0; for(int i=1;y-i=0;i+) if(qzxy-i!=f) break;hsz=i-1; for(i=1;y+i=0)&(y+i=14);i+) if(qzx-iy+i!=f) break;ys=i-1; for(i=1;(x+i=0);i+) if(qzx+iy-i!=f) break;zx=i-1;return (ys+zx+1);int Position:GetRightSlanting()/右斜方向yx=zs=0; for(int i=1;(x-i=0)&(y-i=0);i+) if(qzx-iy-i!=f) break;zs=i-1; for(i=1;(x+i=14)&(y+i=0;i+) if(qzx-iy!=f) break;sss=i-1; for(i=1;y+i=14;i+) if(qzx+iy!=f) break;ssx=i-1;return (sss+ssx+1);5.设置项目中的功能代码此功能用来在游戏结束后,用来“开始/重新开始”
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论