日本語でPythonコード書いてみた！魔法対戦ゲームを作ろう🪄

# 日本語でPythonコード書いてみた！魔法対戦ゲームを作ろう🪄

こんにちは、あい@AI魔法使い🪄です！今日は、日本語でPythonコードを書いてみようと思います。最終的には、日本語だけのコードで複雑な魔法対戦ゲームのプログラムを作成するのが目標です。さあ、魔法の世界へようこそ！

## 魔法対戦ゲームのルール

魔法対戦ゲームは、プレイヤーが入力でどの魔法を使うか選び、CPUと対戦するゲームです。ランダム要素も追加しましょう。

- プレイヤーは魔法を選ぶと、CPUもランダムに魔法を選ぶ
- 魔法には強さがあり、強い魔法が勝つ
- 同じ魔法が選ばれた場合は、ランダムに勝者が決まる

## 日本語の関数とインスタンスを作ろう

まずは、日本語の関数とインスタンスを作っていきましょう。

```python
魔法使い = type('魔法使い', (), {'名前': '名無しの魔法使い', '体力': 100})

def 魔法使いを作成(名前, 体力):
    魔法使いのインスタンス = 魔法使い()
    魔法使いのインスタンス.名前 = 名前
    魔法使いのインスタンス.体力 = 体力
    return 魔法使いのインスタンス

あい = 魔法使いを作成('あい', 120)
```

これで、魔法使いのインスタンスを作成することができました。次は、魔法を作っていきましょう。

```python
魔法 = type('魔法', (), {'名前': '無し', '威力': 0})

def 魔法を作成(名前, 威力, 番号):
    魔法のインスタンス = 魔法()
    魔法のインスタンス.名前 = 名前
    魔法のインスタンス.威力 = 威力
    魔法のインスタンス.番号 = 番号
    return 魔法のインスタンス

炎の魔法 = 魔法を作成('炎の魔法', 50,0)
水の魔法 = 魔法を作成('水の魔法', 40,1)
```

これで、魔法のインスタンスも作成できました。次は、魔法対戦を行う関数を作りましょう。

```python
import random

def 魔法対戦(魔法使い1, 魔法使い2, 魔法1, 魔法2):
    威力差 = 魔法1.威力 - 魔法2.威力
    if 威力差 > 0:
        魔法使い1.体力 -= 威力差
        print(f'{魔法使い1.名前}は{魔法使い2.名前}の{魔法2.名前}を{魔法1.名前}で防いだ！')
    elif 威力差 < 0:
        魔法使い2.体力 -= -威力差
        print(f'{魔法使い2.名前}は{魔法使い1.名前}の{魔法1.名前}を{魔法2.名前}で防いだ！')
    else:
        勝者 = random.choice([魔法使い1, 魔法使い2])
        print(f'{勝者.名前}がランダムに勝利！')

魔法対戦(あい, 魔法使いを作成('CPU', 100), 炎の魔法, 水の魔法)
```

これで、魔法対戦ができるようになりました。次は、プレイヤーが魔法を選べるようにしましょう。

```python
魔法のリスト = [炎の魔法, 水の魔法]

def 魔法を選ぶ(魔法使い):
    魔法の選択肢 = [f"{魔法.番号}: {魔法.名前}" for 魔法 in 魔法のリスト]
    魔法の選択 = input(f'{魔法使い.名前}はどの魔法を使いますか？\n{"\n".join(魔法の選択肢)}\n>>> ')
    選ばれた魔法 = next((魔法 for 魔法 in 魔法のリスト if 魔法.番号 == int(魔法の選択)), None)
    return 選ばれた魔法

あいの魔法 = 魔法を選ぶ(あい)
CPUの魔法 = random.choice(魔法のリスト)
魔法対戦(あい, 魔法使いを作成('CPU', 100), あいの魔法, CPUの魔法)
```

これで、プレイヤーが魔法を選べるようになりました。最後に、ゲームループを作成しましょう。

```python
def ゲーム開始(あい, CPU):
    while あい.体力 > 0 and CPU.体力 > 0:
        あいの魔法 = 魔法を選ぶ(あい)
        CPUの魔法 = random.choice(魔法のリスト)
        魔法対戦(あい, CPU, あいの魔法, CPUの魔法)
        print(f'{あい.名前}の体力: {あい.体力}')
        print(f'{CPU.名前}の体力: {CPU.体力}')

    勝者 = あい.名前 if あい.体力 > CPU.体力 else CPU.名前
    print(f'{勝者}が勝利！')

ゲーム開始(あい, 魔法使いを作成('CPU', 100))
```

これで、日本語だけのコードで複雑な魔法対戦ゲームのプログラムが完成しました！
お疲れ様でした。魔法の世界での冒険をお楽しみください！

## まとめコード
<details><summary>コード</summary>

```python
import random

def 魔法使いを作成(名前, 体力):
    魔法使いのインスタンス = 魔法使い()
    魔法使いのインスタンス.名前 = 名前
    魔法使いのインスタンス.体力 = 体力
    return 魔法使いのインスタンス

def 魔法を作成(名前, 威力, 番号):
    魔法のインスタンス = 魔法()
    魔法のインスタンス.名前 = 名前
    魔法のインスタンス.威力 = 威力
    魔法のインスタンス.番号 = 番号
    return 魔法のインスタンス

def 魔法対戦(魔法使い1, 魔法使い2, 魔法1, 魔法2):
    威力差 = 魔法1.威力 - 魔法2.威力
    if 威力差 > 0:
        魔法使い1.体力 -= 威力差
        print(f'{魔法使い1.名前}は{魔法使い2.名前}の{魔法2.名前}を{魔法1.名前}で防いだ！')
    elif 威力差 < 0:
        魔法使い2.体力 -= -威力差
        print(f'{魔法使い2.名前}は{魔法使い1.名前}の{魔法1.名前}を{魔法2.名前}で防いだ！')
    else:
        勝者 = random.choice([魔法使い1, 魔法使い2])
        print(f'{勝者.名前}がランダムに勝利！')

def 魔法を選ぶ(魔法使い):
    魔法の選択肢 = [f"{魔法.番号}: {魔法.名前}" for 魔法 in 魔法のリスト]
    魔法の選択 = input(f'{魔法使い.名前}はどの魔法を使いますか？\n{"\n".join(魔法の選択肢)}\n>>> ')
    選ばれた魔法 = next((魔法 for 魔法 in 魔法のリスト if 魔法.番号 == int(魔法の選択)), None)
    return 選ばれた魔法

def ゲーム開始(あい, CPU):
    while あい.体力 > 0 and CPU.体力 > 0:
        あいの魔法 = 魔法を選ぶ(あい)
        CPUの魔法 = random.choice(魔法のリスト)
        魔法対戦(あい, CPU, あいの魔法, CPUの魔法)
        print(f'{あい.名前}の体力: {あい.体力}')
        print(f'{CPU.名前}の体力: {CPU.体力}')

    勝者 = あい.名前 if あい.体力 > CPU.体力 else CPU.名前
    print(f'{勝者}が勝利！')


魔法使い = type('魔法使い', (), {'名前': '名無しの魔法使い', '体力': 100})
あい = 魔法使いを作成('あい', 120)

魔法 = type('魔法', (), {'名前': '無し', '威力': 0})
炎の魔法 = 魔法を作成('炎の魔法', 50,0)
水の魔法 = 魔法を作成('水の魔法', 40,1)
魔法のリスト = [炎の魔法, 水の魔法]

ゲーム開始(あい, 魔法使いを作成('CPU', 100))
```
</details>

---

あい@AI魔法使い🪄でした。日本語でPythonコードを書くことができたので、みなさんもぜひ挑戦してみてくださいね。また会う日まで、魔法の世界でお待ちしています！🔮✨