实训一 用C语言设计一个猜数字游戏

温柔似野鬼°
890次浏览
2021年01月01日 03:04
最佳经验
本文由作者推荐

把路由器当交换机用-学生自我介绍范文

2021年1月1日发(作者:解遵仁)


实训一 用C语言设计一个猜数字游戏
一、实训准备工作及要求:
1、请同学们自由组合,班长负责统计分组名单(电子稿)。
2、每组8人,组长1人,组长负责该组的任务分工及全面督促任务完成。
具体要求如下:
①两人负责全面理解此项目程序各模块的功能,做出相关结论,留做ppt备用。

②两人负责运行程序,提供(拷贝)4次正确猜对数字的运行界面,留做ppt备用

③两人负责制件ppt,ppt内容至少应包括:项目名称、团队成员组成及分工、选题
要求、设计思 想、流程图、程序清单(用超链接方法),程序功能模块介绍,运行结果
展示,自评说明(程序设计的优 点及不足)等,各组可根据具体情况适当增加内容。

④两人负责ppt汇报主讲,汇报结束 后,ppt上交给老师(如感觉不满意,可对其完
善后再上交)

⑤在进行ppt汇 报时,各组要随时面临老师或同学的提问,团队所有成员要做好回
答或补充的准备。
二、实训目的:
1、通过编程实例重点掌握数组、函数、程序结构设计等知识点
2、熟练掌握VC++6.0的编程及调试的操作方法。
三、实训内容:
1、选题背景:
这是一个模仿“文曲星”中猜数字游戏的小程序,其主要是随机生成4个不同 的
数字,然后由玩家键入数字,同时系统给予一定的提示帮助,当输入错误次数超过最
大次数时 游戏结束。
2、设计思想:

猜数字游戏是一个比较长见的游戏,其最基本的是生 成几个不同的随机数,当玩家
在实现过程中,应用到了时间函数来生成随机数并与10取余来生成一位随 机数,
不能在规定次数内输入正确时系统自动结束游戏,并给出正确答案。并询问是否继续。
然后再自定义一个函数来判断所生成随机数是否有重复,当无重复时做为机给定答案。
如果所生成的数字 有重复则重新生成。
3、程序流程图参考:

1






主函数













2游戏说明



清屏输出说明
并返回


游戏说明及选项




游戏选项,非1,2,3为无
效输入。



1开始游戏

并生成4个一
位随机数




3退出询问



选择是,
结束程序



选择否,
返回



玩家输入

判断是输入是否有重复数字

并给予一定提示





在规定次数内猜对,输出你
猜对了。

询问‘是’继续,‘否’退出。


如超过最大回答次数,给出


正确答案。

询问‘是’继续,‘否’退出







选择否
退出



选择否
退出



选择是
返回

选择是
返回





程序结束







2


4、程序清单参考
#include
#include
#include
#define MANY 4
#define TIME_OUT 8
*定义变量及函数*
int a,b,u
void game();
void ab(int answer[],int guess[]);
void same(int num[]);
*主目录*
void menu()
{
char choice,ch
do
{
do
{
system(
printf(简单猜数字nnnn
printf(开始游戏nn
printf(使用说明nn
printf(退出nn
printf(请输入(1-3):
fflush(stdin);
choice=getchar();
}
while(choice!='1'&&choice!='2'&&choice!='3');

switch(choice)
{
case '1' :
{
game();
break
}
case '2' :
{
system(
printf(欢迎使用本程序nnn
printf(游戏说明:输 入%d位数字,输入后会有提示XaYb,X表示有几个数字与答案
数字相同且位置相同.n

3


printf(表示有几位数字与答案数字相同但位置不正确。n
printf(例如:答案数字是5764,如果输入5481,则会提示1a1b。n
printf(按任意键返回主目录……n
fflush(stdin);
ch=getchar();
break
}
case '3' :
{
printf(确定要退出吗?(yn):
fflush(stdin);
ch=getchar();
if(ch=='y'||ch=='Y')exit(0);
else continue
}
}
}
while(1);
}
*游戏部分*
void game()
{
int guess[MANY],answer[MANY];
int times,i,m,j ;
int key;
time_t t
char wantplay,temp
srand((unsigned)time(&t));
do
{
*生成MANY个随机数*
do
{
u=0 ;
for(i=0;i guess[i]=rand()%10
same(guess);
}
while(u);
printf(请输入%d位不相同的数:n
for(times=1;times<=TIME_OUT+1;times++)
{
*超过限定数次*
if(times==(TIME_OUT+1))

4


{
printf(真确答案是:
for(m=0;m printf(猜了%d次都没猜中
break
}
printf(第%d次:
*玩家输入*
fflush(stdin);
for(j=0;j {
temp=getchar();
answer[j]=temp-48; *temp是char型*
}
*检查输入有没有重复*
u=0
same(answer);
if(u)
{
printf(你输入的数字有重复,请重新输入n
continue
}
ab(answer,guess); *判断输入数字正确的个数*
if(a==MANY)
{
printf(恭喜!你猜对了
break
}
else printf(
}
printf(还想玩吗?(yn):
fflush(stdin);
wantplay=getchar();
if(wantplay=='y'||wantplay=='Y')
{
system(
continue
}
else menu();
}
while(wantplay=='y'||wantplay=='Y');
}
*判断输入的数或生成的数有没有重复的函数*
void same(int num[])

5


{
int i,j
for(i=0;i for(j=i+1;j if(num[i]==num[j])
u=1
}
*提示XaYb的函数*
void ab(int answer[],int guess[])
{
int i,j
a=b=0
for(i=0;i for(j=0;j if(answer[i]==guess[j])
if(i==j)a++;
else b++;
}
*主函数*
void main()
{
menu();
}
四、实训效果评价:
嵌入式C语言编程实训评分标准
项目名称
指标
PPt
制作情况
(40分)
PPt
2.内容全面、准确。
3.自评客观、恰当
制作精美
1.汇报条理清晰、语言流畅、时间分配得当
汇报情况 2.提问回答准确、对程序有新思相新创意
(40分)
3.组员团结协作气氛好

总体印象
1.组长起带头作用,能充分调动组员的积极性,有领袖风范。
(30分)
2.组员团结,气氛融洽,能积极配合完成任务。
评委


6

评分要点
1.实训目标明确、恰当,符合本次实训的要求
组别
评分

第 组组长 教师 总 分

中秋节晚会节目单-海宁观潮时间


俯卧撑锻炼什么-一件难忘的事500字


当幸福来敲门时-贾谊过秦论


腊八祝福语-在希望的田野上朴树


4级准考证-预谋歌词


甜言蜜语大全-科技资料


狂战士出装-光荣歌词


矜持-曹格无辜