完整版毕业课程设计说明书五子棋C++Word文档下载推荐.docx

上传人:b****6 文档编号:21115174 上传时间:2023-01-27 格式:DOCX 页数:15 大小:23.86KB
下载 相关 举报
完整版毕业课程设计说明书五子棋C++Word文档下载推荐.docx_第1页
第1页 / 共15页
完整版毕业课程设计说明书五子棋C++Word文档下载推荐.docx_第2页
第2页 / 共15页
完整版毕业课程设计说明书五子棋C++Word文档下载推荐.docx_第3页
第3页 / 共15页
完整版毕业课程设计说明书五子棋C++Word文档下载推荐.docx_第4页
第4页 / 共15页
完整版毕业课程设计说明书五子棋C++Word文档下载推荐.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

完整版毕业课程设计说明书五子棋C++Word文档下载推荐.docx

《完整版毕业课程设计说明书五子棋C++Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《完整版毕业课程设计说明书五子棋C++Word文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。

完整版毕业课程设计说明书五子棋C++Word文档下载推荐.docx

课程设计任务书4

一、课程设计题目:

五子棋游戏4

二、目的与要求:

4

1、目的:

2、基本要求:

3、创新要求:

4、写出设计说明书4

三、设计方法和基本原理:

四、设计中涉及到的重要内容:

五、程序设计和调试:

5

六、答辩与评分标准:

引言6

第一章需求分析6

1.1系统概述6

1.1.1概述6

1.2系统运行环境6

1.2.1运行环境6

1.3功能需求描述7

1.3.1功能需求7

第二章总体设计7

2.1开发与设计的总体思想7

2.1.1总体设计思路7

2.1.2屏幕的组成8

2.1.3形状的组成8

2.1.4形状的统一8

第三章概要设计9

3.1系统流程图9

3.2软件功能模块10

3.3系统功能模块10

第四章详细设计11

4.1.界面的设计11

4.1.1总体界面设计11

4.1.2界面棋子的设计11

4.2显示界面的准备13

4.2.1在窗体类中添加存放黑白棋两维数组和背景棋盘、黑棋、白棋位图对象13

4.2.2在窗体构造函数中初始化wb,装入棋盘、黑棋、白棋位图13

4.3显示棋盘和棋子代码13

4.4轮流下子代码14

4.5判断输赢15

4.5.1判断是否白棋胜代码15

4.5.2判断是否黑棋胜代码16

4.5.3判断是否平局代码17

4.6悔棋18

4.7重新开始18

4.8回放功能19

第五章测试分析20

结论和心得体会20

致谢21

参考文献22

课程设计任务书

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

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

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

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

(1)在开始编写程序以前,要完成对系统的分析,画出程序的流程框图。

(2)要求用C++类的思想来完成程序的设计。

(3)要求的程序中至少要定义两个类(例如:

坐标position类,棋子chess类等),类中要有多个属性和方法。

(4)完成的程序界面要美观,能够完成五子棋的基本游戏功能(两人对战)。

在基本要求达到后,进行创新设计,完善与增加游戏的功能,例如悔棋功能。

4、写出设计说明书

按照设计过程写出设计说明书。

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

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

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

4、输赢的判断;

5、游戏结束。

1、对话框应用程序的编写方法及其相关函数;

2、绘图工具的使用方法;

1、完成基本功能:

40分;

2、设计报告及使用说明书:

30分;

3、设置错误或者按照要求改变结果:

15分;

4、回答问题:

15分。

引言

随着经济时代的发展,人们的精神压力越来越大,精神上得不到应有的放松,精神生活得不到极大的满足,随着计算机技术的飞速发展,计算机已逐渐成为人们办公不可或缺的工具,因此及时的开发一些应用于计算机上的小型游戏软件,以供人们在办公的闲暇时间得到充分的休闲娱乐。

而棋类因为其兼具动脑并且娱乐的双重功效,并且十分符合现代式生活,因此已经得到越来越多人的欢迎,为此我们开发一个简单的五子棋游戏,开发此五子棋游戏软件的目的,主要是供办公人员与同事一起休闲娱乐,增进友谊、减轻疲劳,以提高工作效率,创造更多的社会财富,造福人类。

查阅有关程序设计的案例资料,进一步理解程序设计模块化的思想,并利用此思想,根据对程序设计课程的学习,编写一个简单的游戏软件系统。

通过本设计可以加深理解利用程序设计思想开发一个系统的整个流程,提高分析问题、解决问题和实际动手的能力。

在下面的各章中我们将以开发一个五子棋游戏为例,谈谈其开发过程和所涉及到的问题及解决方法。

第一章需求分析

1.1系统概述

1.1.1概述:

本程序是一款棋类益智游戏程序,名为五子棋游戏,是采用C语言编写的可在WINDOWS系统下运行的娱乐游戏平台。

该程序面向广大棋类游戏的爱好者,能够提供方便,实现基本智能控制的游戏环境。

棋盘由若干网格构成,初始状态棋盘上无落子,玩家可以通过鼠标在棋盘的相应位置下子,一方为白色,另一方为黑色,先下的为黑子。

游戏过程中,一旦有一方的棋子在某一方向上先构成连续的五个棋子,不论横、竖或斜,就会在屏幕上显示是谁赢了比赛。

1.2系统运行环境

1.2.1运行环境

(1)硬件环境。

本系统适用于那种Inter386以上计算机,内存容量为128M,应配备键盘、鼠标、显示器等外部设备。

(2)软件环境。

本系统的设计采用VisualC++6.0编写。

在WindowsXPSP2环境下测试通过。

(3)只要计算机具有VisualC++6.0,本游戏软件在Windows平台下都可以运行。

1.3功能需求描述

1.3.1功能需求

五子棋是一种大众喜爱的游戏,其规则简单,变化多端,非常富有趣味性何消遣性,是一种两人对弈的纯策略型棋类游戏,是起源于中国古代的传统黑白棋种之一。

发展于日本,流行于欧美。

容易上手,老少皆宜,而且趣味横生,引人入胜;

不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。

近来随着计算机的快速发展,各种棋类游戏被纷纷请进了电脑,使得那些喜爱下棋,又常常苦于没有工具的棋迷们能随时过足棋瘾。

 

 在这里我也设计了一个较简单的五子棋游戏,这个游戏,不仅可以满足游戏爱好者对游戏的要求,同时我们增加了美观因素,让游戏有一个比较美观的界面,满足我们游戏爱好者的视觉要求,同时有悔棋和重新清盘开始的功能,更加方便了玩家的操作和游戏的有趣性。

第二章总体设计

2.1开发与设计的总体思想

2.1.1总体设计思路

棋盘设计为15*15格,初始状态棋盘的为空,玩家黑子先走,轮流落子,当一方连成五子或下满棋盘时,游戏结束(连成五子的一方获胜,下满棋盘为和棋)。

当游戏一方胜利后显示胜利信息。

从程序表面看,这是一个二维平面图,所以数据用二维数组来表示,数组两个下标可以表示棋盘上的位置,用坐标表示位置,数组元素的值代表棋格上的状态,共有三种情况,分别是0代表空格,1代表黑棋,2代表白棋。

这样程序的主要工作是接收棋手鼠标按键操作,棋手用鼠标控制光标移动,按键表示落子。

一旦接收到按键,说明棋手落子,先判断是否是有效位置,也就是说已经有棋子的位置不能重叠落子。

落子成功后,马上判断该棋盘上是否有相同颜色的棋子连成五子,如果连成五子,则游戏结束,输出相应的信息。

按确认后,自动调用清盘函数,此时清盘重新开始,输家先走。

在游戏中,如果玩家悔棋,则按下悔棋按钮,调用悔棋函数,将刚下的棋去掉,重下一子。

按下重新开始菜单,可清盘使游戏重新开始。

2.1.2屏幕的组成

一个游戏一定要有一个界面供游戏者对游戏控制。

这个界面中要包含让游戏者更加清楚游戏状态的信息,比如,白方要下子时,必须要先看一看所有黑子的排列情况,决定是防守还是进攻,这关系着玩家要如何放置自己的棋子,让整体有个更加的布局,有利于游戏的进行。

此游戏的屏幕由15行15列的网格和菜单栏组成。

2.1.3形状的组成

每一种形状都是由五个棋子组成,比如●●●●●或○○○○○由五个棋子排列而成。

2.1.4形状的统一

棋子的排列,如:

●●●●●等共有8种形状(黑白的形状归为不同的形状)。

如图形状:

黑棋的四种情况:

●●●●●●○○○○●○○○○○○○○●

○○○○○●○○○○○●○○○○○○●○

○○○○○●○○○○○○●○○○○●○○

○○○○○●○○○○○○○●○○●○○○

○○○○○●○○○○○○○○●●○○○○

图2.1

白棋的四种情况:

○○○○○○●●●●○●●●●●●●●○

●●●●●○●●●●●○●●●●●●○●

●●●●●○●●●●●●○●●●●○●●

●●●●●○●●●●●●●○●●○●●●

●●●●●○●●●●●●●●○○●●●●

图2.2

第三章概要设计

3.1系统流程图

系统流程图是对系统的大致流程进行描述,本游戏的系统流程图如下:

图3.1系统流程图

3.2软件功能模块

本游戏的软件功能模块如下:

图3.2软件功能图

3.3系统功能模块

系统功能模块是对系统的大致功能进行描述,本游戏的系统功能模块如下:

图3.3系统功能图

第四章详细设计

根据上面所介绍的本系统的各个模块及其需要实现的功能,下面详细设计如下:

4.1.界面的设计

4.1.1总体界面的设计

程序界面程序在启动运行时,系统会调用在资源视图中导入的围棋背景图片,使程序界面更加友好,在使用上给用户一种直观方便的感觉。

4.1.2界面棋子的设计

在资源视图中导入围棋的黑棋图片、白旗图片,使下子时调用此图片,使游戏更加直观有趣。

同时在窗口视图中添加显示透明色图片函数,是棋子图片更加逼真有趣。

显示透明色图片函数如下所示:

显示透明色函数

voidPutBitmap(CDC*pDC,intx,inty,CBitmap*pBitmap,COLORREFcolor)

{COLORREFoldColor;

CBitmapbmAndBack,bmAndObject,bmAndMem,bmSave;

CDCmemDC,backDC,objectDC,saveDC,pieceDC;

BITMAPbm;

pBitmap->

GetBitmap(&

bm);

intnWidth=bm.bmWidth,nHeight=bm.bmHeight;

memDC.CreateCompatibleDC(pDC);

backDC.CreateCompatibleDC(pDC);

objectDC.CreateCompatibleDC(pDC);

saveDC.CreateCompatibleDC(pDC);

pieceDC.CreateCompatibleDC(pDC);

bmAndBack.CreateBitmap(nWidth,nHeight,1,1,NULL);

bmAndObject.CreateBitmap(nWidth,nHeight,1,1,NULL);

bmAndMem.CreateCompatibleBitmap(pDC,nWidth,nHeight);

bmSave.CreateCompatibleBitmap(pDC,nWidth,nHeight);

backDC.SelectObject(&

bmAndBack);

objectDC.SelectObject(&

bmAndObject);

memDC.SelectObject(&

bmAndMem);

saveDC.SelectObject(&

bmSave);

pieceDC.SelectObject(pBitmap);

saveDC.BitBlt(0,0,nWidth,nHeight,&

pieceDC,0,0,SRCCOPY);

oldColor=pieceDC.SetBkColor(color);

objectDC.BitBlt(0,0,nWidth,nHeight,&

pieceDC.SetBkColor(oldColor);

backDC.BitBlt(0,0,nWidth,nHeight,&

objectDC,0,0,NOTSRCCOPY);

memDC.BitBlt(0,0,nWidth,nHeight,pDC,x,y,SRCCOPY);

memDC.BitBlt(0,0,nWidth,nHeight,&

objectDC,0,0,SRCAND);

pieceDC.BitBlt(0,0,nWidth,nHeight,&

backDC,0,0,SRCAND);

pieceDC,0,0,SRCPAINT);

pDC->

BitBlt(x,y,nWidth,nHeight,&

memDC,0,0,SRCCOPY);

saveDC,0,0,SRCCOPY);

}

4.2.显示界面的准备

4.2.1在窗体类中添加存放黑白棋两维数组和背景棋盘、黑棋、白棋位图对象

intwb[15][15];

CBitmapBoard,Black,White;

背景棋盘、黑棋、白棋位图对象

4.2.2在窗体构造函数中初始化wb,装入棋盘、黑棋、白棋位图

for(inti=0;

i<

15;

i++)

for(intj=0;

j<

j++)

wb[i][j]=0;

零表示空、1表示黑棋、2表示白棋

Board.LoadBitmap(IDB_CHESSBOARD);

装入背景位图

Black.LoadBitmap(IDB_BLACK);

装入黑棋位图

White.LoadBitmap(IDB_WHITE);

装入白棋位图

4.3.显示棋盘和棋子代码

在窗口OnDraw函数中添加显示棋盘和棋子代码

voidCChessView:

:

OnDraw(CDC*pDC)

{

CChessDoc*pDoc=GetDocument();

ASSERT_VALID(pDoc);

CDCmem;

mem.CreateCompatibleDC(pDC);

mem.SelectObject(&

Board);

i++)绘制棋子

j++)

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

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

TODO:

adddrawcodefornativedata(UINTnFlags,CPointpoint)

TODO:

Addyourmessage(nFlags,point);

flag=2;

if((nFlags,point);

flag=1;

if(baisheng(wb)==1)

{this->

MessageBox("

白子胜"

"

完成"

MB_OK);

OnStart();

if(ping(wb)==1)

MessageBox("

平均"

4.5.判断输赢

此功能用来判断当某一方下完子后在八个方向上是否有连成五个子的可能性,若连成五子则执此棋子方获胜;

或者棋盘下满为和局。

4.5.1判断是否白棋胜代码

intCChessView:

baisheng(inta[15][15])

{

inti,j;

判断横着的5个是否都相等

for(i=0;

i++)

for(j=0;

if(a[i][j]==2&

&

a[i][j+1]==2&

a[i][j+2]==2&

a[i][j+3]==2&

a[i][j+4]==2)

return1;

j++)判断竖着的5个是否都相等

a[i+1][j]==2&

a[i+2][j]==2&

a[i+3][j]==2&

a[i+4][j]==2)

i++)判断左斜5个

a[i+1][j+1]==2&

a[i+2][j+2]==2&

a[i+3][j+3]==2&

a[i+4][j+4]==2)

i++)右斜5个

for(j=15;

j>

=0;

j--)

a[i+1][j-1]==2&

a[i+2][j-2]==2&

a[i+3][j-3]==2&

a[i+4][j-4]==2)

return0;

4.5.2判断是否黑棋胜代码

1;

}

{if(a[i][j]==1&

a[i+1][j]==1&

a[i+2][j]==1&

a[i+3][j]==1&

a[i+4][j]==1)

a[i+1][j+1]==1&

a[i+2][j+2]==1&

a[i+3][j+3]==1&

a[i+4][j+4]==1)

a[i+1][j-1]==1&

a[i+2][j-2]==1&

a[i+3][j-3]==1&

a[i+4][j-4]==1)

}

4.5.3判断是否平局代码

ping(inta[15][15])

{

for(inti=0;

for(intj=0;

if(a[i][j]==0)当棋盘全部子都不是0时才能return1,即棋盘已下满

4.6.悔棋

此功能是体现一种人性化,在菜单栏里添加悔棋按钮,当某一方玩家觉得此步走错了,按下悔棋按钮,调用悔棋函数,棋盘上就会自动消除玩家刚下的一步棋,实行悔棋功能。

悔棋代码如下:

On1()

if(jl[i][j]==count)

wb[i][j]=0;

count--;

if(flag==2)

flag=1;

if(flag==1)

flag=2;

OnDraw(GetDC());

Addyourcommandhandlercodehere

4.7.重新开始

在菜单栏里添加重新开始按钮,当按下重新开始按钮时,调用重新开始函数,对棋盘进行清盘处理,然后游戏重新开始。

重新开始代码如下:

On3()

4.8.回放功能

为了进一步观察自己的得失和对手的技术,在菜单栏里添加回放功能按钮,当按下回放功能按钮时,调用回放功能函数,对棋盘进行清盘处理,然后实行回放功能。

回放功能函数如下:

On2()

{for(inti=0;

wb[i][j]=0

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

当前位置:首页 > 幼儿教育 > 育儿知识

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1