#include #include void query(char* mesg, char* buf, int len) { /* char* mesg は、文字列のアドレスを受け取る仮引数宣言 */ /* char* buf も同様 */ printf("%s", mesg); /* 第1引数の文字列を表示 */ fgets(buf, len, stdin); /* 標準入力からbufへ読み込む */ } int main() { int match = 17; /* 最初のマッチの本数 */ int toru, com_toru; /* 取る本数, 人間とコンピュータ用 */ char line[100]; /* 読み込みバッファ100文字分 */ puts("1〜3本の範囲でマッチ棒を取ります。最後の1本を取った方の負け!"); while (match > 0) { /* マッチの残り本数がある限り繰り返す */ printf("あなたの番: マッチ棒が%d本あります\n", match); query("何本取りますか?(1〜3): ", line, sizeof line); toru = atoi(line); /* 読み込んだ文字列を整数に直す */ if (toru < 1 || toru > 3) { /* 1〜3の範囲にない場合 */ puts("1〜3の範囲で取って下さい."); continue; /* 次のループに進んでやりなおし */ } match -= toru; if (match < 1) { /* マッチ棒が0以下になった */ puts("最後の1本を取りました。あなたの負けです! や〜い"); break; /* breakでwhileループ終了 */ } printf("わたしの番: マッチ棒が%d本あります\n", match); com_toru = 4-toru; /* コンピュータの取る本数決定 */ printf("私は%d本取りました。\n", com_toru); match -= com_toru; if (match < 1) { /* マッチ棒が0以下になった ら */ puts("最後の1本を取りました。わたしの負けです! くやち〜〜!!"); break; /* 負けといって終了。でも負けない */ } } }