teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

クラスを使った例を追加

2019/12/09 10:13

投稿

shiracamus
shiracamus

スコア5406

answer CHANGED
@@ -19,4 +19,51 @@
19
19
  while enemyHp > 0:
20
20
  attack(friend)
21
21
  print("モンスターを倒した")
22
+ ```
23
+
24
+ クラスを使った例
25
+
22
- ```**ボールドテキスト**
26
+ ```python
27
+ import random
28
+
29
+ class Character:
30
+
31
+ def __init__(self, name, hp=0):
32
+ self.name = name
33
+ self.hp = hp
34
+
35
+ def __str__(self):
36
+ return self.name
37
+
38
+ def is_alive(self):
39
+ return self.hp > 0
40
+
41
+ def attack(self, target):
42
+ damage = random.randint(1, 10)
43
+ damage = target.damage(damage)
44
+ print(f"{self}は{target}に{damage}のダメージを与えた")
45
+ if not target.is_alive():
46
+ print(f"{self}は{target}を倒した。")
47
+
48
+ def damage(self, point):
49
+ point = min(point, self.hp)
50
+ self.hp -= point
51
+ return point
52
+
53
+ enemies = (
54
+ Character("ワイト", 70),
55
+ Character("ガーゴイル", 120),
56
+ Character("ナイト", 140),
57
+ )
58
+
59
+ friends = (
60
+ Character("勇者"),
61
+ Character("魔法使い"),
62
+ Character("武闘家"),
63
+ )
64
+
65
+ while any(enemy.is_alive() for enemy in enemies):
66
+ enemy = random.choice(enemies)
67
+ friend = random.choice(friends)
68
+ friend.attack(enemy)
69
+ ```

1

誤記訂正

2019/12/09 10:13

投稿

shiracamus
shiracamus

スコア5406

answer CHANGED
@@ -1,4 +1,5 @@
1
- グローバル変数に代入するならglobal宣言しましclass定義を使えば不要になりますけど
1
+ グローバル変数に代入するならglobal宣言しましょう
2
+ class定義を使えば不要になりますけど。
2
3
 
3
4
 
4
5
  ```python