0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Pythonを使用した簡単な敵を倒すRPGを作ってみた

Last updated at Posted at 2024-10-18

Pythonを使用した簡単な敵を倒すRPGを作ってみた

こんにちは、プログラミング初心者の皆さん!今回は、Pythonを使って簡単なRPG(ロールプレイングゲーム)を作成する方法をご紹介します。このチュートリアルでは、基本的なゲームの構造から、プレイヤーと敵の設定、戦闘システムの実装までをステップバイステップで解説します。Pythonの基本的な知識があれば、誰でも楽しんで作成できる内容となっていますので、ぜひ最後までお付き合いください。

はじめに

HI Engineer Collegeでは、実務未経験のエンジニアの方や、エンジニアに興味がある方を募集したおります、まずはお気軽にお問い合わせください。

※ (株)G&T(【内々定まで最短2週間】ゼロからしっかりじっくり研修☆20代活躍中!)

※ HI Engineer Collegeに興味あがある方はこちら(プログラミングを学習したい方)

※ ※ プログラミングでわからない事などを相談したい場合にはLINEオープンチャットにご参加ください(無料)


目次

  1. 必要な準備
  2. ゲームの基本構造
  3. プレイヤーと敵のクラス作成
  4. 戦闘システムの実装
  5. ゲームのループ
  6. まとめ

必要な準備

このチュートリアルを始める前に、以下のものを準備してください。

  • Pythonのインストール: Python 3.xを公式サイトからダウンロードしてインストールしてください。
  • テキストエディタ: Visual Studio Code、Atom、Sublime Textなど、お好みのテキストエディタを用意してください。

ゲームの基本構造

まず、ゲームの基本的な流れを設計します。今回はシンプルなテキストベースのRPGを作成します。プレイヤーは敵と戦い、敵を倒すことを目指します。

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

  1. ゲームの開始
  2. プレイヤーと敵のステータス表示
  3. プレイヤーの攻撃
  4. 敵の攻撃
  5. 戦闘の結果判定
  6. ゲームの終了

プレイヤーと敵のクラス作成

オブジェクト指向プログラミングを活用して、プレイヤーと敵のクラスを作成します。これにより、ステータスや行動を簡単に管理できます。

# game.py

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

    def attack(self, other):
        damage = random.randint(1, self.attack_power)
        other.hp -= damage
        print(f"{self.name}の攻撃! {other.name}{damage}のダメージを与えた。")
        if not other.is_alive():
            print(f"{other.name}を倒した!")

class Player(Character):
    def __init__(self, name="勇者", hp=30, attack_power=10):
        super().__init__(name, hp, attack_power)

class Enemy(Character):
    def __init__(self, name="スライム", hp=20, attack_power=8):
        super().__init__(name, hp, attack_power)

解説:

  • Characterクラスは、共通のキャラクター属性(名前、HP、攻撃力)とメソッド(攻撃や生存判定)を持っています。
  • PlayerクラスとEnemyクラスは、Characterクラスを継承し、それぞれに固有の初期値を設定しています。

戦闘システムの実装

次に、プレイヤーと敵が交互に攻撃し合う戦闘システムを実装します。

def battle(player, enemy):
    print(f"バトル開始! {player.name} vs {enemy.name}\n")
    while player.is_alive() and enemy.is_alive():
        # プレイヤーのターン
        player.attack(enemy)
        if not enemy.is_alive():
            break

        # 敵のターン
        enemy.attack(player)
        if not player.is_alive():
            break

        print(f"\n{player.name}のHP: {player.hp}")
        print(f"{enemy.name}のHP: {enemy.hp}\n")
    
    if player.is_alive():
        print("勝利!おめでとうございます!")
    else:
        print("敗北...また挑戦してください。")

解説:

  • battle関数は、プレイヤーと敵が互いに攻撃し合うループを実行します。
  • 各ターンでプレイヤーが先に攻撃し、敵が倒された場合はループを抜けます。
  • 敵が生きている場合は、敵がプレイヤーを攻撃します。
  • 各ターンの終わりに、双方のHPを表示します。
  • 最終的に、勝敗を判定して結果を表示します。

ゲームのループ

最後に、ゲームのメインループを作成します。プレイヤーがゲームを開始し、敵と戦闘を行います。

def main():
    print("=== 簡単なRPGゲーム ===")
    player_name = input("あなたの名前を入力してください: ")
    player = Player(name=player_name)
    enemy = Enemy()

    print(f"\n{player.name}が冒険を始めた!\n")
    battle(player, enemy)

if __name__ == "__main__":
    main()

解説:

  • main関数では、ゲームのタイトルを表示し、プレイヤーの名前を入力させます。
  • PlayerインスタンスとEnemyインスタンスを作成し、battle関数を呼び出します。
  • if __name__ == "__main__":により、このスクリプトが直接実行された場合にmain関数が実行されます。

全体のコード

ここまでのステップをまとめた完全なコードは以下の通りです。

# game.py

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

    def attack(self, other):
        damage = random.randint(1, self.attack_power)
        other.hp -= damage
        print(f"{self.name}の攻撃! {other.name}{damage}のダメージを与えた。")
        if not other.is_alive():
            print(f"{other.name}を倒した!")

class Player(Character):
    def __init__(self, name="勇者", hp=30, attack_power=10):
        super().__init__(name, hp, attack_power)

class Enemy(Character):
    def __init__(self, name="スライム", hp=20, attack_power=8):
        super().__init__(name, hp, attack_power)

def battle(player, enemy):
    print(f"バトル開始! {player.name} vs {enemy.name}\n")
    while player.is_alive() and enemy.is_alive():
        # プレイヤーのターン
        player.attack(enemy)
        if not enemy.is_alive():
            break

        # 敵のターン
        enemy.attack(player)
        if not player.is_alive():
            break

        print(f"\n{player.name}のHP: {player.hp}")
        print(f"{enemy.name}のHP: {enemy.hp}\n")
    
    if player.is_alive():
        print("勝利!おめでとうございます!")
    else:
        print("敗北...また挑戦してください。")

def main():
    print("=== 簡単なRPGゲーム ===")
    player_name = input("あなたの名前を入力してください: ")
    player = Player(name=player_name)
    enemy = Enemy()

    print(f"\n{player.name}が冒険を始めた!\n")
    battle(player, enemy)

if __name__ == "__main__":
    main()

実行してみよう

  1. 上記のコードをgame.pyという名前で保存します。
  2. ターミナル(コマンドプロンプト)を開き、保存したディレクトリに移動します。
  3. 以下のコマンドを実行してゲームを開始します。
python game.py

実行例:

=== 簡単なRPGゲーム ===
あなたの名前を入力してください: 太郎

太郎が冒険を始めた!

バトル開始! 太郎 vs スライム

太郎の攻撃! スライムに7のダメージを与えた。
スライムの攻撃! 太郎に5のダメージを与えた。

太郎のHP: 25
スライムのHP: 13

太郎の攻撃! スライムに9のダメージを与えた。
スライムを倒した!
勝利!おめでとうございます!

まとめ

今回は、Pythonを使って簡単な敵を倒すRPGを作成する方法をご紹介しました。クラスを活用することで、プレイヤーや敵のステータス管理が容易になり、戦闘システムの実装もシンプルに行えました。さらに機能を追加することで、より複雑で楽しいゲームに発展させることも可能です。

追加アイデア

  • アイテムの導入: 回復アイテムや強化アイテムを追加。
  • 複数の敵: 複数の敵との戦闘を実装。
  • レベルアップシステム: プレイヤーが経験値を獲得し、レベルアップする仕組み。
  • スキルや魔法: 特殊な攻撃や防御スキルを追加。

プログラミングは試行錯誤の連続です。ぜひ、自分だけのRPGを作り上げて楽しんでください!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?