class Character:
def __init__(self, name, team, is_player=False):
# Thuộc tính cơ bản
self.name = name
self.team = team # 'Blue' hoặc 'Red'
self.is_player = is_player
self.health = 100
self.damage = 10
self.position = (0, 0) # Ví dụ: vị trí trên bản đồ (x, y)
self.target = None # Mục tiêu hiện tại
def take_damage(self, amount):
self.health -= amount
# Dùng cú pháp print của Python 2 (không cần dấu ngoặc đơn)
# và dùng phương pháp định dạng chuỗi cũ hơn %s / %d
if self.health <= 0:
print "%s da bi ha guc!" % self.name
return True # Nhân vật đã chết
return False
def move(self, new_position):
self.position = new_position
def attack(self, target_character):
print "%s tan cong %s" % (self.name, target_character.name)
target_character.take_damage(self.damage)
def __str__(self):
# Dùng phương thức format() hoặc %
return "[%s] %s | HP: %d" % (self.team, self.name, self.health)
Y2xhc3MgQ2hhcmFjdGVyOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHRlYW0sIGlzX3BsYXllcj1GYWxzZSk6CiAgICAgICAgIyBUaHXhu5ljIHTDrW5oIGPGoSBi4bqjbgogICAgICAgIHNlbGYubmFtZSA9IG5hbWUKICAgICAgICBzZWxmLnRlYW0gPSB0ZWFtICAjICdCbHVlJyBob+G6t2MgJ1JlZCcKICAgICAgICBzZWxmLmlzX3BsYXllciA9IGlzX3BsYXllcgogICAgICAgIHNlbGYuaGVhbHRoID0gMTAwCiAgICAgICAgc2VsZi5kYW1hZ2UgPSAxMAogICAgICAgIHNlbGYucG9zaXRpb24gPSAoMCwgMCkgICMgVsOtIGThu6U6IHbhu4sgdHLDrSB0csOqbiBi4bqjbiDEkeG7kyAoeCwgeSkKICAgICAgICBzZWxmLnRhcmdldCA9IE5vbmUgICAgICAjIE3hu6VjIHRpw6p1IGhp4buHbiB04bqhaQoKICAgIGRlZiB0YWtlX2RhbWFnZShzZWxmLCBhbW91bnQpOgogICAgICAgIHNlbGYuaGVhbHRoIC09IGFtb3VudAogICAgICAgICMgRMO5bmcgY8O6IHBow6FwIHByaW50IGPhu6dhIFB5dGhvbiAyIChraMO0bmcgY+G6p24gZOG6pXUgbmdv4bq3YyDEkcahbikKICAgICAgICAjIHbDoCBkw7luZyBwaMawxqFuZyBwaMOhcCDEkeG7i25oIGThuqFuZyBjaHXhu5dpIGPFqSBoxqFuICVzIC8gJWQKICAgICAgICBpZiBzZWxmLmhlYWx0aCA8PSAwOgogICAgICAgICAgICBwcmludCAiJXMgZGEgYmkgaGEgZ3VjISIgJSBzZWxmLm5hbWUKICAgICAgICAgICAgcmV0dXJuIFRydWUgICMgTmjDom4gduG6rXQgxJHDoyBjaOG6v3QKICAgICAgICByZXR1cm4gRmFsc2UKCiAgICBkZWYgbW92ZShzZWxmLCBuZXdfcG9zaXRpb24pOgogICAgICAgIHNlbGYucG9zaXRpb24gPSBuZXdfcG9zaXRpb24KCiAgICBkZWYgYXR0YWNrKHNlbGYsIHRhcmdldF9jaGFyYWN0ZXIpOgogICAgICAgIHByaW50ICIlcyB0YW4gY29uZyAlcyIgJSAoc2VsZi5uYW1lLCB0YXJnZXRfY2hhcmFjdGVyLm5hbWUpCiAgICAgICAgdGFyZ2V0X2NoYXJhY3Rlci50YWtlX2RhbWFnZShzZWxmLmRhbWFnZSkKCiAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICAjIETDuW5nIHBoxrDGoW5nIHRo4bupYyBmb3JtYXQoKSBob+G6t2MgJQogICAgICAgIHJldHVybiAiWyVzXSAlcyB8IEhQOiAlZCIgJSAoc2VsZi50ZWFtLCBzZWxmLm5hbWUsIHNlbGYuaGVhbHRoKQo=