c语言程序的设计猜数字游戏报告.docx

上传人:b****5 文档编号:7204678 上传时间:2023-01-21 格式:DOCX 页数:70 大小:211.11KB
下载 相关 举报
c语言程序的设计猜数字游戏报告.docx_第1页
第1页 / 共70页
c语言程序的设计猜数字游戏报告.docx_第2页
第2页 / 共70页
c语言程序的设计猜数字游戏报告.docx_第3页
第3页 / 共70页
c语言程序的设计猜数字游戏报告.docx_第4页
第4页 / 共70页
c语言程序的设计猜数字游戏报告.docx_第5页
第5页 / 共70页
点击查看更多>>
下载资源
资源描述

c语言程序的设计猜数字游戏报告.docx

《c语言程序的设计猜数字游戏报告.docx》由会员分享,可在线阅读,更多相关《c语言程序的设计猜数字游戏报告.docx(70页珍藏版)》请在冰豆网上搜索。

c语言程序的设计猜数字游戏报告.docx

c语言程序的设计猜数字游戏报告

 

《高级语言程序设计》课程设计

 

题目:

猜数字游戏

班级:

09软件工程R3

学生姓名:

谢泽雄

学生学号:

200931000622

指导老师:

姚金涛

提交时间:

2010年5月29日

 

华南农业大学信息(软件)学院

《高级语言程序设计》课程设计评分表

题目

猜数字游戏

专业班级

09软件工程R3

提交日期

2010年05月29日

小组成员

学号

姓名

完成情况

成绩

(指导老师填写)

组长

组员

200931000622

谢泽雄

组员

小组评分表

评分项目

分数

1.实现情况(15):

完成课程设计要求的情况

2.系统分析(10):

对系统的理解及分析的深入程度。

3.系统设计(20):

总体设计、具体设计、数据结构设计等。

4.程序设计(30):

面向对象程序设计方法与编程工具掌握水平。

5.界面设计(15):

界面美观程度、操作方式友好程度等。

6.论文撰写(10):

论文撰写的规范性、合理性等等。

小组总成绩:

教师签名

日期

一、猜数字游戏分析。

4

1.游戏概述。

4

2.系统运行环境。

4

3.功能需求描述。

4

二、总体设计。

5

1.开发和设计的总体思想。

5

2.程序模块结构图。

5

3.模块设计。

5

4.程序流程描述。

6

5.界面设计。

7

6.数据结构设计。

12

三、详细设计。

13

1.文件及函数组成。

13

2.函数设计。

14

四.程序代码。

17

1.start.h。

17

2.start.c。

19

3.mianzone.c。

25

4.gamezone.c。

32

5.refreshline.c。

37

6.reset.c。

40

7.print.c。

40

8.count_num.c。

48

9.intset–del.c。

49

10.imageline.c。

49

五.运行结果。

50

六、调试分析。

51

1.情况1。

51

2.情况2。

51

3.情况3。

51

4.情况4。

52

七、总结。

52

一、猜数字游戏分析

在《猜数字游戏》分析环节中,会对该游戏开发的意图、应用目标、作用范围和有关该软件开发的背景材料进行详细的分析。

《猜数字游戏》作为一个用来进行娱乐、消遣的应用软件,在对其进行需求分析的过程中,需要充分考虑游戏的可用性和娱乐性,联系实际生活,从而得到合理的需求分析的结论。

1.游戏概述

该软件为用户提供一个在Windows系统上运行的猜数字游戏,其使用者只有玩家:

玩家在运行该程序时,可以浏览游戏自最近一次重置数据记录以来,所保存的游戏记录:

分为“排行榜记录”和“成功情况”。

玩家可清空排行榜数据,以重新开始记录游戏成绩。

参加游戏后,游戏将自动刷新游戏记录,重新排行排行榜。

玩家参加游戏前,可浏览帮组功能,了解游戏规则。

2.系统运行环境

(1)硬件环境

◆处理器:

IntelPentium166或更高

◆内存:

32MB以上

◆硬盘空间:

2G以上

◆显卡:

SVGA显示适配器

(2)软件环境

◆操作系统:

Windows98/Me/2000/XP/vista/7

3.功能需求描述

猜数字游戏是用来进行娱乐、消遣活动的应用软件。

可进行游戏功能、浏览游戏记录功能和查看游戏帮助功能。

(1)游戏功能需求如下:

◆进行游戏:

在游戏提示下输入所要猜测的游戏数字,即可完成游戏。

◆重新开始游戏:

在游戏进行中,因不同原因玩家要求输入特定字符串以重新游戏,或放弃游戏且返回主菜单。

◆刷新排行榜:

游戏结束后,若玩家成功猜的答案,玩家要求记录自己的用户名和记录,参与新排行榜的排行。

◆输出答案:

当玩家在规定次数中不能猜出答案,则玩家要求在游戏结束后得知正确答案。

◆计算赢得游戏所用时间:

玩家猜出数字后,要求显示所用时间并记录到排行榜中,以便与其他玩家进行比较和检查自己的提升。

(2)浏览游戏记录功能需求如下:

◆查看排行榜:

游戏结束后,玩家需要查看自己的成绩排位,和了解其他玩家的游戏情况。

在不同情况下,玩家想依据成绩循序、用户名循序、所用时间多少进行输出排行榜。

◆count文件:

玩家需要查看游戏次数与成功次数的记录。

◆清空排行榜:

玩家在一定情况下,要求重新开始记录游戏信息。

◆清空count文件:

玩家在一定情况下,要求重新开始记录游戏信息。

(3)帮组功能需求如下:

◆输出游戏规则:

玩家需要了解游戏规则。

◆游戏说明:

玩家要求更了解游戏的各种功能,以更方便操作程序。

二、总体设计

题目要求

(1)按照分析、设计、编码、调试和测试过程完成应用程序;

(2)学习并使用流程图等工具,并在撰写论文中使用;

(3)程序的各项功能在程序运行时,以菜单方式选择并执行;

(4)要求用户输入数据时,要给出清晰、明确的提示,包括:

输入数据的内容、格

式及结束方式等

(5)所有的信息存储在文件中,并实现文件读写操作。

1.开发和设计的总体思想

猜数字游戏是一个简易的娱乐游戏,开发设计的重点在于排行榜的跟新。

每次游戏结束后都要对排行榜进行跟新,不可漏掉任何一次跟新。

解决这个问题的方法是将跟新的过程单独写成一个可以独立完成得函数,在每次游戏结束后都必须调用该函数。

关于排行榜的输出问题,游戏将把成绩排行在前十名的玩家信息输出,当排行在十名后的玩家的成绩与第十名的成绩相同,则把与第十名的玩家的成绩相同的用户信息一同输出。

对于排行榜的容量问题,游戏采用自动增删的方法进行处理。

当排行榜存有的用户信息多于十五名时,排行榜将自动删除第十六条用户信息。

对菜单的选择判断要用到程序设计思想中的选择结构,对大量数据的处理要用到循环和文件处理等基本技术。

系统采用结构化的设计方法进行设计,采用C语言进行开发。

2.程序模块结构图

依据需求分析结果,猜数字游戏的程序可分为3个模块:

游戏区、游戏记录和帮助。

程序模块结构图如图1所示。

图1程序模块功能图

3.模块设计

(1)游戏区模块

该模块为进入游戏,玩家进入后可按照游戏提示完成游戏,和刷新游戏记录、排行榜。

(2)游戏记录模块

游戏记录模块的作用是为了保障系统的安全性和系统使用人员角色的区分。

该模块需要从输入设备获取用户输入的用户名和密码,判断是否为合法身份,其次要判断用户权限,从而决定其能使用的系统功能,其模块功能图如图2所示。

游戏记录

排行榜

显示count文件信息

按排名浏览排行榜

count文件

按姓名浏览排行榜

按用时浏览排行榜

清空排行榜

清空count文件

图2游戏记录模块功能图

(3)帮助模块

该模块主要实现常规的管理功能,如投票人的初始化,即创建投票人文件、投票人信息的增加、删除、修改和查询等。

该模块主要用结构体类型的数组和文件的读写来完成对大量数据的管理操作,其功能图如图3所示。

图3帮助模块功能图

4.程序流程描述

程序的主体处理流程如图8所示。

 

 

图4程序流程图

5.界面设计

应遵循简洁美观、方便使用的原则。

(1)主菜单界面设计

充分考虑界面易于操作的系统需求,其他的的功能调用采用类似于菜单的功能选择方式实现。

用printf语句构造简单的文字界面,具体功能选择界面设计效果如图5所示。

图5主菜单界面设计效果图

(2)游戏区界面设计

游戏区界面设计注重界面的简洁性,要求玩家在游戏时可在游戏提示下完成游戏,重新游戏,放弃游戏回到主菜单,游戏后刷新排行榜,浏览排行榜或继续游戏。

具体设计效果如组图6所示。

图6.1

图6.2

图6.3

组图6游戏区界面设计效果图

(3)数据记录菜单界面与其他菜单界面设计

充分考虑界面易于操作的系统需求,其他的的功能调用采用类似于菜单的功能选择方式实现。

用printf语句构造简单的文字界面,具体菜单选择界面设计效果如图7~图12所示。

图7数据记录菜单界面设计效果图

图8排行榜菜单界面设计效果图

图9重置排行榜菜单界面设计效果图

图10count文件菜单界面设计效果图

图11重置count文件菜单界面设计效果图

图12帮助菜单界面设计效果图

(4)排行榜输出界面、显示count文件界面、游戏规矩和游戏说明的输出界面设计

这些界面设计主要考虑玩家在浏览信息的清晰和易读性。

以防数据输出的排版长度大于窗口的长度,在输出所有数据后使光标回到窗口的最上端,利于玩家从数据的起始端开始浏览数据。

排行榜的输出中,将名次、用时、成绩(次数)和用玩家姓名列表显示。

具体排行榜输出界面设计效果如图13~图15所示。

图13按排名顺序输出排行榜界面设计效果图

图14按姓名次序输出排行榜界面设计效果图

图15按所用时间排序输出排行榜界面设计效果图

count文件的输出界面设计效果如图16所示。

图16count文件的输出界面设计效果图

游戏规则的输出界面设计效果如图17所示。

图17游戏规则界面设计效果图

游戏说明的输出界面设计效果如组图18所示。

图18.1

图18.2

图18.3

组图18游戏说明的输出界面设计效果图

(5)退出游戏界面设计

具体退出游戏界面设计效果如图19所示。

图19退出游戏界面设计效果图

6.数据结构设计

(1)玩家用户数据结构

描述玩家用户的用户名、猜出数字所用次数和游戏所用时间,作为一整条记录存放在文件中。

typedefstructa

{

charname[22];//玩家用户名

intt;//猜数字所用次数

intsj;//游戏所用时间

structa*next;

}player;

(2)“胜利”信息数据结构

记录玩家赢得游戏次数与猜正确平均所需次数,作为一整条记录存放在文件中。

structwinave

{

intwintime;//总共赢的次数

floatave;//才正确平均所用次数

};

三、详细设计

基于系统需求分析与系统总体设计的结果,本系统采用VisaulC++6.0实现各模块的功能,下面阐述系统的详细设计和实现过程。

1.文件及函数组成

源文件

函数名或其他成分

功能

start.h

结构声明

结构声明

库函数及函数原型声明

start.c

main

主函数

mainmenu

主菜单

menu2

游戏记录菜单

phbmenu

浏览排行榜菜单

qkmenu

清空排行榜菜单

countmenu

浏览count文件菜单

rscountmenu

重置count文件菜单

menu3

帮助菜单

move

“到达”函数

rulemenu

游戏规则

explainmenu

游戏说明

endmenu

结束菜单

mianzone.c

main1

被主函数调用,用以开始进入游戏

liulan

进入浏览排行榜功能

paihangbang

进入排行榜功能

qk

清空排行榜功能

qingkong

进入重置排行榜功能

pn

进入重置排行榜和count文件功能

countwork

进入count文件浏览功能

printcount

输出count文件数据函数

st

进入重置count文件

setcount

进入清空count文件功能

sc

进入重置count文件和排行榜

help

进入帮助功能

gamezone.c

checkcount

检查count的情况,且读取count中数据

closecount

更新count中的数据

creat

生成游戏所需猜的数字

checknum

检查输入的数字是否符合规定

Time_get

计算完成游戏所用时间

gamezone

进行游戏

refreshline.c

refresh

更新排行榜

note

记录或输出记录起始时间

reset.c

resetline

清空或重置排行榜

resetcount

重置或清空count.txt文件

print.c

printline

按成绩输出排行榜

printname

按姓名输出排行榜

printtime

按用时输出排行榜

count_num.c

countnum

计算及输出平均成功率

intset–del.c

inset

插入新纪录链表

del

删除链表中的第十六个记录

imageline.c

pl;pl0;

2.函数设计

(1)头部文件

文件名称:

start.h

功能:

声明函数原型,宏定义包含头文件及定义数据结构。

要求:

完成所需函数的原型声明。

(2)进入游戏函数

函数原型:

main()

功能:

调用mian1函数

参数:

void

返回值:

void

要求:

开始程序,使游戏顺利开始。

(3)进入游戏函数

函数原型:

voidmain1()

功能:

进入游戏主菜单

参数:

void

返回值:

void

要求:

如果游戏者没有进行等级设定,则默认初级进行游戏。

(4)菜单函数

函数原型:

voidmainmenu()

主菜单

voidmenu2()

游戏记录菜单

voidphbmenu()

浏览排行榜菜单

voidqkmenu()

清空排行榜菜单

voidcountmenu()

浏览count文件菜单

voidrscountmenu()

重置count文件菜单

voidmenu3()

帮助菜单函数

功能:

输出菜单选项

参数:

void

返回值:

void

要求:

明确显示菜单选项,使玩家准确进入相应的游戏功能。

(5)“到达”函数

函数原型:

voidmove(inti,intj)

功能:

使光标回到窗口的特定位置。

参数:

inti和intj:

特定位置的坐标

返回值:

void

要求:

实现程序所需功能。

(6)游戏规则和游戏说明函数

函数原型:

voidrulemenu()

游戏规则函数

voidexplainmenu()

游戏说明函数

功能:

输出游戏规则和游戏说明

参数:

void

返回值:

void

要求:

使玩家清楚游戏的玩法,是玩家可以了解本程序的功能。

(7)结束函数

函数原型:

voidendmenu()

功能:

输出结束界面

参数:

void

返回值:

void

要求:

感谢玩家使用本软件。

(8)检查count函数

函数原型:

voidcheckcount(charcount[])

功能:

检查count的情况,且读取count中数据

参数:

charcount[]:

需要读取的数组

返回值:

void

要求:

检查count的情况,若存在,则读取其中的数据;若不存在,则重置count文件。

(9)更新count函数

函数原型:

voidclosecount(charcount[])

功能:

将count[]数组中的数据存储到

参数:

charcount[]:

需要存储到文件的数组

返回值:

void

要求:

更新count数据。

(10)生成随机数函数

函数原型:

voidcreat(charkey[])

功能:

生成游戏所需猜的数字

参数:

charkey[]:

存储答案的数组

返回值:

void

要求:

生成4个不重复的数字。

(11)检查输入函数

函数原型:

voidchecknum(charguess[])

功能:

检查输入的数字是否符合规定

参数:

charguess[]:

需检查的玩家猜测的数组

返回值:

void

要求:

检查输入的数字是否符合规定,不合规定的要求玩家重新输入;若和规则的,检查与答案的不同,输出提示。

(12)算时函数

函数原型:

intTime_getchecknum(time_tfirst,time_tsecond)

功能:

计算完成游戏所用时间

参数:

time_tfirst,time_tsecond:

游戏开始的时间与游戏结束的时间

返回值:

inta:

second与first相差的秒数

要求:

计算second与first相差的秒数并返回。

(13)游戏函数

函数原型:

voidgamezone()

功能:

进行游戏

参数:

void;

返回值:

void;

要求:

顺利进行游戏。

(14)更新排行榜函数

函数原型:

voidrefresh(charname[],intt,intsj)

功能:

更新排行榜

参数:

charname[],intt,intsj:

需要插入的玩家信息(玩家姓名,所用次数,所用时间)

返回值:

void;

要求:

若排行榜不存在,则新建排行榜;若存在,则将新加入的信息插入到排行榜中。

(15)记录函数

函数原型:

voidnote(inti)

功能:

记录或输出记录起始时间

参数:

inti:

所需进行的功能

返回值:

void;

要求:

i=1

(2)时,输出排行榜(count文件)记录起始时间;i=3(4)时,记录排行榜(count文件)重置时间。

(16)重置排行榜函数

函数原型:

FILE*resetline(FINE*fp)

功能:

清空或重置排行榜

参数:

FILE*fp:

重置文件的指针

返回值:

FILE*fp;用“r”打开的处理后的排行榜文件

要求:

若排行榜不存在,新建排行榜;若存在,则清空排行榜。

(17)重置count文件函数

函数原型:

voidresetcount(void)

功能:

重置或清空count.txt文件

参数:

void

返回值:

void

要求:

若count文件不存在,新建count文件;若存在,则清空count文件。

(18)按成绩输出排行榜函数

函数原型:

voidprintline(void)

功能:

按成绩先后输出排行榜

参数:

void

返回值:

void

要求:

若排行榜不存在,新建排行榜;若存在,则按成绩先后输出排行榜。

(19)按姓名输出排行榜函数

函数原型:

voidprintline(void)

功能:

按姓名顺序输出排行榜

参数:

void

返回值:

void

要求:

若排行榜不存在,新建排行榜;若存在,则按姓名顺序输出排行榜。

(20)按用时输出排行榜函数

函数原型:

voidprintline(void)

功能:

按用时多少输出排行榜

参数:

void

返回值:

void

要求:

若排行榜不存在,新建排行榜;若存在,则按用时多少输出排行榜。

(21)计算及输出平均成功率函数

函数原型:

voidcountnum(void)

功能:

计算及输出平均成功率

参数:

void

返回值:

void

要求:

若count文件不存在,新建count;若存在,则计算及输出平均成功率。

(22)插入链表函数

函数原型:

player*inset(player*head,player*stud)

功能:

插入新纪录链表

参数:

player*head,player*stud:

需要被插入的链表的头指针和需要插入表

返回值:

player*head:

处理后的链表

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

当前位置:首页 > 农林牧渔 > 林学

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

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