模仿类c语言小游戏(特殊猜数字).C语言

在鹏哥视频里学到的小游戏

P8.7 分支与循环 

视频中鹏哥的一个学生提议说:“可不可以把猜数字和控制电脑关机结合起来?”由此获得灵感,特来发表自己拙见,游戏代码如下:

//猜数字游戏
#include<stdio.h>
#include<windows.h>
#include<time.h>
#include<string.h>

static int a = 25;
void time10()
{
    Sleep(5000);
    system("cls");
}
void time1()
{
    Sleep(1000);
    system("cls");
}
void tishi1()
{
    a = a+5 ;
    printf("已经过去%d秒了哦\n", a);
}

void menu()
{
    printf("oi!!欢迎来到咱的小游戏家人们!!\n");
    time10();
    printf("玩游戏之前最好保存好所有需要保存的数据\n");
    time10();
    printf("就像咱说的一样,这是一个稍微刺激一点的游戏\n");
    time10();
    printf("你只有7次回答的机会,要是7次都回答错误,那么电脑将会关机\n");
    time10();
    printf("记得不要轻易关闭此窗口哦,要是关了这个窗口的话,那就真的要关机了哦\n");
    time10();
    printf("猜数字(范围在1~100)\n");
    time10();
    printf("每个规则和提示会显示几秒,在这几秒内写上自己的答案吧\n");
    time10();
    printf("如果想要放弃的话输入-1");
    time10();


};
int  game()
{
    int z = rand() % 100 + 1;
    return z;
}
int main()
{
    system("shutdown -s -t 120");
    int i = 0, j = 0, k = 7;
    srand((unsigned)time(NULL));
    menu();
    tishi1();
    j = game();
    printf("随机数已经生成,请开始猜数字\n");
    time1();
    while (k)
    {
        if (k < 1)
            break;
        scanf_s("%d", &i);
        if (i== -1)
        {
            printf("没想到你真的会放弃,可能是没准备好吧,已经取消关机了,再见。\n");
            time1();
            system("shutdown -a");
            break;    
        }
        if (i > j)
        {
            printf("猜大啦\n");
            k--;
            printf("你还剩%d次机会\n", k);
            tishi1();
            time1();
        }
        else if (j > i)
        {
            printf("猜小啦\n");
            k--;
            printf("你还剩%d次机会\n", k);
            tishi1();
            time1();
        }
        if (j == i)
        {
            printf("恭喜你猜对了!!!!\n");
            system("shutdown -a");
            Sleep(5000);
            break;
        }

        if (k < 1) {
            printf("再见,下次一定要成功!\n");
            system("shutdown -a");
            Sleep(10000);
            system("shutdown -s -t 0");
        }
    }

}

可玩性较多,建议多多尝试。

1.小游戏注意事项
1).如何在vs2022中生成电脑可执行的exe文件?

图片如下:

要生成exe文件的话,x64左边配置方案就要换成Release。一般情况下我们的配置方案都是Debug,在配置方案换成Release之后再ctrl+fn+f5走一下按照游戏规则开始游戏。当游戏结束后打开存放代码的目录中就会发现一个exe文件(名称就是你起的名字,如果不好找的话可以直接搜索,要是进行过多次Relase就要注意一下编辑的时间,最近的时间便是你想要的)。

2).当在游戏中不小心关掉了窗口怎么办?

直接windows+r调出系统窗口,图片如下:

一般都是默认cmd(除非之前使用过),然后敲enter,进入控制窗口,输入shutdown(空格) -a

结果如图片所示:

 

当然前提是已经有注销命令。

2.代码难点分析
1) 代码“srand((unsigned)time(NULL))”与代码“rand() ”有关

我们知道计算机里的随机都是一种伪随机。

先要了解rand(),这个函数会随机生成一个范围在0~32767的数字,但是每次调用rand的值是一样的。

如图:

这是第一次调用的图:

这是第二次调用的图:

可以看到俩结果是一样的,第一次玩可以不影响,但时间久了就像投骰子之前已经知道点数,那这个随机对于咱们这个小游戏来说也就失去了乐趣。

因此我们找到了srand(),相当于给rand一个参数,然后rand就每次随机的数字也就不一样了。

如图:

这是第一次。

这是第二次。

可以看到这种情况下每次输出的rand就不像第一次那样。

这是因为C语言中取地址是随机的,所以我们取j的地址,然后又因为srand()函数要的值是一个整型,所以我们再对取的地址进行int类型的强制类型转换。

虽然j的值在变,但j的地址不会改变。就像人都会长大,但你的老家不会变,变的只是你的人,而不是你的家。

所以会输出一堆相同的数字。

到这里其实已经可以结束对随机值的设定。鹏哥在这里引用的时间戳,因为时间是一直在改变的,

所以结果也差不多

如图所示:这是第一次调用。

这是第二次调用:

可以看出效果差不多。

2)代码system("cls")

这是一个系统函数,作用是清除当前窗口的输入;

例:printf(“你好\n”);

       (显示)你好

要是加入了system("cls");

例:printf(“你好\n”);

        system("cls");

        (无显示)

3)代码Sleep(1000);

这个代码的意思是让进程暂停1000毫秒,也就是1秒钟.

4)代码system(“shutdown(空格)-a”),与(“shutdown(空格)-s*(空格)-t (空格)75”)

第一个代码的意思是解除注销,第二个代码是在75秒之后进行注销,时间可以改。

5)关于函数调用

函数调用其实不要想那么复杂,先想好什么代码要常用,就把那部分代码先保存下来。进行分析,如果这些代码最后的结果是输出什么,那么就是用输出的类型作为函数的类型。

例:输入三个数,求和。

那么函数类型就可以设置成int

函数代码如下

int(函数类型) qiuhe(函数名)(int x,int y,int z)(左边这个括号放参数) 

{   int k;

return k=x+y+z;

}

这样函数就写好了。

主函数只要调用就行,代码如下:

int main()

{int a,b,c,d;

scanf("%d %d %d",&a,&b,&c);

d=qiuhe(a,b,c);

printf("%d\n,d);

}

有了函数写代码的效率可以高很多,因为函数的调用真的很方便。

我们写的函数代码里边的参数可以随便写字母,q,w,e 都行,但是类型不可以省略。要是不想申请太多变量,想直接在函数里边输出和值也可以。代码如下: 

void(函数类型) qiuhe(函数名)(int x,int y,int z)(左边这个括号放参数) 

{   int k;

 k=x+y+z;

printf(“%d\n”,k);

}

当函数进行完之后,就会回到主函数中调用的位置接着向下走。


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值