经典算法之赌博游戏

描述:

一个简单的赌博游戏,游戏规则如下:玩家掷两个骰子,点数为1到6,如果第一次点数和为7或11,则玩家胜,如果点数和为2、3或12,则玩家输,如果和 为其它点数,则记录第一次的点数和,然后继续掷骰,直至点数和等于第一次掷出的点数和,则玩家胜,如果在这之前掷出了点数和为7,则玩家输。

规则看来有些复杂,但是其实只要使用switch配合if条件判断来撰写即可,小心不要弄错胜负顺序即可。

代码:

//赌博游戏
//by wack
//2017.12.20

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #define WON 0
    #define LOST 1
    #define CONTINUE 2
    
    int rollDice() { 
        return (rand() % 6) + (rand() % 6) + 2;
    }
    
    int main(void) {
        int firstRoll = 1;
        int gameStatus = CONTINUE;
        int die1, die2, sumOfDice;
        int firstPoint = 0;
        char c;
    
        srand(time(0));
    
        printf("Craps赌博游戏,按Enter键开始游戏****");
    
        while(1) {
             getchar();
    
            if(firstRoll) {
                sumOfDice = rollDice();
                printf("\n玩家掷出点数和:%d\n", sumOfDice);
    
                switch(sumOfDice) {
                    case 7: case 11:
                        gameStatus = WON; break;
                    case 2: case 3: case 12:
                        gameStatus = LOST; break;
                    default:
                        firstRoll = 0;
                        gameStatus = CONTINUE;
                        firstPoint = sumOfDice;
                        break;
                }
            }
            else {
                sumOfDice = rollDice();
                printf("\n玩家掷出点数和:%d\n", sumOfDice);
    
                if(sumOfDice == firstPoint)
                    gameStatus = WON;
                else if(sumOfDice == 7)
                    gameStatus = LOST;
            }
    
            if(gameStatus == CONTINUE)
                puts("未分胜负,再掷一次****\n");
            else {
                if(gameStatus == WON)
                    puts("玩家胜");
                else
                    puts("玩家输");
    
                printf("再玩一次?");
                scanf("%c", &c);
                if(c == 'n') {
                    puts("游戏结束");
                    break;
                }
                firstRoll = 1;
            }
        }
        return 0;
    }
添加新评论