C语言猜拳游戏

2016-12-31  本文已影响0人  SkyHive

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;
}

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

在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(null)获取当前时间戳。

上一篇下一篇

猜你喜欢

热点阅读