以前用C语言编写的生成随机数的猜数字小游戏

//
//简单猜数字小游戏
//2015.12.23
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void welcome()
{
    int i;
    for(i=0;i<=119;i++)printf("*");
    printf("\n\n");
    for(i=0;i<=14;i++)printf(" ");
        printf("欢迎使用一个简单的猜数字小游戏\n");
        printf("\n");
    for(i=0;i<=119;i++)printf("*");
}
void usage()
{
    int i;
    for(i=0;i<=24;i++)printf(" ");
    printf("使用说明\n");
    printf("1.请您输入无重复的四位数字\n2.如果您输入的数中有和计算机产生的数相同的数,并且位置相同,有几个,就会输出几个A\n3.如果您输入的数中有和计算机产生的数相同的数,但位置不同,有几个,就会输出几个B\n4.请您根据提示猜数字\n");
    for(i=0;i<=119;i++)printf("*");
    printf("\n准备好了吗?\n嘿嘿,开始吧\n");
    for(i=0;i<=119;i++)printf("*");
}
void Reset(int *computer,int *c,int *score,int *right,int *fault)
{
    int i,t;
    for(i=0;i<=9;i++)
    c[i]=i;
    *score=0;
    *right=0;
    *fault=0;
    for(i=0;i<=3;)
    {
        t=rand()%10;
        if(c[t]){computer[i]=c[t];c[t]=0;i++;}
    }
}
void get_input(int *player)
{
    int i,x,w=10000;
    printf("请输入一个无重复的四位数:");
    scanf("%d",&x);
    for(i=0;i<=3;i++)
    {
        player[i]=x/(w/10);
        x-=player[i]*(w/10);
        w/=10;
    }
}
void check(int *player,int *computer,int *right,int *fault)
{
    int i,j;
    for(i=0;i<=3;i++)
    {
        for(j=0;j<=3;j++)
        if(player[i]==computer[j])
        {
            if(i==j)(*right)++;
            if(!(i==j))(*fault)++;
        }
    }
}
void AB_prompt(int *right,int *fault)
{
    int i;
    printf("提示:");
    for(i=0;i<=(*right)-1;i++)printf("A");
    for(i=0;i<=(*fault)-1;i++)printf("B");
    printf("\n");
}
void check_repeat_output_prompt(int *player,int *computer,int *right,int *fault)
{
    int i,j;
    for(i=0;i<=3;i++)
    for(j=i+1;j<=3;j++)
    if(player[i]==player[j])goto T;
    T:if(i<=3&&j<=3&&player[i]==player[j])
    {
        printf("提示:输入非法!!!\n");
        get_input(player);
    }
    else 
    {

        check(player,computer,right, fault);
        AB_prompt(right,fault);
        if(*right!=4)get_input(player);
    }
}
void print_result(int n)
{
    int i;
    for(i=0;i<=119;i++)printf("*");
    switch(n)
    {
        case 0:printf("哎呦,不错哦,天才啊!!!!!90分以上成绩!!\n");break;
        case 1:printf("哎呦,不错哦,太厉害了!!!80分以上成绩!!\n");break;
        case 2:printf("哎呦,不错哦,真聪明!!!70分以上成绩!!\n");break;
        case 3:printf("哎呦,不错哦!!!!及格啦60分以上成绩!!\n");break;
        default:printf("哎呦,不错哦,但不够快哦,加油,加油!!\n");
    }   
}
void whether_play(char *wantplay)
{
    int i;
    for(i=0;i<=119;i++)printf("*");
    printf("再玩一局吧,好的(Y),不了(N)\n");
    for(i=0;i<=119;i++)printf("*");
    printf("请输入:");
    scanf("\n%c",wantplay);
    for(i=0;i<=119;i++)printf("*");
    printf("\n");
}
void main()
{
    int player[4],computer[4],c[10],score,right,fault;
    char wantplay='y';
    srand(time(NULL));
    welcome();
    usage();
    while(wantplay=='y'||wantplay=='Y')
    {
        Reset(computer,c,&score,&right,&fault);
        get_input(player);
        while(right!=4)
        {
            check_repeat_output_prompt(player,computer,&right,&fault);
            score++;
            if(right!=4){right=0;fault=0;}
        }
        print_result(score/6);
        whether_play(&wantplay);
    }
}
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值