设计课题:猜数字游戏
一、问题描述:该游戏可以由程序随机产生或由用户输入四个0到9之间的数字,且不重复。玩游戏者通过游戏提示输入八次来匹配上面所输入的数字。A表示位置正确且数字正确,B表示数字...
一、问题描述:
该游戏可以由程序随机产生或由用户输入四个0到9之间的数字,且不重复。玩游戏者通过游戏提示输入八次来匹配上面所输入的数字。A表示位置正确且数字正确,B表示数字正确而位置不正确。
二、功能要求:
1、本游戏显示这样的菜单:
(1) 随机产生数据
(2) 用户输入数据
(3) 退出游戏
2、游戏成功与否都能返回主菜单
请按要求来做这个程序 做好请发我邮箱gongboda@163.com 展开
该游戏可以由程序随机产生或由用户输入四个0到9之间的数字,且不重复。玩游戏者通过游戏提示输入八次来匹配上面所输入的数字。A表示位置正确且数字正确,B表示数字正确而位置不正确。
二、功能要求:
1、本游戏显示这样的菜单:
(1) 随机产生数据
(2) 用户输入数据
(3) 退出游戏
2、游戏成功与否都能返回主菜单
请按要求来做这个程序 做好请发我邮箱gongboda@163.com 展开
5个回答
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 !");
}
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 !");
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
自学成才吧!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
什么游戏啊?不懂
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
还以为是数独游戏呢,这个我不会,帮不了你.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果位置和数字都不正确呢?
我资料里有联系方式
我资料里有联系方式
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询