设计课题:猜数字游戏

一、问题描述:该游戏可以由程序随机产生或由用户输入四个0到9之间的数字,且不重复。玩游戏者通过游戏提示输入八次来匹配上面所输入的数字。A表示位置正确且数字正确,B表示数字... 一、问题描述:
该游戏可以由程序随机产生或由用户输入四个0到9之间的数字,且不重复。玩游戏者通过游戏提示输入八次来匹配上面所输入的数字。A表示位置正确且数字正确,B表示数字正确而位置不正确。

二、功能要求:
1、本游戏显示这样的菜单:
(1) 随机产生数据
(2) 用户输入数据
(3) 退出游戏
2、游戏成功与否都能返回主菜单
请按要求来做这个程序 做好请发我邮箱gongboda@163.com
展开
 我来答
匿名用户
2009-02-19
展开全部
C语言版本和C++版本都给你吧,自己稍微改一下就可以了

C++代码:
#include "stdafx.h"
#include <time.h>
using namespace std;
void guess( int randomNum[4]);
int n=0;
void main()
{
cout<<"*****************猜数字小游戏***************"<<endl;
cout<<"***输入四个不同的0~9间整数且首位不要为0***"<<endl;
cout<<"**************Such as: 9876 Enter***********"<<endl;

int randomNum[4],temp[10],randomSum,n=10;
srand((unsigned)time( NULL ));

for(int i=0;i<=3;i++)
{
randomNum[i]=rand() % 10;//得到四个0-9的随机数,不过可能相同或首位为0
}
for(int i=0;i<=9;i++)
{
temp[i]=i;
}
for(int i=0;i<=3;i++)//在0-9中找出与四个随机数不相等的,并赋给temp数组
for(int j=0;j<9;j++)
{
if(randomNum[i]==temp[j])
{
for(int k=j;k<9;k++)
temp[k]=temp[k+1];
}
}
for(int i=0;i<=3;i++)
{
randomSum=0;
randomSum+=randomNum[i];
}
for(int i=1;i<=3;i++)//通过%得出temp下标,并赋给randomNum,保证randomNum不相等
for(int j=0;j<i;j++)
{
if(randomNum[i]==randomNum[j])
{
randomNum[i]=temp[(randomSum++)%6];
}
}
if(randomNum[0]==0) //保证首位不为0
{
int temp;
temp=randomNum[0];
randomNum[0]=randomNum[1];
randomNum[1]=temp;
}
guess(randomNum);
}

void guess( int randomNum[])
{
int input,a=0,b=0;
int inputArray[4];
cin>>input;
for(int i=3;i>=0;i--)
{
inputArray[i]=input%10;
input/=10;
}
for(int i=0;i<=3;i++)
{
if(inputArray[i]==randomNum[i])
a++;
}
for(int i=0;i<=3;i++)
for(int j=0;j<=3;j++)
{
if(inputArray[i]==randomNum[j])
b++;
}
if(a==4)
{
cout<<"succeed!"<<endl;
exit(0);
}
else
{
cout<<a<<"A"<<b-a<<"B"<<endl;
n++;
if(n==10)
{
cout<<"还是看答案吧,呵呵~~"<<endl;

for(int i=0;i<=3;i++)
cout<<randomNum[i];
cout<<endl;
exit(0);
}
else
{
guess(randomNum);
}
}
}

------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------
C程序代码:

#include <stdio.h>
#include <time.h>
main()
{
int question[4]={-1,-1,-1,-1},i=0,j=0,k=0,A=0,B=0,answer[4]={0};
char again='y';
while(again=='y')
{
srand((int)time(0)); /*生成随机种子,保证每次题目不同*/
while(i<4) /*防止生成重复的数字*/
{
k=(int)rand()%10;
for(j=0;j<i;j++)
if(k==question[j])
{
k=-1;
break;
}
if(k==-1)
continue;
question[i]=k;
i++;
}/*while i*/
for(i=8;i>0;i--) /*还有8次机会*/
{
A=0;B=0;
printf("\nyou have%d changce left",i);
printf("\nplease input the number(0-9),devided with blank\n");
for(j=0;j<4;j++)
scanf("%d",&answer[j]);
for(j=0;j<4;j++)
for(k=0;k<4;k++)
{
if(answer[j]==question[k])
{
if(j==k) A++;
else B++;
}
}/*for*/
if(A==4)
{
again='0';
printf("\nYOU ARE RIGHT!\nAGAIN?(y/n)");
while(again!='y'&&again!='n')
scanf("%c",&again);
break;
}/*if*/
printf("\n%dA%dB",A,B);
if(i==1)
{
again='0';
printf("\nYOU LOSE ..");
printf("the right answer is:");
for(j=0;j<4;j++)
printf("%d\t",question[j]);
printf("\nAGAIN?(y/n)");
while(again!='y'&&again!='n')
scanf("%c",&again);
printf("%c",again);
break;
}/*if*/
}/*for changce*/
}/*while again*/
printf("thank you !");
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
伙骄灵a
2009-02-20 · TA获得超过211个赞
知道答主
回答量:146
采纳率:100%
帮助的人:71.3万
展开全部
自学成才吧!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友938f11bab
2009-02-19 · TA获得超过192个赞
知道答主
回答量:232
采纳率:0%
帮助的人:0
展开全部
什么游戏啊?不懂
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yvhitxcel
2009-02-19 · 超过34用户采纳过TA的回答
知道答主
回答量:163
采纳率:0%
帮助的人:58.1万
展开全部
还以为是数独游戏呢,这个我不会,帮不了你.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wangbinwh
2009-02-19 · TA获得超过639个赞
知道大有可为答主
回答量:1367
采纳率:100%
帮助的人:527万
展开全部
如果位置和数字都不正确呢?
我资料里有联系方式
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 4条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式