美文网首页
C语言猜拳游戏

C语言猜拳游戏

作者: SkyHive | 来源:发表于2016-12-31 17:50 被阅读0次

    2016年的最后一篇文章

    今天闲来无事Google了一段C语言写的猜拳游戏的代码(本人水平比较低,几乎是刚入门),我没做什么修改。这个switch语句里面对result的处理让我眼前一新,原来是这么玩的,也算是学到了。
    代码本身比较简单,算法上面也没有什么难理解的地方,所以我没有做什么修改,如果大家有兴趣可以完善一下交互的功能。
    以下是代码

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    int main(){
        char gamer;
        int computer;
        int result;
    
        while (1){
            printf ("这是一个猜拳小游戏,请选择你的爪子:\n");
            printf ("A:剪刀\nB:石头\nC:布\nD:不玩了\n");
            scanf ("%c%*c",&gamer);
            switch (gamer){
                case 65:
                case 97:
                    gamer = 4;
                    break;
                case 66:
                case 98:
                    gamer = 7;
                    break;
    
                case 67:
                case 99:
                    gamer = 10;
                    break;
                case 68:
                case 100:
                    return 0;
    
                default:
                    printf ("你的选择是%c 选择错误,退出...\n",gamer);
                    getchar();
                    system("cls");
                    return 0;
                    break;
            }
            srand ((unsigned)time(NULL));       //随机数种子
            computer = rand()%3;                //产生随机数并取余,得到电脑出拳
            result = (int)gamer+computer;       // 运算时要将char类型的gamer转换成int
            printf ("电脑出了");
            switch (computer){
                case 0:printf ("剪刀\n");break;
                case 1:printf ("石头\n");break;
                case 2:printf ("布\n");break;
            }
            printf ("你出了");
            switch (gamer){
                case 4:printf ("剪刀\n");break;
                case 7:printf ("石头\n");break;
                case 10:printf ("布\n");break;
            }
            if (result==6||result==7||result==11){
                printf ("你赢了!");
            }
            else if (result==5||result==9||result==10){
                printf ("电脑赢了!");
            }
            else{
                printf ("平手");
            }
            system("pause>nul&&cls");       //暂停并清屏
        }
        return 0;
    }
    

    由于本人是新手,所以有些函数的功能还不是很清楚,在这里做一些小小的解释:

    • srand和rand函数:

    在C语言中,rand()函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,是根据一个数,我们可以称它为种子,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统,为了改变这个种子的值,C提供了srand()函数,它的原形是void srand( inta)。可以利用srand((unsigned)time(NULL))来产生随机序列,因为没一次运行程序的时间是不同的。
    1. 首先给srand()提供一个种子,它是一个unsigned int 类型,其取值范围从0~65535.
    2. 然后调用rand(),它会根据提供给srand()的种子值返回一个随机数(0~32767).
    3. 根据需要多次调用rand(),从而不间断的得到新的随机数.
    4. 无论什么时候,都可以给srand()提供一个新的种子,从而进一步“随机化”rand()的输出结果.

    • time()函数:

    用于获取时间戳,用time(null)获取当前时间戳。

    相关文章

      网友评论

          本文标题:C语言猜拳游戏

          本文链接:https://www.haomeiwen.com/subject/rjfbvttx.html