人机猜数字游戏课程设计报告Word文档下载推荐.docx

上传人:b****4 文档编号:13976800 上传时间:2022-10-16 格式:DOCX 页数:9 大小:193.55KB
下载 相关 举报
人机猜数字游戏课程设计报告Word文档下载推荐.docx_第1页
第1页 / 共9页
人机猜数字游戏课程设计报告Word文档下载推荐.docx_第2页
第2页 / 共9页
人机猜数字游戏课程设计报告Word文档下载推荐.docx_第3页
第3页 / 共9页
人机猜数字游戏课程设计报告Word文档下载推荐.docx_第4页
第4页 / 共9页
人机猜数字游戏课程设计报告Word文档下载推荐.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

人机猜数字游戏课程设计报告Word文档下载推荐.docx

《人机猜数字游戏课程设计报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《人机猜数字游戏课程设计报告Word文档下载推荐.docx(9页珍藏版)》请在冰豆网上搜索。

人机猜数字游戏课程设计报告Word文档下载推荐.docx

六、测试结果......................................7

七、附录:

带注释源程序............................9

八、参考书目......................................11

一、问题分析和任务定义

问题分析:

问题本身清楚明了。

判断相同位置上的数字是否相同不需要特殊的算法。

只截取相同位置上的数字进行比较即可。

但在判断几位数字正确时,则应当注意:

计算机所想的是“1123”,而人所猜的是“1576”,则正确的数字只有1位。

所以我们再用到循环结构,判断结构,余数比较的时候要注意重复,所以应该死有标志变量。

程序中截取计算机所想的数的每位数字与人所猜的数字按位比较。

若有两位数字相同,则要记信所猜中数字的位置,使该位数字只能与一位对应的数字“相同”。

当截取下一位数字进行比较时,就不应再与上述位置上的数字进行比较,以避免所猜的数中的一位与对应数中多位数字“相同”的错误情况。

猜数字处理系统,包括三个模块,和一个主函数。

三个模块分别是电脑产生一个正确的随机数,读取玩家正确的四位数,电脑与玩家数字的比较。

其中脑产随机数函数和主函数为整型,其它都无返回类型。

主函数通过在不断循环使用三大模块来实现。

该程序采用面向对象的思想,来处理函数之间的调用,实现这个人机猜数字游戏。

任务定义:

可知,整个程序的设计实现大致分为三个部分,

(1)菜单,在用户界面上产生指示,让用户知道如何来参与这个游戏。

(2)产生随机数部分,利用随机函数来产生随机数,即计算机给的数。

(3)猜数对比输出部分,程序的核心部分,运用for循环,if判断语句,来提示参与者猜对了几个数,位置对了几个。

二、概要设计和数据结构的选择

1、使用for循环结构,if判断结构,比较余数,完成逐个比较,从而输出猜对了几个数,位置对了几个

2、运用子函数,指针传递地址,使主函数看起来更简便

3、加入判断,返回主函数,是否继续。

三、详细设计和编码

(一)算法及说明

计算机“想”了一个“1234”请人猜,可能的提示如下:

人猜的整数计算机判断有几个数字正确有几个位置正确

112221

334421

331230

412340

124342

123444

游戏结束

如以上分析,本次课题是猜数字游戏的设计与实现。

主要是通过C++语言开发,实现《猜数字》游戏中的出数字方,在VC环境中实现了由电脑随机产生一个数字不重复的四位数(最高位不为零),并将所猜的数与它自动产生的数进行比较,若猜得不对并作出提示:

"

mAnB"

,A代表位置正确数字也正确,B代表数字正确但位置不正确。

m代表A的个数,n代表B的个数.在每次输入数字后,显示相应的提示信息,直到玩家猜对为止.这次课设是要求用C++编写程序,实现数字之间的相互比较,让玩家找出电脑写的四位数字,而玩家在找出四位数字中,电脑需要给出玩家一些提示信息,用以帮助玩家找出答案。

对猜一个各个位数不等的四位数,电脑需要在程序刚运行时,确定一个随机的四位数,且各个位数不相等。

而在玩家输入数字时,也需要检验玩家输入的数字是否满足条件,即一个各个位数不重复的四位数。

只有玩家输入正确的数字后,电脑才能进行比较数字的运算,如果玩家输入的数字和电脑的不相等,输出提示信息,并应从新读取玩家的数字进行判断,直到玩家放弃猜数字或数字猜对为止。

(二)程序流程图

图2.1流程图

(三)、函数及简介

VoidPanduan(intg,intz,int*k,int*j):

接收用户输入的数字和正确的数字,进行判断,并把猜对的数的个数和位置保存到变量*k,*j中。

四、上机调试

我们编写的程序不可能一次就成功的,要经过反复的调试,但错误是不可避免,而且高,编译器一般不报错,往往要费一番周折才能解决。

经验、习惯和对C语言深刻理解成为彻底避免这类问题的关键因素。

对于此次的课程设计,从一开始的写程序到最终的成功运行,虽然这个程序并不像其他多样化的管理系统那样复杂,但是在编写和上机调试过程中,仍然出现不少问题。

子函数里的错误:

voidpanduan(intg,intz,int*k,int*j)

{

inta,b[4],i,t,m,s;

a=z;

*j=0;

*k=0;

b[0]=b[1]=b[2]=b[3]=0;

for(i=1;

i<

5;

i++)

{

s=g;

m=1;

for(t=1;

t<

t++)

{

if(a%10==s%10)

{

if(m&

&

t!

=b[0]&

=b[1]&

=b[2]&

=b[3])

{

*j+=1;

m=0;

b[j-1]=t;

}

if(i==t)*k+=1;

}

s/=10;

}

a/=10;

}

}

现在从中发现错误,在b[j-1]=t中,j是原量,而*j是指针传递原变量,并读写,所以在这里有这个错误,改正即可。

五、用户使用说明

首先运行该游戏,进入开始界面。

计算机会提醒你:

我有一个数请你猜一猜,然后请输入一个四位数。

计算机会提醒你,猜对了几个数,并且有几个数位置也是正确的。

然后你在判断哪几个或哪一个是对的,位置也是对的。

后面的猜数也是考验你的眼里与脑力,根据计算机的提示,可以采用逐个比较。

如:

你猜了一个数字:

1234,;

计算机提示:

有2个数是对的,并且有0个位置也是对的。

然后你判断,1、2可能是对的;

3、4也有可能是对的;

所以你可以先尝试着,如1200或3400看到底哪两个是正确的,当然0也可能是对的,所以需要再一次验证。

当然我们每输入一个字都需要按一下回车,然后看到提示再按回车,进行下一步。

这样直到猜出正确的数字,恭喜你!

然后计算机会提示:

again?

Y/N,你可以选择Y,接着游戏,也可以选择N进行结束。

六、测试结果

1、调试分析

输入的游戏玩家人数太多时屏幕显示不能控制为一页一页显示,所以为了方便起见,不要输入太多记录,十七左右为最佳。

刚开始执行输入函数,按数字顺序输入输完后执行显示功能,数字、字母的位置显示不对,试着在其中增加一些语句,希望能把所需结果按正常顺序显示,但暂时没有成功,最后在老师的帮助下,所需结果能按正常顺序输出了。

在前面对猜数字游戏进行需求分析的过程中,已经初步明确了系统的主要功能模块和用户需求,下面将在总体设计的过程中,给出猜数字游戏的模块结构、流程描述以及界面布局,并使得系统的总体设计符合软件工程中总体设计的基本原则。

开发与设计的总体思想猜数字游戏是一种大众娱乐游,开发与设计的重点在于游戏供玩家进行猜数字游戏的原始数字的产生和用户每进行猜数字操作之后的游戏提示,这方面的规则设计往往决定了软件运行的正确性和质量。

同时,要谨调试失败的原因以免下次犯同类错误

2、测试运行结果截屏及说明

游戏开始界面,可正常工作运行;

图6.1测试结果

然后游戏者可以猜一个四位数,看计算机给出的提示继续猜;

图6.2测试结果

当四位数被完全参与者猜出时,计算机会告诉你猜了多少次,并且会问你,要不要再一次。

图6.3测试结果

带注释源程序

#include<

stdio.h>

time.h>

stdlib.h>

voidpanduan(intg,intz,int*k,int*j)//通过k的地址,指针对原变量k、j进行读写

i++)//i:

原数中的第i位数。

个位为第一位,千位为第4位

t++)//人所猜数

if(a%10==s%10)//余数比较法,逐个比较{

b[*j-1]=t;

//记录相同数字时,该数字在所猜数字中的位置

}

//位置相同加一

//从各位到十位,百位,千位,小数点除去

intmain()

intz,count,g,s,j,k;

//j:

数字正确的位数k:

位置正确的数count:

一共猜多少次

charag;

//定义字符

srand((unsignedint)time(NULL));

//时间随机种子

z=rand()%10000;

//产生随机数

printf("

我有一个四位数的数字,请猜一猜!

\n"

);

for(count=1;

;

count++)

{

printf("

请输入一个四位数:

scanf("

%d"

&

g);

//请人猜一猜

panduan(g,z,&

k,&

j);

//传递k的地址

你猜对了%d个数字,\n"

j);

并且在猜对的数字中有%d个位置也是正确的.\n"

k);

if(k==4)break;

}

恭喜你,猜对了!

你用了%d次猜出了这个数.\n"

count);

Y/N"

scanf("

%c"

ag);

if(ag=='

y'

||ag=='

Y'

)returnmain();

//返回主函数

return0;

八、参考书目

[1]、郭翠英编著《C语言课程设计案例精编》北京:

中国水利水电出版社2008

[2]、黄明,梁旭,万洪莉.C语言课程设计.北京:

电子工业出版社.2006.6

[3]、谭浩强《C语言习题集与上机指导》高等教育出版社2003年2月版

[4]、谭浩强主编《C语言程序设计试题汇编》清华大学出版社2003年4月版

[5]、熊锡义主编《C语言程序设计案例教程》大连理工大学出版社09年3月版

[6]、姚合生等《C语言程序设计》-北京:

清华大学出版社(高等学校计算机教材—面向应用与实践系列)2006

[7]、刘成等《C语言程序设计实验指导与习题集》.北京:

中国铁道出版社,2005年4月版

........忽略此处.......

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

当前位置:首页 > 解决方案 > 学习计划

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

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