五子棋游戏软件说明书1

上传人:平*** 文档编号:13946925 上传时间:2017-10-26 格式:DOC 页数:10 大小:73.77KB
返回 下载 相关 举报
五子棋游戏软件说明书1_第1页
第1页 / 共10页
五子棋游戏软件说明书1_第2页
第2页 / 共10页
五子棋游戏软件说明书1_第3页
第3页 / 共10页
五子棋游戏软件说明书1_第4页
第4页 / 共10页
五子棋游戏软件说明书1_第5页
第5页 / 共10页
点击查看更多>>
资源描述

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

1、XX 大学软件大型实验周说 明 书学 院 : 专 业 :题 目 :学生姓名 :学 号 :成 绩指导教师: 职称: 年月日1.设计目的(1)要求学生达到熟练掌握 C+语言的基本知识和 C+调试技能;(2)基本掌握面向对象程序设计的基本思路和方法;(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。(4)培养学生综合利用 C语言进行程序设计的能力,主要是培养学生利用系统提供的标准图形函数进行创新设计。2.设计内容1、创建棋盘大小(可任意) ,并且要保存棋盘上各个点的位置;2、创建棋子类及其属性和方法;3、从盘键分别获取两个用户的输入,根据用户的身份及输入的位置,调用棋子类的相应方法

2、,完成棋子的走动;4、输赢的判断;5、游戏结束。3.开发和运行环境介绍该课程设计在设计与实验过程中需要在 windows XP 系统/windows 2000 以上系统中进行,程序设计要求在 visual C+6.0 平台中进行,完成代码的编写、编译、调试、测试等工作。本游戏对计算机硬件和操作系统要求极低,所以在这里只是把自己的电脑硬件参数和系统参数列下:操作系统:windows xp软件环境:安装 VC+6.04.需求分析(以下项目根据实际情况自定)4.1 功能需求游戏说明:游戏开始时,由黑子开局,将一枚棋子落在棋盘一坐标上,然后由白棋落子,如此轮流下子,直到某一方首先在棋盘的竖、横或斜三方

3、向上的五子连成线,则该方该局获胜;然后继续下一局,每胜一局得 10 分,输一局或平局得 0 分,先赢两局的一方为最终获胜者;在下棋途中可以悔棋。1、功能列表如下:a) 输出棋盘;b) 显示用户行程,提示用户下子;c) 查看用户的输入是否出界;d) 悔棋,下错位置可以悔棋;e) 记录并显示每局游戏结束时的步数;f) 判断每局游戏输赢,显示每局游戏的获胜者及分数。g) 判断是否进行下一局。h) 判最终赢家(三局两胜) 。i) 退出游戏。2、功能描述(1)棋盘是 15*15 的方格棋盘,下棋区为 a00到 a1414。(2)黑子先下,白子后下,两者交替下子,下子坐标范围为(1,1)到(15,15)

4、。(3)当一方棋子下错位置时,输入(-1,-1)悔棋,屏幕提示悔棋方请输入下子位置。(4)当下子的坐标处有子时,提示有子请重下。(5)每赢一局积累 10 分,输一局或平局得 0 分,先得够 20 分的一方为最终赢家。4.2 性能需求1、技术可行性运用 Windows2000/XP 以上的操作系统,SQL SERVER2000 的数据库技术,开发以Windows XP 为用户的操作平台,界面友善、功能齐全的五子棋双人对战小游戏 。2、经济可行性一方面,新系统中棋盘界面和更强劲的功能支持,再加三局两胜制的规则,不仅增加了游戏的趣味性,而且使游戏者更尽兴;另一方面系统开发成本低,现有 PC 机即可提

5、供该系统开发工作需要的所有硬件设备环境。3、操作可行性操作上是键盘的使用,主要凭借输入坐标确定棋子落子位置,方便简单。使用前只要看明白游戏规则及其方法即可。4.3 数据流图黑子下棋白棋下子输出棋盘下棋位置正确悔棋下棋位置正确悔棋开始游戏 结束游戏 本局胜负本局胜负等于 20分等于 20分4.4 数据字典变量及说明数据编码:数据名(标识符)库名:三局两胜制双人对战五子棋游戏信息:变量 类型 说明 x1 int 黑子下棋行数 y1 int 黑子下棋列数 x2 int 白子下棋行数 y2 int 白子下棋列数 n int 下棋步数score1 int 黑子分数score2 int 白子分数i int

6、 棋盘行数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_VA

7、LID(pDoc);/ TODO: add draw code for native data hereCBitmap 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(

8、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.CreateCompati

9、bleDC(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;iBitBlt(18+i*24,18+j*2

10、4,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(iG

11、etDC();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 游戏结束,请

12、重新开始。);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();/获得垂直连

13、续棋子的个数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(

14、qzxy-i!=f) break;hsz=i-1;for(i=1;y+i=0)&(y+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=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.设置项目中的功能代码此功能用来在游戏结束后,用来“开始/重新开始” 。并且一次性消去棋盘上所有的棋子。实现此功能相关代码如下:void CCk19View:OnStart() / TODO: Add your command handler code herefor(int i=0;i19;i+)for(int j=

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号