Generation

translateFri, 09 Jun 2023

これまでの課題で出てきた Player クラスを定義して ください. ※ 第7回のチャレンジ問題でフィールド dp,メソッド damage を追加したものは使わず,それ以前のものを使っ てください. (2) Weapon クラスを定義してください.文字列 name と数 値 ap をフィールドにもち,これらをコンストラクタで定義 してください.また,出力結果を参考に__str__メソッド を定義してください. (3) Player クラスに equip メソッドを追加してください. (equip: 装備する ) ● self の他に Weapon クラスのオブジェクト w を受け取 る ● 自分のフィールド weapon に w を書き込む (←自分が w を装備したことになる ) (4) Player クラスの attack メソッドを次のように変更し てください. ● 相手に与えるダメージ(hp の減る量)を「自分の ap+ 装備している Weapon の ap」にする. (5) Player クラスの status メソッドに,装備している weaponの情報を表示する処理を追加してください. (Weapon クラスの__str__メソッドを適切に定義しておけば簡潔に 書けます! ) (6) メインの処理(Player,status,attack の定義の後) では, p1 と p2 という 2 つの Player オブジェクトを,キー ボードから入力して作成してください. ● "Player 1"と表示し, p1について, name hp mp ap を 入力します. p2 についても同様に入力します. (7) w1 と w1 という 2 つの Weapon オブジェクトを,キー ボードから入力して作成してください. ● "Player 1 Weapon"と 表 示 し , w1 に つ い て , name ap を入力し ます. w2 について も同様に入力し ます. (8) p1 に w1 を, p2 に w2 を「装備させて」ください. (9) p1 と p2 について,それぞれ status を呼び出します. (10) p1.attack(p2) を呼び出します. (11) p1 と p2 について,それぞれ status を呼び出します. (12) p2.attack(p1) を呼び出します. (13) p1 と p2 について,それぞれ status を呼び出します. ●上記のプログラムが動作するようなコードを書いて,実 行しよう. (プログラムの行数は空欄の行数より多くても少 なくてもかまいません) 注意:動作が合っていても,上記の仕様の通りにクラス やメソッドを作成していない場合は不正解になります.入力 1-1 (name=? 等は実際には入力しません) ✏ name=? Slime hp=? 14 mp=? 0 ap=? 7 name=? Dragon hp=? 12 mp=? 0 ap=? 3 name=? Stick ap=? 1 name=? Knife ap=? 5 ✒ ✑ ✓出力 1-1 ✏ Player 1 Player 2 Player 1 Weapon Player 2 Weapon Name: Slime Hit Point: 14 Magic Point: 0 Attack Point: 7 Weapon: [Stick ap=1] Name: Dragon Hit Point: 12 Magic Point: 0 Attack Point: 3 Weapon: [Knife ap=5] Name: Slime Hit Point: 14 Magic Point: 0 Attack Point: 7 Weapon: [Stick ap=1] Name: Dragon Hit Point: 4 Magic Point: 0 Attack Point: 3 Weapon: [Knife ap=5] Name: Slime Hit Point: 6 Magic Point: 0 Attack Point: 7 Weapon: [Stick ap=1] Name: Dragon Hit Point: 4 Magic Point: 0 Attack Point: 3 Weapon: [Knife ap=5]

class Player: def __init__(self, name, hp, mp, ap): self.name = name self.hp = hp self.mp = mp self.ap = ap self.weapon = None def attack(self, target): damage = self.ap if self.weapon is not None: damage += self.weapon.ap target.hp -= damage def status(self): print("Name:", self.name) print("Hit Point:", self.hp) print("Magic Point:", self.mp) print("Attack Point:", self.ap) if self.weapon is not None: print("Weapon:",self.weapon) def equip(self, weapon): self.weapon = weapon class Weapon: def __init__(self, name, ap): self.name = name self.ap = ap def __str__(self): return "[" + self.name + " ap=" + str(self.ap)

Questions about programming?Chat with your personal AI assistant