Progateを終わらせたので、そこで学んだことアウトプットするためにドラクエ風対戦ゲームを作りました。
概要
勇者とモンスターの名前、HP、攻撃力を設定して戦い勝敗を判定する。同じモンスターと戦っても面白くないので、クラスを使いモンスターを追加する。random.choiceを使ってドラクエと同じようにランダムにモンスターと戦うようにする。
ドラクエ風対戦ゲーム
まずはクラスMonsterを定義します。名前とHP、攻撃力を入力できるようにします。
battle
class Monster:
def __init__(self, name, hp, attack):
self.name = name
self.hp = hp
self.attack = attack
次に勇者のステータスを設定します。まだまだ駆け出しですね。
battle
hero_hp = 30
hero_attack = 5
いよいよモンスターを追加します!!
battle
slime = Monster('スライム', 10, 1)
drakey = Monster('ドラキー', 13, 2)
darkdream = Monster('ダークドレアム', 130000, 999)
モンスターとランダムに戦えるようにします。
battle
import random
monsters = [slime, drakey, darkdream]
appeard_monster = random.choice(monsters)
モンスターと戦います。
battle
print(appeard_monster.name + 'が現れた!')
while hero_hp > 0:
print('勇者の攻撃!')
appeard_monster.hp -= hero_attack
if appeard_monster.hp > 0:
print(appeard_monster.name + 'は' + str(hero_attack) + 'のダメージを受けた!')
print(' ')
else:
print(appeard_monster.name + 'は' + str(hero_attack) + 'のダメージを受けた!')
print(appeard_monster.name + 'は力尽きた')
print(' ')
print('勇者は戦闘に勝った!')
break
print(appeard_monster.name + 'の攻撃!')
print('勇者は' + str(appeard_monster.attack) + 'のダメージを受けた!')
print(' ')
hero_hp -= appeard_monster.attack
else:
print('勇者は力尽きた')
print(' ')
print('勇者は戦闘に負けた!')
実行するとこうなります。まずはドラキーが現れました。
ドラキーが現れた!
勇者の攻撃!
ドラキーは5のダメージを受けた!
ドラキーの攻撃!
勇者は2のダメージを受けた!
勇者の攻撃!
ドラキーは5のダメージを受けた!
ドラキーの攻撃!
勇者は2のダメージを受けた!
勇者の攻撃!
ドラキーは5のダメージを受けた!
ドラキーは力尽きた
勇者は戦闘に勝った!
次はスライム。楽勝ですね。
スライムが現れた!
勇者の攻撃!
スライムは5のダメージを受けた!
スライムの攻撃!
勇者は1のダメージを受けた!
勇者の攻撃!
スライムは5のダメージを受けた!
スライムは力尽きた
勇者は戦闘に勝った!
いきなり裏ボス登場。コテンパンにやられる、、、
ダークドレアムが現れた!
勇者の攻撃!
ダークドレアムは5のダメージを受けた!
ダークドレアムの攻撃!
勇者は999のダメージを受けた!
勇者は力尽きた
勇者は戦闘に負けた!
最後に
基本的な形はできたので、今後ステータスやレベルの次元を取り入れたり、特技を選択できるようにしていきたいですね。
勇者共々プログラミングスキルも成長していきたいものです!