Top >C言語、Java 練習プログラム集

3. ハイ・カード

■ C 言語による作成例

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

void main()
{
    int     money = 100;
    char    aCard[][3] =
    {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
    char    szRule[] =
    "最初に1枚カードが出ますから掛け金を決めてください。\n"
    "次に出るカードが前のカードと同じか大きければ、あなたの勝ちです。\n"
    "掛け金が戻りますから、続けるかどうかを決めてください。続けて勝てば掛け金は2倍になります。以降、4倍、8倍と戻るお金が増えます。ただし、負けるとそれまでの勝ちはなくなります。\n"
    "所持金が無くなって破産するか、1000$を超えるとゲーム終了です。\n"
    "----------------------------------------------\n"
    "ゲームを開始します。所持金は100$です。\n";

    srand((unsigned int)time(0));

    printf(szRule);

    while (money > 0 && money < 1000){
        int first;
        int bet;
        int times = 1;

        first = rand() % 13;

        printf("最初のカードです。\n|%s|\n", aCard[first]);

        do{
            printf("いくら賭けますか?(1$~%d$)", money);
            scanf("%d", &bet);
        } while (bet < 1 || bet > money);

        money -= bet;

        while (1){
            int card;
            int reply;

            card = rand() % 13;
            printf("|%s|\n", aCard[card]);

            if (card >= first){
                printf("あなたの勝ち。%d$の勝ちです。\n", bet * times);
                printf("倍率は%d倍。続けますか?(1=Yes; 0=No!)"
                    , times * 2);

                scanf("%d", &reply);

                if (reply == 0){
                    money += (bet * times);
                    printf("所持金は %d$です。\n\n", money);
                    break;
                }

                times *= 2;
                first = card;
            }
            else{
                printf("あなたの負け。所持金は %d$です。\n\n", money);
                break;
            }
        }
    }

    if (money > 0)
        printf("おめでとう!! あなたは大富豪です。\n");
    else
        printf("残念でした。破産です。\n");
}
PAPER BOWL
NEZEN