
Pythonを学習中の初心者に向けて、簡単な テキストベースのゲームコード を数多く紹介しています。
是非このページのゲームを実際に作ってみて、楽しくPythonを習得してください。
【初級】基礎文法と制御構造だけで作れる簡単なゲーム
本サイトのLesson1:基礎文法編とLesson2:制御構造編の知識だけで作れるゲームを3つ紹介します。
データ型や演算子などの基礎知識に加えて分岐処理や繰り返し処理の知識を活用してゲームを作成しましょう。
ハイアンドロー|難易度2
「ハイアンドロー」はプレイヤーとコンピュータがランダムに引いたトランプのカードを比較し、どちらが大きいかを予想するゲームです。
プレイヤーは自分のカードの数字がコンピュータのカードより大きいか小さいかを予想し、結果を確認します。
条件分岐と入力処理を活用して、ゲームのロジックを作りましょう。
本サイトで紹介するコードを実行すると、↓↓のような出力となります。
=== ハイアンドローゲームへようこそ! === 【プレイヤー】7 VS ??【コンピュータ】 あなたのカードはコンピュータのカードより大きい?小さい? 1: 大きい、2: 小さい ⇒ 1 【プレイヤー】7 VS 5【コンピュータ】 正解!あなたの勝ち!
このゲームを作ると、以下の知識を練習できます。
ハイアンドローゲームのコードは↓↓の記事に記載してあります。
数字当てゲーム|難易度2
1から100までのランダムな数値を生成し、プレイヤーがその数を予測するゲームです。
プレイヤーには10回の予測チャンスが与えられます。プレイヤーが予測するたびに、予測が正解かどうか、または正解よりも大きいか小さいかを表示します。
プレイヤーが正解の数値を当てることができたらゲームは終了しますが、10回の予測が終わった後も正解を当てられなければ、正解の数値が表示されてゲーム終了です。
本サイトで紹介するコードを実行すると、↓↓のような出力となります。
1から100までの数字を当ててください! あなたには 10 回のチャンスがあります。 あなたの予測: 50 もっと小さい数字です。 残りのチャンスは 9 回です。 あなたの予測: 25 もっと大きい数字です。 残りのチャンスは 8 回です。 あなたの予測: 35 もっと大きい数字です。 残りのチャンスは 7 回です。 あなたの予測: 42 もっと小さい数字です。 残りのチャンスは 6 回です。 あなたの予測: 40 もっと小さい数字です。 残りのチャンスは 5 回です。 あなたの予測: 38 おめでとうございます!正解です!6 回目で当てました。
このゲームを作ると、以下の知識を練習できます。
数字当てゲームのコードは↓↓の記事に記載してあります。
簡単なじゃんけんゲーム|難易度2
簡単なじゃんけんゲームのコードを紹介します。
プレイヤーが「グー」「チョキ」「パー」のいずれかを選び、コンピュータがランダムに選んだ手と勝負します。勝敗を判定し、その結果を表示するプログラムです。
本サイトで紹介するコードを実行すると、↓↓のような出力となります。
じゃんけんゲームを始めます!(グー:0, チョキ:1, パー:2) あなたの選択(0/1/2): 1 あなたの手: チョキ コンピュータの手: パー あなたの勝ちです! もう一度遊びますか?(y/n):
このゲームを作ると、以下の知識を練習できます。
じゃんけんゲームのコードは↓↓の記事に記載してあります。
当サイトではテキストベースのゲームコードを多数紹介していますが、それだけでなく 画面上で遊べるゲームアプリ の作り方を紹介したコースも用意してあります。
簡単なアクションゲーム や シューティングゲーム などのアプリケーションを作成できます。
現場で通用するPythonの実践力習得を目指して、ぜひ挑戦して下さい^^
【中級】関数やデータ構造を活用したゲーム
本サイトのLesson3:関数とスコープ編とLesson4:データ構造編までの知識で作れるゲームを5つ紹介します。
一連の処理をまとめて一つの名前で呼び出すことができる関数や、複数の値を一つの変数にまとめて格納できるリスト等のデータ構造を用いて、効率的にゲーム制作を行いましょう。
丁半賭博ゲーム(無名関数を使おう)|難易度3
サイコロを使った丁半賭博ゲームを作成しましょう。
このゲームでは、プレイヤーが掛け金を決めてサイコロの結果(丁(偶数)か半(奇数)か)を予測し、勝敗を決めます。
プレイヤーが勝てば掛け金を得て、負ければ掛け金を失います。また、所持金が無くなった時点でゲームが終了します。
条件分岐、例外処理、関数、そして無名関数(lambda)を用いて、コードを完成させましょう。
本サイトで紹介するコードを実行すると、↓↓のような出力となります。
丁半賭博ゲームを始めます! プレイヤーの所持金: 1000円 いくらかけますか? ⇒ 500 丁か半か?(丁:0,半:1) ⇒ 1 サイコロの目: 3, 4 ⇒ 半 あなたの勝ち!賞金は500円 プレイヤーの所持金: 1500円 続けますか?(はい:0,いいえ:1) ⇒ 1 最終所持金は1500円でした。 丁半賭博ゲームを終わります。
このゲームを作ると、以下の知識を練習できます。
丁半賭博ゲームのコードは↓↓の記事に記載してあります。
石取りゲーム(高階関数を使おう)|難易度3
2人のプレイヤーが交互に石を取り合い、最後の石を取った側が負けとなる石取りゲームを作成しましょう。
このゲームでは15個の石を山に置き、プレイヤーが1ターンに取れる石の数は1個から3個までです。
プレイヤーは交互に石を取り、最後の石を取ったプレイヤーが負けとなります。
関数の分割とスコープの扱いに加え、入力検証を関数として受け渡す(高階関数)設計を体験しましょう。
本サイトで紹介するコードを実行すると、↓↓のような出力となります。
石取りゲームへようこそ! プレイヤー1の番です。残りの石は 15 個です。 プレイヤー1, 何個の石を取りますか?(1~3個まで選べます):2 プレイヤー2の番です。残りの石は 13 個です。 プレイヤー2, 何個の石を取りますか?(1~3個まで選べます):3 ... プレイヤー1が最後の石を取りました。プレイヤー1の負けです!
このゲームを作ると、以下の知識を練習できます。
石取りゲームのコードは↓↓の記事に記載してあります。
宝探しゲーム(リスト・集合を使おう)|難易度4
ランダムな位置にある宝を探し当てるゲームのコードを紹介します。
プレイヤーは1から25までの番号が振られた5×5のグリッドから、宝が隠された場所を3回以内に見つける必要があります。
プレイヤーが選んだマスに基づいてヒントを表示し、宝に近づいているかどうかを知らせます。宝を見つけるか、チャンスを使い切るとゲームが終了します。
本サイトで紹介するコードを実行すると、↓↓のような出力となります。
宝探しゲームへようこそ!1から25までの数字で宝を探し当ててください。 宝を探すチャンスは3回です。 現在のグリッド: 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 1から25のマス番号を入力してください: 13 下 に宝があります。 残りのチャンス: 2回 現在のグリッド: 01 02 03 04 05 06 07 08 09 10 11 12 * 14 15 16 17 18 19 20 21 22 23 24 25 1から25のマス番号を入力してください: 23 おめでとうございます!宝を見つけました! 現在のグリッド: 01 02 03 04 05 06 07 08 09 10 11 12 * 14 15 16 17 18 19 20 21 22 ☆ 24 25
このゲームを作ると、以下の知識を練習できます。
宝探しゲームのコードは↓↓の記事に記載してあります。
ナインゲーム(リスト・タプル・辞書を使おう)|難易度4
プレイヤーとコンピュータが交互に牌を選んで得点を競う「ナインゲーム」のコードを紹介します。
プレイヤーは1から9までの数字を持ち、毎回選んだ牌の数字で勝敗が決まります。
選ばれた牌は使えなくなり、最後に得点が高い方が勝者となります。
本サイトで紹介するコードを実行すると、↓↓のような出力となります。
ナインゲームを開始します! 【第1回戦】 プレイヤーの得点 : 0点 コンピュータの得点: 0点 ☆プレイヤーの持ち牌⇒【1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9】 コンピュータの持ち牌⇒【1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9】 持ち牌の中から出す牌を選択してください > 5 プレイヤーの打牌:5 > 3:コンピュータの打牌 プレイヤーは5点獲得 【第2回戦】 プレイヤーの得点 : 5点 コンピュータの得点: 0点 ...
このゲームを作ると、以下の知識を練習できます。
ナインゲームのコードは↓↓の記事に記載してあります。
マルバツゲーム(リスト・タプルを使おう)|難易度4
コンピュータと対戦する簡単なマルバツゲームのコードを紹介します。
プレイヤーとコンピュータが交互に○と×を選択し、最初に縦・横・斜めのラインを揃えた方が勝ちです。
このプログラムでは、ユーザーからの入力に応じて盤面を更新し、勝利または引き分けを判定します。
ゲームが終了した後は結果を表示します。
本サイトで紹介するコードを実行すると、↓↓のような出力となります。
マルバツゲームを開始します! 1 | 2 | 3 --+---+-- 4 | 5 | 6 --+---+-- 7 | 8 | 9 どのマスに置きますか?(1-9で入力してください)> 1 ○ | 2 | 3 --+---+-- 4 | 5 | 6 --+---+-- 7 | 8 | 9 コンピュータのターンです... コンピュータが選んだマス: 5 ○ | 2 | 3 --+---+-- 4 | × | 6 --+---+-- 7 | 8 | 9
このゲームを作ると、以下の知識を練習できます。
マルバツゲームのコードは↓↓の記事に記載してあります。
【上級】オブジェクト指向の練習になるゲーム
本サイトのLesson5:オブジェクト指向編までの全ての知識が必要となるゲームを2つ紹介します。
クラスをうまく定義してゲームを作成し、Pythonの実力を向上させましょう。
モンスター捕獲ゲーム(オブジェクト指向総復習)|難易度5
モンスター捕獲ゲームを作成しましょう。
プレイヤーはスライム、ゴブリン、ドラゴンの3種類のモンスターに挑みます。
それぞれのモンスターとサイコロを使って勝負し、プレイヤーのサイコロの出目がモンスターの出目より大きければ捕獲に成功します。
モンスターを一匹でも多く捕まえることを目指し、捕まえたモンスターのリストを最後に表示してください。
本サイトで紹介するコードを実行すると、↓↓のような出力となります。
スライムが現れた! スライムがサイコロを振った。出目は 3 サイコロを振りますか? (yes/no): yes プレイヤーがサイコロを振った。出目は 5 スライムを捕まえた! ゴブリンが現れた! ゴブリンがサイコロを振った。出目は 4 サイコロを振りますか? (yes/no): yes プレイヤーがサイコロを振った。出目は 2 ゴブリンを捕まえられなかった。ゲームオーバー!
このゲームを作ると、以下の知識を練習できます。
モンスター捕獲ゲームゲームのコードは↓↓の記事に記載してあります。
モンスターとのバトルゲーム(オブジェクト指向総復習)|難易度5
シンプルなターン制バトルゲームを作成しましょう。
このゲームでは「勇者」と「ドラゴン」というキャラクターが互いに攻撃や防御を行います。
勇者が攻撃を選択した場合、ドラゴンのHPが減少し、防御を選択した場合、ドラゴンの次の攻撃を防ぐことができます。
ドラゴンは一定の確率で攻撃を成功させることができ、攻撃が失敗するたびに次の攻撃の成功率が上がります。
勇者のHPが0になった場合はゲームオーバー、ドラゴンのHPが0になった場合はプレイヤーの勝利です。
本サイトで紹介するコードを実行すると、↓↓のような出力となります。
勇者のHP: 100, ドラゴンのHP: 120 (成功率: 60%) 行動を選んでください (1: 攻撃, 2: 防御): 1 勇者の攻撃! ドラゴンに20のダメージ! ドラゴンの攻撃! 攻撃が成功! 勇者に25のダメージ! 勇者のHP: 75, ドラゴンのHP: 100 (成功率: 60%) 行動を選んでください (1: 攻撃, 2: 防御): 1 勇者の攻撃! ドラゴンに20のダメージ! ドラゴンの攻撃! 攻撃はミス! 勇者のHP: 75, ドラゴンのHP: 80 (成功率: 80%) 行動を選んでください (1: 攻撃, 2: 防御): 2 勇者は防御を選んだ! ドラゴンの攻撃! 攻撃は防がれた! 勇者のHP: 75, ドラゴンのHP: 80 (成功率: 60%) 行動を選んでください (1: 攻撃, 2: 防御):
このゲームを作ると、以下の知識を練習できます。
モンスター捕獲ゲームゲームのコードは↓↓の記事に記載してあります。