Last Update: Oct.26,2006

C Source Library

「LSI C-86 Ver.3.30c 試食版」、「Borland C++ 5.5」でコンパイル出来ます。

■ じゃんけんゲーム

/*
 *  janken.c : じゃんけんゲーム
 *
 *      2000. 4.28 - 初版
 *      2000. 4.29 - 2版
 *      2006.10.26 - 3版
 *
 *  Copyright (c) 2000, 2006 AOK. 
 *
 */

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

#ifndef LSI_C /* Borland C++ 5.5 */
    #include <conio.h> /* getch */
#endif

const char *res = " *** %s *** %d試合%d勝%d敗\n\n";

/* 勝敗表 */
int hyou[][3] = {{0, 1, -1}, {-1, 0, 1}, {1, -1, 0}};

void choki(void)
{
    puts(" ┌┬┐");
    puts(" ││├┬┐");
    puts(" ├┐└┴┤");
    puts(" └───┘");
}

void gu(void)
{
    puts("");
    puts(" ┌┬┬┬┐");
    puts(" ├┼┴┴┤");
    puts(" └───┘");
}

void pa(void)
{
    puts(" ┌┬┬┬┐");
    puts(" │││││");
    puts("┌┴   │");
    puts("└────┘");
}

void kekka(int you, int con)
{
    static int win = 0, lose = 0, game = 0;

    if (hyou[you][con] == 0)
        printf(res, "あいこ", ++game, win, lose);
    else if (hyou[you][con] == -1)
        printf(res, "負け!", ++game, win, ++lose);
    else
        printf(res, "勝ち!", ++game, ++win, lose);
}

int main()
{
    void (*janken[3])(void) = { gu, choki, pa };
    char ch;
    int con, you;
        
    srand((unsigned int)time(NULL));

    while (1) {
        printf(">何を出しますか?[G:ぐう C:ちょき P:ぱー]");
        ch = toupper(getch());
        putchar('\n');
        if (ch == 'Q') break;
        switch (ch) {
            case 'G': you = 0; break;
            case 'C': you = 1; break;
            case 'P': you = 2; break;
            default: continue;
        }
        con = rand() % 3; /* コンピュータの手 (^_^;) */
        janken[con]();
        kekka(you, con);
    }
        
    return 0;
}