C语言 猜数游戏

来源:互联网 发布:融资担保 知乎 编辑:程序博客网 时间:2024/05/16 19:52
#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;}


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

1 0