scanf を足して、入力で動かそういまは「自動で攻撃し続けて終わる」だけで、プレイヤーが何かを選ぶ場面がありません。
ここから main 関数を書き換えて、ゲームらしい「コマンド入力」の流れを作ります。
showStatus();)showEnemy();)scanf)1 なら battle(); を呼んで戦うbreak)waitEnter(); を呼び、Enter で次のターンへ
main 関数だけ他の場所はさわらなくてOK。main 関数の中身を以下のように書き換えます。
int command; という変数を用意するscanf("%d", &command); で入力を受け取るscanf の直後に getchar(); を1行入れる(理由は下の注意ボックスを参照)if (command == 1) { ... } で「1のときだけ battle() を呼ぶ」waitEnter(); を呼ぶscanf の直後に getchar(); が必要?scanf("%d", ...) で数字を入力して Enter を押すと、その Enter(改行)が入力バッファに残ります。waitEnter() が呼ばれると、残った改行をそのまま読み取って一瞬で素通りしてしまいます。scanf の直後に getchar(); を1行入れて、残った改行を先に捨てておきます。
int main() {
int command; // ★ 追加:入力されたコマンドを入れる変数
printf("=== バトルスタート ===\n");
while (1) {
showStatus();
showEnemy();
printf("\n1: たたかう\n"); // ★ 追加
printf("コマンドを入力してください: "); // ★ 追加
scanf("%d", &command); // ★ 追加
getchar(); // ★ 追加:scanf が残した Enter を捨てる
if (command == 1) { // ★ 追加:1なら攻撃
battle();
if (enemyParam[CHAR_HP] <= 0) {
break;
}
}
waitEnter(); // ★ 追加:Enter キー待ち
}
printf("=== バトル終了 ===\n");
return 0;
}
「1以外」を入力してもエラーにはなりませんが、戦闘が進まないまま無限ループになります。
「にげる」や「無効な入力を弾く」処理を入れて、ちゃんとしたゲームにしていきましょう。