は、ここでは、あなたのプログラム内の任意の文字を使用することができるCharacter
のためのクラスを作成することができる方法の例です。各クラスは、オブジェクトの一意の型を表す必要があります。この場合、「文字」です。各文字はそのクラスのインスタンスでなければなりません。関数またはクラスメソッドのいずれかを使って文字インスタンス間のやりとりを処理します。
class Character(object):
def __init__(self, name, attack, defense, health):
self.name = name
self.attack = attack
self.defense = defense
self.health = health
def injure(self, damage):
self.health = self.health - damage
def __str__(self):
return "Character: {}, A:{}, D:{}, H:{}".format(self.name, self.attack, self.defense, self.health)
def check(self):
print("this works")
def doAttack(self, other=None):
dmg = self.attack - other.defense
if dmg > 0:
other.injure(dmg)
print("{} caused {} damage to {}".format(self.name, dmg, other.name))
else:
print("{} did not injure {}".format(self.name, other.name))
hero = Character('Hero', 8, 10, 20)
opponent = Character('Monster', 4, 5, 10)
opponent.doAttack(hero)
print(hero)
print(opponent)
print()
hero.doAttack(opponent)
print(hero)
print(opponent)
print()
は、このコードを実行すると、生成します。
Monster did not injure Hero
Character: Hero, A:8, D:10, H:20
Character: Monster, A:4, D:5, H:10
Hero caused 3 damage to Monster
Character: Hero, A:8, D:10, H:20
Character: Monster, A:4, D:5, H:7
は、これはかなり基本的な例です。 Object Oriented Programming in Python(またはそれに類するテキスト)を読んで、オブジェクト指向コードの構造の背後にある概念を学ぶことができます。
'self = Character()'これは削除する必要があります。これはPythonでは行いません。 – Julien
あなたのアプローチには多くの問題があります。あるクラス定義内で関数を再定義し、使用していない変数を作成します( 'self = Character()'は決してアクセスしないクラス変数を作成します)。メインキャラクターと相手をプログラム内のキャラクターとして作成することができます(クラス内ではありません)。次に、主人公と相手の属性にアクセスし、それぞれの健康状態を適切に変更する「バトル」機能を持っています。 – Craig
@Craig、どうやって相手を作りますか?私のコードは、self = Character() –