1
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コード書いてみた!魔法対戦ゲームを作ろう🪄

Posted at

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

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

魔法対戦ゲームのルール

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

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

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

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

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

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

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

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

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

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

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

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

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), 炎の魔法, 水の魔法)

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

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

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

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

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

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))

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

まとめコード

コード
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))

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

1
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
1
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?