C语言,猜数字游戏(升级拓展)

 1. 记录游戏开始到游戏结束的时间
 2. 可选游戏难度或自定义猜数区间

一、调用控制台指令函数 system()
原型:int system(const char * string);
用法:system("") 在双引号中写入对应的指令即可调用系统终端对应的功能
需要头文件<windows.h>

部分windows控制台指令:
清屏 cls
暂停 pause
颜色设置 参考指令"color help"
 color xx即可设置对应颜色 第一位表示背景颜色,第二位表示字体颜色。颜色的设置参数如下图:

二、自定义函数

1、三秒倒计时函数

调用此函数时可以产生一个三秒倒计时界面。

void count_down() {
      int a = 3;      //定义一个倒计时的时间变量  a(秒)
    system("color 0a");   //指定倒计时在运行时的颜色
    while(a >= 0)
    {
        system("cls");
        printf("%d",a);
        Sleep(1000);
        a--;
    }
    system("pause");
    system("cls");
 }

2、系统检测时间

可以检测执行中间语句所用的时间。

DWORD start,end;  

start= GetTickCount();

.......   //中间语句

 end = GetTickCount();

printf("共用时%.2lfs\n",(end-start)/1000.0);//打印出中间执行语句的时间         单位(s)

3、产生随机整数函数

可以在[M,N]区间产生一个随机整数,以使我们进行猜测。

使用srand(time(0));    rand()%(N-M+1)+M;    头文件<stdlib.h>

 /* 产生一个M到N之间(闭区间)的随机正整数 */ 
int ran_num(int M,int N) {
    int random;      
    srand(time(0));
    random = rand()%(N-M+1)+M;
    return random;    

4、用户进行猜数字函数

可通过此函数进行一次一次的猜数,直到猜对跳出,猜对后显示猜测总数以及猜测所用时间,用户可根据这两个进行比较。

int list(int random) {
    int num,cnt = 0,i = 1;
    start= GetTickCount();
    while(1) {
        printf("第%d次机会:",i);
        scanf("%d",&num);
        if(num > random) {
            printf("往小点猜\n");
            cnt++;
        }
        else if(num < random) {
            printf("往大点猜\n");
            cnt++;
        } 
        else {
            printf("恭喜您,猜对啦。\n");
            cnt++;
            break;
        } 
        i++;
    }
    end = GetTickCount();
    printf("共猜了%d次\n",cnt);        
    printf("共用时%.2lfs\n",(end-start)/1000.0);
}   

 

5、模式选择函数

用户可以自己调整游戏难度(简单模式、普通模式、困难模式、以及自定义进行游戏)

int mode_selection() {
    int i,random,M = 0,N = 0;
    system("color 0e");
    printf("请选择模式\n1.简单[0,50]\n2.普通[0,200]\n3.困难[0,1000]\n4.自定义\n");
    scanf("%d",&i);
    switch(i) {
        case 1:count_down();random = ran_num(0,50);break; 
        case 2:count_down();random = ran_num(0,200);break;
        case 3:count_down();random = ran_num(0,1000);break;
        case 4:{
        count_down();printf("请输入下限:");scanf("%d",&M);
        printf("请输入上限:");scanf("%d",&N);random = ran_num(M,N);break;
        }
    }
    return random; 

三、全部代码如下:

#include<stdio.h>
#include<stdlib.h> 
#include<windows.h>

int list(int random);            //游戏猜点函数 
void count_down();                 //3秒倒计时函数 
int mode_selection();              //模式选择函数 
int option_to_select();            //选项选择函数 
int ran_num(int M,int N);       //在一个任意区间产生一个随机整数函数

DWORD start,end;                 //检测时间 
int main() {
    int random;
    while(1) {
    system("pause");
    system("cls");
    random = mode_selection();    
    list(random);
    }
    return 0;
}
int mode_selection() {
    int i,random,M = 0,N = 0;
    system("color 0e");
    printf("请选择模式\n1.简单[0,50]\n2.普通[0,200]\n3.困难[0,1000]\n4.自定义\n");
    scanf("%d",&i);
    switch(i) {
        case 1:count_down();random = ran_num(0,50);break; 
        case 2:count_down();random = ran_num(0,200);break;
        case 3:count_down();random = ran_num(0,1000);break;
        case 4:{
        count_down();printf("请输入下限:");scanf("%d",&M);
        printf("请输入上限:");scanf("%d",&N);random = ran_num(M,N);break;
        }
    }
    return random; 
}

void count_down() {
      int a = 3;      //定义一个倒计时的时间变量  a(秒)
    system("color 0a");   //指定倒计时在运行时的颜色
    while(a >= 0)
    {
        system("cls");
        printf("%d",a);
        Sleep(1000);
        a--;
    }
    system("pause");
    system("cls");
 }


int ran_num(int M,int N) {
    int random;
    /* 产生一个M到N之间(闭区间)的随机正整数 */    
    srand(time(0));
    random = rand()%(N-M+1)+M;
    return random;    
}

int list(int random) {
    int num,cnt = 0,i = 1;
    start= GetTickCount();
    while(1) {
        printf("第%d次机会:",i);
        scanf("%d",&num);
        if(num > random) {
            printf("往小点猜\n");
            cnt++;
        }
        else if(num < random) {
            printf("往大点猜\n");
            cnt++;
        } 
        else {
            printf("恭喜您,猜对啦,凭截图可找glm领取奖品,解释权归glm所有。\n");
            cnt++;
            break;
        } 
        i++;
    }
    end = GetTickCount();
    printf("共猜了%d次\n",cnt);        
    printf("共用时%.2lfs\n",(end-start)/1000.0);
}    

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

惆怅客~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值