Pythonを学習中の初心者に向けて、簡単なゲームのコードを数多く紹介しています。
是非このページのゲームを実際に作ってみて、楽しくPythonを習得してください。
【★★☆☆☆】ハイアンドロー
「ハイアンドロー」はプレイヤーとコンピュータがランダムに引いたトランプのカードを比較し、どちらが大きいかを予想するゲームです。
プレイヤーは自分のカードの数字がコンピュータのカードより大きいか小さいかを予想し、結果を確認します。
条件分岐と入力処理を活用して、ゲームのロジックを作りましょう。
本サイトで紹介するコードを実行すると、↓↓のような出力となります。
=== ハイアンドローゲームへようこそ! === 【プレイヤー】7 VS ??【コンピュータ】 あなたのカードはコンピュータのカードより大きい?小さい? 1: 大きい、2: 小さい ⇒ 2 【プレイヤー】7 VS 5【コンピュータ】 正解!あなたの勝ち!
いきなりコードを見るのではなく練習問題形式で作成したい人は↓↓をクリック
ハイアンドロー ゲームのコードは↓↓をクリック
import random # ハイアンドローゲーム開始メッセージ print("=== ハイアンドローゲームへようこそ! ===") # プレイヤーとコンピュータにランダムなカード(1〜13の数字)を配る player_card = random.randint(1, 13) computer_card = random.randint(1, 13) # プレイヤーに配られたカードを表示し、コンピュータのカードはまだ表示しない print(f"【プレイヤー】{player_card} VS ??【コンピュータ】") # プレイヤーにコンピュータのカードが大きいか小さいかを予想させる print("あなたのカードはコンピュータのカードより大きい?小さい?") print("1: 大きい、2: 小さい") choice = int(input("⇒ ")) # コンピュータのカードを表示 print(f"【プレイヤー】{player_card} VS {computer_card}【コンピュータ】") # 勝負の結果を判定 if player_card == computer_card: print("引き分け!") elif (player_card < computer_card and choice == 1) or (player_card > computer_card and choice == 2): print("正解!あなたの勝ち!") else: print("残念!あなたの負け!")
ハイアンドローのゲームコードは以上です。楽しんでください^^
コードの解説はこちらを参照。
【★★☆☆☆】数字当てゲーム
1から100までのランダムな数値を生成し、プレイヤーがその数を予測するゲームです。
プレイヤーには10回の予測チャンスが与えられます。プレイヤーが予測するたびに、予測が正解かどうか、または正解よりも大きいか小さいかを表示します。
プレイヤーが正解の数値を当てることができたらゲームは終了しますが、10回の予測が終わった後も正解を当てられなければ、正解の数値が表示されてゲーム終了です。
本サイトで紹介するコードを実行すると、↓↓のような出力となります。
1から100までの数字を当ててください! あなたには 10 回のチャンスがあります。 あなたの予測: 50 もっと大きい数字です。 残りのチャンスは 9 回です。 あなたの予測: 75 もっと小さい数字です。 残りのチャンスは 8 回です。 あなたの予測: 60 もっと大きい数字です。 残りのチャンスは 7 回です。 あなたの予測: 70 もっと小さい数字です。 残りのチャンスは 6 回です。 あなたの予測: 65 おめでとうございます!正解です!5 回目で当てました。
いきなりコードを見るのではなく練習問題形式で作成したい人は↓↓をクリック
数字当てゲームのコードは↓↓をクリック
import random # 1から100までのランダムな数字を生成 correct_number = random.randint(1, 100) # 予測できる回数を設定 max_attempts = 10 # ゲーム開始メッセージ print("1から100までの数字を当ててください!") print(f"あなたには {max_attempts} 回のチャンスがあります。") # 現在の試行回数をカウント attempts = 0 # プレイヤーの予測をループで繰り返す while attempts < max_attempts: try: # プレイヤーの入力を数値として取得 guess = int(input("あなたの予測: ")) # 試行回数を1増やす attempts += 1 # 予測が正解の場合 if guess == correct_number: print(f"おめでとうございます!正解です!{attempts} 回目で当てました。") break # 予測が正解より小さい場合 elif guess < correct_number: print("もっと大きい数字です。") # 予測が正解より大きい場合 else: print("もっと小さい数字です。") # 残りの試行回数を表示 remaining_attempts = max_attempts - attempts print(f"残りのチャンスは {remaining_attempts} 回です。") except ValueError: # 入力が数値でない場合のエラーメッセージ print("無効な入力です。数字を入力してください。") # 回数制限に達した場合のメッセージ if attempts == max_attempts: print(f"残念!正解は {correct_number} でした。次回はもっと頑張りましょう!")
数字当てゲームのコードは以上です。楽しんでください^^
コードの解説はこちらを参照。
【★★☆☆☆】簡単なじゃんけんゲーム
簡単なじゃんけんゲームのコードを紹介します。
プレイヤーが「グー」「チョキ」「パー」のいずれかを選び、コンピュータがランダムに選んだ手と勝負します。勝敗を判定し、その結果を表示するプログラムです。
本サイトで紹介するコードを実行すると、↓↓のような出力となります。
じゃんけんゲームを始めます! じゃんけんの手を入力してください(グー: 0, チョキ: 1, パー: 2): 0 コンピューターの手: チョキ あなたの勝ちです!
いきなりコードを見るのではなく練習問題形式で作成したい人は↓↓をクリック
簡単なじゃんけんゲームのコードは↓↓をクリック
import random # じゃんけんの手を表示 print("じゃんけんゲームを始めます!") print("じゃんけんの手を入力してください(グー: 0, チョキ: 1, パー: 2)") # プレイヤーの手を入力 player_choice = int(input("あなたの選択: ")) # コンピュータの手をランダムに決定 computer_choice = random.randint(0, 2) # じゃんけんの手の名前 if player_choice == 0: player_hand = "グー" elif player_choice == 1: player_hand = "チョキ" else: player_hand = "パー" if computer_choice == 0: computer_hand = "グー" elif computer_choice == 1: computer_hand = "チョキ" else: computer_hand = "パー" # コンピュータの手を表示 print("コンピューターの手:", computer_hand) # 勝敗の判定 if player_choice == computer_choice: print("引き分けです!") elif (player_choice == 0 and computer_choice == 1) or \ (player_choice == 1 and computer_choice == 2) or \ (player_choice == 2 and computer_choice == 0): print("あなたの勝ちです!") else: print("あなたの負けです!")
簡単なじゃんけんゲームのコードは以上です。楽しんでください^^
コードの解説はこちらを参照。
【★★★☆☆】丁半賭博ゲーム
サイコロを使った丁半賭博ゲームのコードを紹介します。
このゲームではプレイヤーが掛け金を決めてサイコロの結果が「丁(偶数)」か「半(奇数)」かを予測し、勝敗を決めます。
プレイヤーが勝てば掛け金を得て、負ければ掛け金を失います。また、所持金が無くなった時点でゲームが終了します。
所持金が残っていれば、プレイヤーが続行するかどうかを選択することができます。
本サイトで紹介するコードを実行すると、↓↓のような出力となります。
丁半賭博ゲームを始めます! プレイヤーの所持金: 1000円 いくらかけますか? ⇒ 500 丁か半か?(丁:0,半:1) ⇒ 1 サイコロの目: 3, 4 ⇒ 半 あなたの勝ち!賞金は500円 プレイヤーの所持金: 1500円 続けますか?(はい:0,いいえ:1) ⇒ 1 最終所持金は1500円でした。 丁半賭博ゲームを終わります。
いきなりコードを見るのではなく練習問題形式で作成したい人は↓↓をクリック
丁半賭博ゲームのコードは↓↓をクリック
import random # 掛け金を入力する関数 def get_bet(money): while True: try: bet = int(input("いくらかけますか? ⇒ ")) if bet > 0 and bet <= money: return bet else: print("無効な入力です!所持金以内の正しい金額を入力してください。") except ValueError: print("無効な入力です!数字を入力してください。") # 丁か半かを選択する関数 def get_choice(): while True: try: choice = int(input("丁か半か?(丁:0,半:1) ⇒ ")) if choice == 0 or choice == 1: return choice else: print("無効な入力です!0か1を入力してください。") except ValueError: print("無効な入力です!数字を入力してください。") # サイコロを振る関数(リストも使わない) def roll_dice(): dice1 = random.randint(1, 6) dice2 = random.randint(1, 6) return dice1, dice2 # 続けるかどうかを確認する関数 def ask_continue(): while True: try: continue_game = int(input("続けますか?(はい:0,いいえ:1) ⇒ ")) if continue_game == 0 or continue_game == 1: return continue_game else: print("無効な入力です!0か1を入力してください。") except ValueError: print("無効な入力です!数字を入力してください。") # メインのゲーム関数 def cho_han_game(): print("丁半賭博ゲームを始めます!") money = 1000 # プレイヤーの初期所持金 while money > 0: print(f"プレイヤーの所持金: {money}円") # 掛け金を取得 bet = get_bet(money) # 丁か半かの選択 choice = get_choice() # サイコロを振る dice1, dice2 = roll_dice() dice_sum = dice1 + dice2 print(f"サイコロの目: {dice1}, {dice2} ⇒ {'丁' if dice_sum % 2 == 0 else '半'}") # 勝敗判定 if (dice_sum % 2 == 0 and choice == 0) or (dice_sum % 2 != 0 and choice == 1): print(f"あなたの勝ち!賞金は{bet}円") money += bet else: print(f"あなたの負け!{bet}円没収!") money -= bet # 続けるかどうかを確認 if money > 0: if ask_continue() == 1: print(f"最終所持金は{money}円でした。") break else: print("所持金がなくなりました。ゲームを終了します。") break print(f"最終所持金は{money}円でした。丁半賭博ゲームを終わります。") # ゲームを実行 cho_han_game()
丁半賭博ゲームのコードは以上です。楽しんでください^^
コードの解説はこちらを参照。
【★★★☆☆】石取りゲーム
石取りゲームは2人のプレイヤーが交互に石を取るターン制のゲームです。
このゲームでは15個の石を山に置き、プレイヤーが1ターンに取れる石の数は1個から3個までです。
プレイヤーは交互に石を取り、最後の石を取ったプレイヤーが負けとなります。Pythonでこのゲームを実装してみましょう。
本サイトで紹介するコードを実行すると、↓↓のような出力となります。
石取りゲームへようこそ! プレイヤー1の番です。残りの石は 15 個です。 プレイヤー1, 何個の石を取りますか?(1~3個まで選べます):2 プレイヤー2の番です。残りの石は 13 個です。 プレイヤー2, 何個の石を取りますか?(1~3個まで選べます):3 ... プレイヤー1が最後の石を取りました。プレイヤー1の負けです!
いきなりコードを見るのではなく練習問題形式で作成したい人は↓↓をクリック
石取りゲームのコードは↓↓をクリック
# 石取りゲームの開始 def is_valid_move(stones, move): # プレイヤーの選択した石の数が有効かどうかを判定する関数 return 1 <= move <= 3 and move <= stones def take_turn(player, stones): # 各プレイヤーのターンを処理する関数 print(f"\n{player}の番です。残りの石は {stones} 個です。") move = int(input(f"{player}, 何個の石を取りますか?(1~3個まで選べます):")) # プレイヤーが有効な数を選択するまで繰り返し while not is_valid_move(stones, move): print("無効な選択です。もう一度選んでください。") move = int(input(f"{player}, 何個の石を取りますか?(1~3個まで選べます):")) # 石を減らす stones -= move return stones def play_game(): # 石取りゲームのメイン関数 print("石取りゲームへようこそ!") stones = 15 # ゲーム開始時の石の数 turn = 1 # 1ならプレイヤー1、2ならプレイヤー2 # 石が残っている限りゲームを続ける while stones > 0: # プレイヤーの切り替え if turn == 1: current_player = "プレイヤー1" else: current_player = "プレイヤー2" # 現在のプレイヤーのターンを実行 stones = take_turn(current_player, stones) # 石が0になったらゲーム終了 if stones == 0: print(f"\n{current_player}が最後の石を取りました。{current_player}の負けです!") break # ターンを交代 if turn == 1: turn = 2 else: turn = 1 # ゲームの実行 if __name__ == "__main__": play_game()
石取りゲームのコードは以上です。楽しんでください^^
コードの解説はこちらを参照。
【★★★★☆】宝探しゲーム
ランダムな位置にある宝を探し当てるゲームのコードを紹介します。
プレイヤーは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
いきなりコードを見るのではなく練習問題形式で作成したい人は↓↓をクリック
宝探しゲームのコードは↓↓をクリック
import random # グリッドサイズを定義 GRID_SIZE = 5 # グリッドを初期化する関数 def initialize_grid(): grid = [] count = 1 for i in range(GRID_SIZE): row = [] for j in range(GRID_SIZE): row.append(f"{count:02d}") # 01, 02, 03...の形式で初期化 count += 1 grid.append(row) return grid # グリッドを表示する関数 def display_grid(grid): print("現在のグリッド:") for row in grid: print(" ".join(row)) print() # ヒントを提供する関数 def give_hint(player_x, player_y, treasure_x, treasure_y): hint = [] if player_x < treasure_x: hint.append("右") elif player_x > treasure_x: hint.append("左") if player_y < treasure_y: hint.append("下") elif player_y > treasure_y: hint.append("上") return " ".join(hint) + " に宝があります。" # 宝探しゲームを実行する関数 def treasure_hunt_game(): # グリッドと宝の位置を初期化 grid = initialize_grid() treasure_x = random.randint(0, GRID_SIZE - 1) treasure_y = random.randint(0, GRID_SIZE - 1) print("宝探しゲームへようこそ!1から25までの数字で宝を探し当ててください。") print("宝を探すチャンスは3回です。") display_grid(grid) attempts = 0 found_treasure = False while attempts < 3 and not found_treasure: try: choice = int(input("1から25のマス番号を入力してください: ")) - 1 if choice < 0 or choice >= GRID_SIZE * GRID_SIZE: print("無効な番号です。1から25までの数字を入力してください。") continue player_x = choice % GRID_SIZE player_y = choice // GRID_SIZE # 既に選択した場所は選べないようにする if grid[player_y][player_x] == "*": print("そのマスは既に選択されています。別のマスを選んでください。") continue # 宝を見つけた場合 if player_x == treasure_x and player_y == treasure_y: print("おめでとうございます!宝を見つけました!") grid[player_y][player_x] = "☆" # 宝の位置を☆で表示 found_treasure = True else: # 選んだ場所を*でマークし、ヒントを出す grid[player_y][player_x] = "*" print(give_hint(player_x, player_y, treasure_x, treasure_y)) attempts += 1 print(f"残りのチャンス: {3 - attempts}回") display_grid(grid) except ValueError: print("無効な入力です。1から25までの数字を入力してください。") if not found_treasure: print("残念ながら、チャンスを使い切りました。宝は見つかりませんでした。") # ゲームを実行 treasure_hunt_game()
宝探しゲームのコードは以上です。楽しんでください^^
コードの解説はこちらを参照。
【★★★★☆】ナインゲーム
プレイヤーとコンピュータが交互に牌を選んで得点を競う「ナインゲーム」のコードを紹介します。
プレイヤーは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点 ...
いきなりコードを見るのではなく練習問題形式で作成したい人は↓↓をクリック
ナインゲームのコードは↓↓をクリック
import random def display_tiles(title, tiles): print(f"{title}⇒【", end="") print(" ,".join([str(tile) if tile != -1 else "-" for tile in tiles]), end="") print("】") def display_scores(player_score, computer_score): print(f"プレイヤーの得点 : {player_score}点") print(f"コンピュータの得点: {computer_score}点") def get_player_choice(tiles): while True: try: choice = int(input("持ち牌の中から出す牌を選択してください > ")) if choice in tiles: return choice else: print("無効な選択です。再度選択してください。") except ValueError: print("数字を入力してください。") def get_computer_choice(tiles): return random.choice(tiles) def main(): # プレイヤーとコンピュータの持ち牌(1〜9) player_tiles = [1, 2, 3, 4, 5, 6, 7, 8, 9] computer_tiles = [1, 2, 3, 4, 5, 6, 7, 8, 9] # プレイヤーとコンピュータの得点 player_score = 0 computer_score = 0 print("ナインゲームを開始します!") for round_num in range(1, 10): # 現在の回戦を表示 print(f"\n【第{round_num}回戦】") # 現在の得点を表示 display_scores(player_score, computer_score) # 現在の持ち牌を表示 display_tiles("☆プレイヤーの持ち牌", player_tiles) display_tiles("コンピュータの持ち牌", computer_tiles) # プレイヤーが牌を選択 player_choice = get_player_choice([tile for tile in player_tiles if tile != -1]) # コンピュータが牌を選択 computer_choice = get_computer_choice([tile for tile in computer_tiles if tile != -1]) # 両者の牌を比較し、結果を表示 print(f"プレイヤーの打牌:{player_choice}", end="") if player_choice > computer_choice: print(f" > {computer_choice}:コンピュータの打牌") player_score += player_choice print(f"プレイヤーは{player_choice}点獲得") elif player_choice < computer_choice: print(f" < {computer_choice}:コンピュータの打牌") computer_score += computer_choice print(f"コンピュータは{computer_choice}点獲得") else: print(f" = {computer_choice}:コンピュータの打牌") print("引き分けです。得点はなし") # 使用した牌を無効にする player_tiles[player_tiles.index(player_choice)] = -1 computer_tiles[computer_tiles.index(computer_choice)] = -1 # 最終結果を表示 print("\nゲーム終了!") display_scores(player_score, computer_score) if player_score > computer_score: print("プレイヤーの勝利です!") elif player_score < computer_score: print("コンピュータの勝利です!") else: print("引き分けです!") if __name__ == "__main__": main()
ナインゲームのコードは以上です。楽しんでください^^
コードの解説はこちらを参照。
【★★★★☆】マルバツゲーム
コンピュータと対戦する簡単なマルバツゲームのコードを紹介します。
プレイヤーとコンピュータが交互に○と×を選択し、最初に縦・横・斜めのラインを揃えた方が勝ちです。
このプログラムでは、ユーザーからの入力に応じて盤面を更新し、勝利または引き分けを判定します。
ゲームが終了した後は結果を表示します。
本サイトで紹介するコードを実行すると、↓↓のような出力となります。
マルバツゲームを開始します! 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
いきなりコードを見るのではなく練習問題形式で作成したい人は↓↓をクリック
マルバツゲームのコードは↓↓をクリック
import random # グリッドを表示する関数 def display_board(board): print(f"{board[ 0]} | {board[ 1]} | {board[ 2]}") print("--+---+--") print(f"{board[ 3]} | {board[ 4]} | {board[ 5]}") print("--+---+--") print(f"{board[ 6]} | {board[ 7]} | {board[ 8]}") # 勝利を判定する関数 def check_win(board, mark): win_patterns = [ [ 0, 1, 2], [ 3, 4, 5], [ 6, 7, 8], # 横 [ 0, 3, 6], [ 1, 4, 7], [ 2, 5, 8], # 縦 [ 0, 4, 8], [ 2, 4, 6] # 斜め ] return any(all(board[i] == mark for i in pattern) for pattern in win_patterns) # 引き分けを判定する関数 def check_draw(board): return all(space == "○" or space == "×" for space in board) # コンピュータがランダムにマスを選ぶ関数 def computer_move(board): available_moves = [i for i, space in enumerate(board) if space != "○" and space != "×"] return random.choice(available_moves) # マルバツゲームのメイン関数 def play_game(): board = [str(i) for i in range(1, 10)] # 1から9までの番号が入ったグリッド print("マルバツゲームを開始します!") while True: # 現在のグリッドを表示 display_board(board) # プレイヤーのターン while True: try: player_move = int(input("どのマスに置きますか?(1-9で入力してください)> ")) - 1 if board[player_move] not in ["○", "×"]: board[player_move] = "○" break else: print("そのマスはすでに埋まっています。別のマスを選んでください。") except (ValueError, IndexError): print("無効な入力です。1から9の数字を入力してください。") # 勝利判定 if check_win(board, "○"): display_board(board) print("プレイヤーの勝ちです!") break # 引き分け判定 if check_draw(board): display_board(board) print("引き分けです!") break # コンピュータのターン print("コンピュータのターンです...") comp_move = computer_move(board) board[comp_move] = "×" print(f"コンピュータが選んだマス: {comp_move + 1}") # 勝利判定 if check_win(board, "×"): display_board(board) print("コンピュータの勝ちです!") break # 引き分け判定 if check_draw(board): display_board(board) print("引き分けです!") break if __name__ == "__main__": play_game()
マルバツゲームのコードは以上です。楽しんでください^^
コードの解説はこちらを参照。
【★★★★★】モンスター捕獲ゲーム
モンスター捕獲ゲームを作成しましょう。
プレイヤーはスライム、ゴブリン、ドラゴンの3種類のモンスターに挑みます。
それぞれのモンスターとサイコロを使って勝負し、プレイヤーのサイコロの出目がモンスターの出目より大きければ捕獲に成功します。
モンスターを一匹でも多く捕まえることを目指し、捕まえたモンスターのリストを最後に表示してください。
本サイトで紹介するコードを実行すると、↓↓のような出力となります。
スライムが現れた! スライムがサイコロを振った。出目は 3 サイコロを振りますか? (yes/no): yes プレイヤーがサイコロを振った。出目は 5 スライムを捕まえた! ゴブリンが現れた! ゴブリンがサイコロを振った。出目は 4 サイコロを振りますか? (yes/no): yes プレイヤーがサイコロを振った。出目は 2 ゴブリンを捕まえられなかった。ゲームオーバー!
いきなりコードを見るのではなく練習問題形式で作成したい人は↓↓をクリック
モンスター捕獲ゲームのコードは↓↓をクリック
import random # モンスタークラス class Monster: def __init__(self, name): self.name = name # モンスターの名前を取得 def get_name(self): return self.name # サイコロを振る(1~6のランダムな数字を返す) def dice_roll(self): return random.randint(1, 6) # モンスター捕獲ゲーム関数 def monster_capture_game(): monsters = [Monster("スライム"), Monster("ゴブリン"), Monster("ドラゴン")] captured_monsters = [] # 各モンスターとの対決 for monster in monsters: print(f"{monster.get_name()}が現れた!") captured = False while not captured: monster_roll = monster.dice_roll() print(f"{monster.get_name()}がサイコロを振った。出目は {monster_roll}") # プレイヤーにサイコロを振るか選ばせる response = input("サイコロを振りますか? (yes/no): ").strip().lower() if response == "no": break player_roll = monster.dice_roll() print(f"プレイヤーがサイコロを振った。出目は {player_roll}") # プレイヤーの出目による判定 if player_roll > monster_roll: print(f"{monster.get_name()}を捕まえた!") captured_monsters.append(monster.get_name()) captured = True elif player_roll == monster_roll: print("引き分けでもう一度!") else: print(f"{monster.get_name()}を捕まえられなかった。ゲームオーバー!") return # 捕まえたモンスターを表示 print("捕まえたモンスター: " + ", ".join(captured_monsters)) print("ゲーム終了") # ゲームを実行 if __name__ == "__main__": monster_capture_game()
モンスター捕獲ゲームのコードは以上です。楽しんでください^^
コードの解説はこちらを参照。
【★★★★★】モンスターとのバトルゲーム
シンプルなターン制バトルゲームを作成しましょう。
このゲームでは「勇者」と「ドラゴン」というキャラクターが互いに攻撃や防御を行います。
勇者が攻撃を選択した場合、ドラゴンのHPが減少し、防御を選択した場合、ドラゴンの次の攻撃を防ぐことができます。
ドラゴンは一定の確率で攻撃を成功させることができ、攻撃が失敗するたびに次の攻撃の成功率が上がります。
勇者のHPが0になった場合はゲームオーバー、ドラゴンのHPが0になった場合はプレイヤーの勝利です。
本サイトで紹介するコードを実行すると、↓↓のような出力となります。
勇者のHP: 100, ドラゴンのHP: 100, ドラゴンの攻撃成功率: 60% 攻撃するか防御するかを選んでください (1: 攻撃, 2: 防御): 1 勇者の攻撃! ドラゴンに20のダメージ! ドラゴンのHP: 80, ドラゴンの攻撃! 攻撃が成功! 勇者に40のダメージ! 勇者のHP: 60, ドラゴンのHP: 80, ドラゴンの攻撃成功率: 60% 攻撃するか防御するかを選んでください (1: 攻撃, 2: 防御): 2 勇者は防御を選択した! ドラゴンの攻撃! 攻撃がミス!防御が成功しました!
いきなりコードを見るのではなく練習問題形式で作成したい人は↓↓をクリック
モンスターとのバトルゲームのコードは↓↓をクリック
import random # プレイヤーとモンスターのクラス定義 class Character: def __init__(self, name, hp, attack_power): self.name = name self.hp = hp self.attack_power = attack_power def is_alive(self): return self.hp > 0 # ゲームの初期設定 player = Character("勇者", 100, 20) monster = Character("ドラゴン", 100, 40) monster_attack_chance = 60 # 初期の攻撃成功率 # ゲームのメインループ while player.is_alive() and monster.is_alive(): # 現在のステータスを表示 print(f"\n勇者のHP: {player.hp}, ドラゴンのHP: {monster.hp}, ドラゴンの攻撃成功率: {monster_attack_chance}%") action = input("攻撃するか防御するかを選んでください (1: 攻撃, 2: 防御): ") # プレイヤーのターン if action == "1": print("勇者の攻撃!") monster.hp -= player.attack_power print(f"ドラゴンに{player.attack_power}のダメージ!") elif action == "2": print("勇者は防御を選択した!") defend = True else: print("無効な入力です。もう一度入力してください。") continue # モンスターのターン if monster.is_alive(): attack_roll = random.randint(1, 100) if attack_roll <= monster_attack_chance: if 'defend' in locals() and defend: print("ドラゴンの攻撃!") print("攻撃がミス!防御が成功しました!") del defend monster_attack_chance = 60 # 攻撃成功率をリセット else: print("ドラゴンの攻撃!") print("攻撃が成功!") player.hp -= monster.attack_power print(f"勇者に{monster.attack_power}のダメージ!") monster_attack_chance = 60 # 攻撃成功率をリセット else: print("ドラゴンの攻撃!") print("攻撃がミス!") monster_attack_chance += 20 # 攻撃成功率を上昇 # 勝敗の判定 if player.is_alive(): print("\nドラゴンを倒した!勇者の勝利!") else: print("\n勇者は倒された…ドラゴンの勝利!")
モンスターとのバトルのコードは以上です。楽しんでください^^
コードの解説はこちらを参照。
今後追加予定のゲーム一覧
以下のゲームのコードを順次追加予定です。
- 高度なじゃんけんゲーム
- ポーカーゲーム
- ブラックジャック
- 神経衰弱