猜数字游戏C语言描述源代码

#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!=&#39;1&#39;&&choice!=&#39;2&#39;&&choice!=&#39;3&#39;);
      
      switch(choice)
      {
        case &#39;1&#39; :
        {
           game();
           break ;
        }
        case &#39;2&#39; :
        {
           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 &#39;3&#39; :
        {
           printf("确定要退出吗?(y/n):");
           fflush(stdin);
           ch=getchar();
           if(ch==&#39;y&#39;||ch==&#39;Y&#39;)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==&#39;y&#39;||wantplay==&#39;Y&#39;)
      {
        system("cls");
        continue ;
      }
      else menu();
   }
   while(wantplay==&#39;y&#39;||wantplay==&#39;Y&#39;);
}
/
//判断输入的数或生成的数有没有重复
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();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值