C言語のお勉強ページに対するご意見・ご感想スレ
34:へなちょこ管理人 ★2009/01/23(金) 21:23:57AAS
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <windows.h>

//びん取りゲーム
main () {
int bin_max;//びんの総本数
int bin;//残りびんの本数
int max = 3;//一度に取れるびんの最大数
int p_turn = 0;//プレイヤーターンフラグ
int p_get, m_get;//プレイヤー、コンピュータそれぞれの取ったびんの数
int i;

srand(time(NULL));

//びんの総本数を決める
bin_max = rand()%5 + 20;
bin = bin_max;

printf("【びん取りゲーム】\n");
printf("ルール:交互に1〜3本のびんを取ります。最後の1本を取った人が負けです。\n");
printf("びんの本数: %d\n", bin_max);

//先攻後攻を決める
printf("先攻後攻を決めます...先攻 [1] / 後攻 [2] : ");
scanf("%d", &p_turn);
while(getchar() != '\n') { }
if(p_turn == 1 || p_turn == 2) {
printf("============================あなたの");
if(p_turn == 1) { printf("先攻"); }
else if(p_turn == 2) {
printf("後攻");
p_turn = 0;
}
printf("でスタート============================\n\n");
} else {
printf("不正な値を受け取りました...強制的にプレイヤーは後攻です。\n\n");
p_turn = 0;
}

//びんを交互に取る
for(; bin > 1; p_turn = !p_turn) {
if(p_turn) {//プレイヤーのターン
do {
p_get = 0;
printf("何本取りますか?...");
scanf("%d", &p_get);
while(getchar() != '\n') { }
} while((p_get < 1) || (p_get > max));
printf("プレイヤー>%d 本取ったぞ!\n", p_get);
bin -= p_get;
if(bin <= 0) { printf("プレイヤー>0になっちゃったよ・・・\n"); }
} else {//コンピュータのターン
if(bin <= max + 1) {
m_get = bin - 1;
Sleep(500);
}
else {
m_get = rand()%max+1;
Sleep(rand()%500 + 1000);
}
printf("コンピュータ>%d 本取ったぞ!\n", m_get);
bin -= m_get;
}

//残り本数の表示
if(bin >= 1) {
for(i = 0; i < bin_max; i++) {
if(i < bin_max - bin) { printf("□");
} else { printf("■"); }
}
printf(" あと %d 本!\n", bin);
}
}

printf("\n==================================ゲーム終了==================================\n");
//勝敗判定
if(!p_turn && (bin <= 0)) { p_turn = !p_turn; }
if(p_turn) {
printf("あなたの負け!また挑戦してね!\n"); }
else { printf("あなたの勝ち!\n"); }
/***********************************以下追加文********************************/
printf("Enterキーを押すと終了...");
rewind(stdin);
getchar();
/***********************************追加文終了********************************/
return 0;
}
1-AA