■ じゃんけんゲーム
/*
* 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;
}