C语言 猜数游戏

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
void MakeDigit(int a[]);
void MakeDigit1(int a[]);
int InputGuess(int b[]);
int IsRightPosition(int magic[],int guess[]);
int IsRightDigit(int magic[],int guess[]);
int main1();
int main2();
void menu();

int main()
{
    menu();
    return 0;
}
void menu()
{
    char c1;
    system("CLS");
    printf("\n\n\n\n\n");
    printf("\t\t|%c------------------------菜单------------------------%c|\n",15,15);
    printf("\t\t|                                                      |\n");
    printf("\t\t|                                                      |\n");
    printf("\t\t|                      A 人机对战                      |\n");
    printf("\t\t|                      B 双人模式                      |\n");
    printf("\t\t|                                                      |\n");
    printf("\t\t|                                                      |\n");
    printf("\t\t|%c-------------------------%c-------------------------%c|\n\n",15,2,15);
    printf("\t\t\t\t  %c选择(A or B):\n",16);
    printf("\n\n\n");
    printf("\t\t%c规则:A人机对战 系统随即设定一个各位互异的四位数,玩家根据电脑提示进行猜测!\n",16);
    printf("\t\t       B双人模式 玩家1设定一个各位互异的四位数,玩家2根据玩家1或电脑提示进行猜测!\n");
    scanf("%c",&c1);
    switch(c1)
    {
    case 'A':
        main1();
        break;
    case 'B':
        main2();
        break;
    default:
        menu();
    }

}
int main1()
{
    int a[10];
    int b[4];
    int count;
    int rightDigit;
    int rightPosition;
    int level;
    srand (time(NULL));
    MakeDigit(a);
    printf("\n");
    printf("%c----------------------%c%c HELLO,欢迎来到猜数字游戏!-----------------------%c\n",15,2,2,15);
    printf("                                  人机对战\n");
    printf("\n");
    printf("                       %c%c 请输入你想猜的次数:",3,3);
    scanf("%d",&level);
    count=0;
    do
    {
        printf("\n");
        printf("                       %c%c  第%d次!\n",2,2,count+1);
        printf("                       请输入一个四位相异的数字:");
        if(InputGuess(b)==0)
        {
            continue;
        }
        count++;
        rightPosition=IsRightPosition(a,b);
        rightDigit=IsRightDigit(a,b);
        rightDigit=rightDigit-rightPosition;
        printf("                       %d个数对了,而且位置正确\n",rightPosition);
        printf("                       %d个数对了,但位置不正确\n",rightDigit);
    }
    while(count<level && rightPosition !=4);
    if(rightPosition==4)
    {
        printf("\n");
        printf("                           %c恭喜你,第%d次就猜对了!\n",2,count);
    }
    else
    {
        printf("\n");
        printf("                           %c真可惜,下次见喽!\n",2);
    }
    printf("                           %c%c答案就是 %d%d%d%d\n",2,2,a[0],a[1],a[2],a[3]);
    printf("%c--------------------------GOOD BYE,    %c%c%c------------------------------%c\n",15,2,2,2,15);
    return 0;
}
int main2()
{
    int a[4];
    int b[4];
    int count;
    int rightDigit;
    int rightPosition;
    printf("\n");
    printf("%c----------------------%c%c HELLO,欢迎来到猜数字游戏!-----------------------%c\n",15,2,2,15);
    printf("                                  双人模式\n");
    printf("\n");
    printf("                       %c%c 请输入你让他猜的各位互异的四位数:",3,3);
	MakeDigit1(a);
    count=0;
    do
    {
        printf("\n");
        printf("                       %c%c  第%d次!\n",2,2,count+1);
        printf("                       请输入ta猜的数字:");
        if(InputGuess(b)==0)
        {
            continue;
        }
        count++;
        rightPosition=IsRightPosition(a,b);
        rightDigit=IsRightDigit(a,b);
        rightDigit=rightDigit-rightPosition;
        printf("                       %d个数对了,而且位置正确\n",rightPosition);
        printf("                       %d个数对了,但位置不正确\n",rightDigit);
    }
    while(rightPosition !=4);
    if(rightPosition==4)
    {
        printf("\n");
        printf("                           %c恭喜你,第%d次就猜对了!\n",2,count);
    }
    else
    {
        printf("\n");
        printf("                           %c真可惜,下次见喽!\n",2);
    }
    printf("                           %c%c答案就是 %d%d%d%d\n",2,2,a[0],a[1],a[2],a[3]);
    printf("%c--------------------------GOOD BYE,    %c%c%c------------------------------%c\n",15,2,2,2,15);
    return 0;
}
void MakeDigit(int a[])
{
    int j, k, temp;
    for(j=0; j<10; j++)
    {
        a[j]=j;
    }
    for(j=0; j<10; j++)
    {
        k=rand()%10;
        temp=a[j];
        a[j]=a[k];
        a[k]=temp;
    }
}
void MakeDigit1(int a[])
{
    int d,e;
    scanf("%d",&d);
   for(int i=3;i>=0;i--)
   {
	   e=d%10;
	   d=d/10;
	   a[i]=e;
   }
}
int InputGuess(int b[])
{
    int i;
    for(i=0; i<4; i++)
    {
        scanf("%1d",&b[i]);
    }
    return 1;
}
int IsRightPosition(int magic[],int guess[])
{
    int rightPosition=0;
    int j;
    for(j=0; j<4; j++)
    {
        if(guess[j]==magic[j])
        {
            rightPosition=rightPosition+1;
        }
    }
    return rightPosition;
}
int IsRightDigit(int magic[],int guess[])
{
    int rightDigit=0;
    int j,k;
    for(j=0; j<4; j++)
    {
        for(k=0; k<4; k++)
        {
            if(guess[j]==magic[k])
            {
                rightDigit=rightDigit+1;
            }
        }
    }
    return rightDigit;
}


有兴趣的可以玩一下.....

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值