C课程设计说明书Word文档下载推荐.docx

上传人:b****5 文档编号:17231292 上传时间:2022-11-29 格式:DOCX 页数:18 大小:62.68KB
下载 相关 举报
C课程设计说明书Word文档下载推荐.docx_第1页
第1页 / 共18页
C课程设计说明书Word文档下载推荐.docx_第2页
第2页 / 共18页
C课程设计说明书Word文档下载推荐.docx_第3页
第3页 / 共18页
C课程设计说明书Word文档下载推荐.docx_第4页
第4页 / 共18页
C课程设计说明书Word文档下载推荐.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

C课程设计说明书Word文档下载推荐.docx

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

C课程设计说明书Word文档下载推荐.docx

1

1、目的:

2、基本要求:

 3、创新要求:

4、写出设计说明书1

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

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

五、程序设计和调试:

2

六、答辩与评分标准:

1前言3

2需求分析3

2.1系统概述3

2.1.1概述3

2.2系统运行环境3

2.2.1运行环境3

 2.3功能需求描述3

2.3.1功能需求3

3总体设计4

3.1开发与设计的总体思想4

3.1.1屏幕的组成4

3.1.2形状的组成4

3.1.3形状的统一4

4概要设计5

4.1系统流程图5

4.2系统功能模块5

5详细设计6

5.1.界面的设计6

5.2游戏中棋盘的形成7

5.3游戏下子功能代码8

5.4判断功能代码10

5.5设置项目中的功能代码12

 5.6悔棋功能代码12

5.7回放功能代码14

6测试分析15

7心得体会15

参考文献16

致谢17

课程设计任务书

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

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

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

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

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

 

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

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

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

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

3、创新要求:

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

4、写出设计说明书

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

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

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

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

4、输赢的判断;

5、游戏结束。

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

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

1、完成基本功能:

40分;

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

30分;

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

15分;

4、回答问题:

15分。

 1前言

随着社会发展,人类的生产生活越来越离不开信息。

谁拥有了更多更有效的信息,谁就将在竞争中处于有利地位。

信息产业正在成为一个国家的支柱。

只有拥有了先进的数据库技术,才能有效地管理好浩如烟海的数据,并从中提取出对自己有用的信息来加以利用。

作为计算机应用的一部分,使用计算机对信息进行管理,具有手工管理所无法比拟的优点。

例如:

检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。

这些优点能够极大地提高管理的效率,也是正规化管理与世界接轨的重要条件。

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

2需求分析

2.1系统概述

2.1.1概述

 该游戏软件在Windows系统为玩家提供五子棋游戏两人对战的基本功能,玩家可以通过鼠标在棋盘的相应位置下子,一方为白色,另一方为黑色,先下的为黑子(主场)。

游戏过程中,只要有一人先连成五个棋子,不论横、竖或斜,就会在屏幕上显示是谁赢了比赛,也可以是平局收场,从而可以进行下一场比赛。

在比赛过程中,如果一方需要悔棋,先得通过对手的同意才可以。

在右下方,有黑子和白子,且还有“0”和“1”,“1”表示轮到此色子下了。

2.2系统运行环境

2.2.1运行环境

(1)硬件环境。

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

(2)软件环境。

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

在WindowsXPSP2环境下 测试通过。

(3)本游戏软件在Windows平台下都可以运行。

2.3功能需求描述

2.3.1功能需求

这是一次新的尝试,也是一次比较成功的设计,其算法与程序结构足以让人满意。

这个游戏,不仅可以满足游戏爱好者对游戏的要求,同时我们增加了美观因素,让游戏有一个比较美观的界面,满足我们游戏爱好者的视觉要求,回放效果更是让玩家欣赏自己是如何赢得或输的。

3总体设计

3.1开发与设计的总体思想

3.1.1屏幕的组成

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

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

屏幕由15行15列的网格组成;

其中行的眉头上标有字母A、B、C…O;

列的方向标有数字1、2、3……15。

菜单栏中的组成部分:

3.1.2形状的组成

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

 3.1.3形状的统一

妻子的排列,如:

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

如图形状:

黑棋的四种情况:

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

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

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

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

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

图3.1

白棋的四种情况:

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

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

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

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

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

图3.2

4概要设计

4.1系统流程图

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

图4.1功能模块

图4.1系统流程图

4.2系统功能模块

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

图4.2系统功能模块

5详细设计

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

5.1.界面的设计

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

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

5.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);

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);

//获得窗口矩形区域

BitBlt(0,0,rect.Width(),rect.Height(),&

qp,0,0,SRCCOPY);

//绘图

for(inti=0;

i<

15;

i++)

for(intj=0;

j<

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)

qzb,0,0,SRCCOPY);

 }

}

}

5.3游戏下子功能代码

intqz[15][15];

//棋子的二维数组

OnLButtonDown(UINTnFlags,CPointpoint)

Addyourmessagehandlercodehereand/orcalldefault

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

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

if(i<

15&

&

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)

\n恭喜你,白子赢了!

 }

if((count==225)&

(hs!

=5)&

(ss!

(ps!

(ns!

=5))

MessageBox("

你俩都很棒!

\n平手!

"

请握手言和"

MB_OK);

}

CView:

OnLButtonDown(nFlags,point);

5.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;

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

 hsy=i-1;

return(hsy+hsz+1);

GetLeftSlanting()//左斜方向

ys=zx=0;

(x-i>

=0)&

(y+i<

=14);

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

ys=i-1;

(x+i<

=14)&

(y-i>

=0);

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

zx=i-1;

return(ys+zx+1);

GetRightSlanting()//右斜方向

 {

yx=zs=0;

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

zs=i-1;

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

yx=i-1;

return(yx+zs+1);

GetVertical()//垂直方向

sss=ssx=0;

x-i>

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

sss=i-1;

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

ssx=i-1;

 return(sss+ssx+1);

5.5设置项目中的功能代码

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

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

OnStart()

Addyourcommandhandlercodehere

qz[i][j]=0;

OnDraw(GetDC());

5.6悔棋功能代码

 此功能是体现一种人性化,当某一方玩家觉得此步走错了,向对方提出悔棋请求。

当对方同意后,棋盘上会自动消除玩家刚下的一步棋。

程序的具体实现部分如程序清单如下所示。

OnBlackAgree()//黑方同意

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

qz[i][j]=0;

count--;

OnBlackNoAgree()//黑方不同意

MessageBox("

SOORY\n我不同意!

 }

OnBlackStone()//黑方提出悔棋请求

黑棋提出悔棋请求!

\n白棋同意吗?

OnWhiteAgree()//白方同意

 for(intj=0;

OnWhiteNoAgree()//白方不同意

不好意思啦!

\n不同意!

 voidCCk19View:

OnWhiteStone()//白方提出悔棋请求

白棋提出悔棋请求!

\n黑气同意吗?

5.7回放功能代码

为了进一步观察自己的得失和对手的技术,这一功能是一个比较好的平台,具体代码如下:

classChess//棋子chess类

 public:

Chess(){i=0;

j=0;

k=1;

voidRemember();

//记住棋子的位置及次序

inti,j,k;

voidChess:

Remember()

{

for(k=1;

k<

=count;

k++)

for(i=0;

for(j=0;

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

cp[k].x=i;

cp[k].y=j;

cp[k].n=qz[i][j];

for(j=0;

下面是实现回放的具体函数:

OnReplay()

Chessch;

ch.Remember();

SetTimer(1,1000,NULL);

inti=1;

OnTimer(UINTnIDEvent)

qz[cp[i].x][cp[i].y]=cp[i].n;

i++;

 if(i>

count)KillTimer

(1);

OnTimer(nIDEvent);

6测试分析

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

如利用鼠标进行下棋,悔棋,回放,用键盘输入姓名,在不需要此游戏界面在屏幕上显示时。

当结束游戏时,会自动弹出一个对话框。

7心得体会

经过一个多星期的设计和开发,系统基本开发完毕。

在本次课程设计中困难遇到不少,比如重新开始,弹出自己创建的对话框,回放等。

由于设计时间较短,所以该系统还有许多不尽如人意的地方,如输入姓名的对话框不够美观、回放不能重复两次等多方面问题。

在这次系统开发的过程中,我深深体会到了做一个系统,首先进行需求分析的重要性,了解了一个系统的制作,从功能分析到功能模块分析、与其他系统的关系,这些都有待以后进一步改进。

通过实践对于我以后的学习是一笔不

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

当前位置:首页 > 表格模板 > 表格类模板

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

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