[转载]猜数字游戏C语言描述源代码
信息来源:邪恶八进制信息安全团队([url]www.eviloctal.com[/url])[code]#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#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("cls");
printf("\t\t\t\t简单猜数字\n\n\n\n");
printf("\t\t\t\t1.开始游戏\n\n");
printf("\t\t\t\t2.使用说明\n\n");
printf("\t\t\t\t3.退出\n\n");
printf("\t\t\t请输入(1-3): ");
fflush(stdin);
choice=getchar();
}
while(choice!='1'&&choice!='2'&&choice!='3');
switch(choice)
{
case '1' :
{
game();
break ;
}
case '2' :
{
system("cls");
printf("\t\t\t\t欢迎使用本程序\n\n\n");
printf("作者:烈冰\n");
printf("游戏说明: 输入%d位数字,输入后会有提示XaYb,X表示有几",MANY);
printf("个数字与答案数字相同\n");
printf("且位置正确,Y表示有几位数字与答案数字相同但位置不正确。例如:答案数字是\n");
printf("5764,如果输入5481,则会提示1a1b。\n");
printf("祝你愉快!\n\n");
printf("按任意键返回主目录……\n");
getch();
break ;
}
case '3' :
{
printf("确定要退出吗?(y/n):");
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<MANY;i++)
guess=rand()%10 ;
same(guess);
}
while(u);
printf("请输入%d位不相同的数:\n",MANY);
for(times=1;times<=TIME_OUT+1;times++)
{
//超过限定数次
if(times==(TIME_OUT+1))
{
printf("真确答案是:");
for(m=0;m<MANY;m++)printf("%d",guess[m]);
printf("\n猜了%d次都没猜中,你个猪头",TIME_OUT);
break ;
}
printf("第%d次:",times);
//玩家输入
fflush(stdin);
for(j=0;j<MANY;j++)
{
temp=getchar();
answer[j]=temp-48 ;
}
//检查输入有没有重复
u=0 ;
same(answer);
if(u)
{
printf("你输入的数字有重复,老实点哦!不然不给你提示\n");
continue ;
}
//
ab(answer,guess);
if(a==MANY)
{
printf("恭喜!你猜对了,你真厉害!!");
break ;
}
else printf("%dA%dB\n",a,b);
}
printf("还想玩吗?(y/n):");
fflush(stdin);
wantplay=getchar();
if(wantplay=='y'||wantplay=='Y')
{
system("cls");
continue ;
}
else menu();
}
while(wantplay=='y'||wantplay=='Y');
}
/////////////////////////////////////////////////////////////
//判断输入的数或生成的数有没有重复
void same(int num[])
{
int i,j ;
for(i=0;i<MANY-1;i++)
for(j=i+1;j<MANY;j++)
if(num==num[j])
u=1 ;
}
//////////////////////////////////////////////////////////////
//提示
void ab(int answer[],int guess[])
{
int i,j ;
a=b=0 ;
for(i=0;i<MANY;i++)
for(j=0;j<MANY;j++)
if(answer==guess[j])
if(i==j)a++;
else b++;
}
///////////////////////////////////////////////////////////////
//主函数
void main()
{
menu();
}[/code]
页:
[1]