MENU

Pythonで小さなゲームを作る!じゃんけんと数当ての実装ガイド

※写真はイメージです。実物とは異なる場合があります。

  • URLをコピーしました!

プログラミングを学び始めたばかりの頃、最も手応えを感じられるのが「ゲーム作り」です。参考書で文法を一つひとつ覚えるのも大切ですが、「自分の書いたコードで、実際に遊べるものができた!」という体験は、学習のモチベーションを大きく高めてくれます。

Pythonを使えば、わずか30〜100行程度の短いコードで、十分に楽しめる小さなゲームを作ることができます。凝ったグラフィックを動かすには「pygame」などのライブラリが必要になりますが、まずは文字だけのシンプルなゲームから始めて、「動いた」という体験を掴みましょう。

どんなゲームも、突き詰めれば「入力 → 判定 → 結果 → 繰り返し」という共通のサイクルで構成されています。この型さえ身につければ、ルールを変えるだけで次から次へと新しいゲームを量産できるようになります。

今回は、Pythonの基本である変数、条件分岐(if文)、繰り返し(while文)、そしてランダムな挙動を実現する「randomモジュール」を組み合わせて、「数当てゲーム」と「じゃんけんゲーム」の2つを作ってみましょう。

目次

Pythonでゲームを作るための必須知識

ゲーム制作に入る前に、今回使用する5つの重要な要素について簡単におさらいします。

  1. input()関数: ユーザーから文字を入力してもらうための機能です。
  2. int()関数: `input()`で受け取った値は「文字列」として扱われます。数字として大小を比べるには、整数型(int)に変換する必要があります。
  3. randomモジュール: コンピュータにランダムな数字を選ばせたり、リストからランダムに要素を選んだりするために使用します。
  4. while文: 「正解するまで繰り返す」といった、条件を満たすまで処理をループさせるために不可欠な制御構造です。
  5. if文: 「入力した数字が正解より大きいか小さいか」など、条件によって処理を分ける判定機能です。

これらの組み合わせで、プログラムが「自分で考えて動く」仕組みを構築していきます。

【実践1】数当てゲームを作ろう

まずは、コンピュータが1から100の間でランダムに選んだ数字を、プレイヤーが当てる「数当てゲーム」に挑戦しましょう。

ゲームの基本設計

このゲームの流れは以下の通りです。

  • プログラムが1〜100のランダムな整数を生成し、変数に保存する。
  • ユーザーが数字を入力する。
  • 入力された数字が正解より「大きい」か「小さい」か、あるいは「正解」かを判定し、ヒントを表示する。
  • 正解するまでこのプロセスを繰り返し、最後に何回で正解できたかを表示する。

実装コードのポイント

数当てゲームを実装する際に重要なのが「試行回数の管理」です。変数を一つ用意し(例:`attempts = 0`)、ユーザーが数字を入力するたびに `attempts += 1` とカウントを増やすことで、ゲーム終了時に「○回目で当たりました」という成績を表示でき、ゲーム体験が向上します。

また、初心者の方が陥りやすいのが「無限ループ」です。`while True` でループを作成した場合、正解したタイミングで `break` を使い、適切にループを抜ける処理を忘れないようにしましょう。

エラーへの配慮

実際のユーザーが利用することを考えると、「数字を入れるべき場所に文字を入れたらどうなるか」という視点が重要です。`int()` への変換に失敗した場合に、エラーメッセージを表示して再入力を促す処理を加えることで、ただ動くコードから「人に使ってもらえるプログラム」へと昇華されます。

【実践2】じゃんけんゲームを作ろう

次に、リストと条件分岐の練習に最適な「じゃんけんゲーム」を作成しましょう。

ゲームの基本設計

じゃんけんゲームのロジックは以下の通りです。

  • 「グー」「チョキ」「パー」の選択肢をリストに格納する。
  • ユーザーに手を選択してもらう。
  • `random` モジュールを使用して、コンピュータの手をランダムに決定する。
  • それぞれの手の相性を `if` 文で判定し、「勝ち」「負け」「あいこ」の結果を表示する。

実装のコツ

じゃんけんの勝敗判定は、条件分岐が重なりやすいため、整理して書くことが大切です。例えば、「ユーザーの手とコンピュータの手が同じならあいこ」という判定を最初に行い、その後に個別の勝ちパターンを記述するとコードがスッキリします。

発展的な改造案

基本の形ができたら、以下のような機能を追加して自分なりに改造してみましょう。

  • 連勝記録の保存: 何回連続で勝ったかをカウントする機能。
  • 先取勝ちルール: 「3回先取した方が勝利」という形式に変更し、対戦形式にする。
  • 勝率の表示: 合計試合数に対する勝ち数を算出し、パーセントで表示する。

このように、小さな機能を一つずつ追加していくことが、プログラミングスキルの向上に直結します。

ゲーム制作でつまずきやすいポイントと対処法

初めてゲームを作る際、多くの人が直面する共通の悩みがあります。

1. 型の不一致(TypeError)

`input()` で得た値を使って計算や比較をしようとしてエラーが出るケースです。前述の通り、`int(input("…"))` のように型変換を行うことを忘れないでください。

2. ループが止まらない

`while` 文の条件設定を誤ったり、`break` を書き忘れたりすると、プログラムが止まらなくなることがあります。もしそうなった場合は、実行環境の停止ボタンを押して強制終了させ、条件式を見直しましょう。

3. 一度に完璧を目指しすぎる

最初からエラーハンドリングや複雑な機能(GUIなど)を全て盛り込もうとすると、どこに原因があるのか分からなくなり、挫折しやすくなります。 「まずは最小限の機能で動かす」→「1つだけ機能を追加する」→「テストして直す」というサイクルを10回繰り返す方が、結果的に早く完成し、理解も深まります。

まとめ:小さなゲーム作りがエンジニアへの第一歩に

今回紹介した「数当てゲーム」や「じゃんけんゲーム」は、非常にシンプルな構造ですが、ここにはモダンなアプリ開発に必要なエッセンスが凝縮されています。

「ユーザーがどう操作し、システムがどう反応するか」を設計して実装する経験は、将来的にWebアプリやモバイルアプリ、業務システムなどを開発する際に必ず役立つ感覚です。

まずは Google Colab や Replit などの環境で、実際にコードを書いて動かしてみてください。正解の範囲を1〜1000に広げて難易度を上げたり、メッセージを自分好みに変えたりするだけでも、それは立派な「開発」です。

短いコードでも、最後まで作り切って「完成品」にしたという自信を持ってください。その積み重ねが、あなたのプログラミング上達への最短ルートになります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次