Skip to content

Instantly share code, notes, and snippets.

@cacapon
Created August 27, 2021 02:04
Show Gist options
  • Save cacapon/993abc60dee24b08fb6e1620367f7897 to your computer and use it in GitHub Desktop.
Save cacapon/993abc60dee24b08fb6e1620367f7897 to your computer and use it in GitHub Desktop.
データと表示と操作を分離させてみた
class Data:
def __init__(self):
self._HP = 100
self._MP = 50
self.hp_lim = (0, self._HP)
self.mp_lim = (0, self._MP)
@property
def HP(self):
return self._HP
@HP.setter
def HP(self, value):
if value <= self.hp_lim[0]:
self._HP = self.hp_lim[0]
elif value >= self.hp_lim[1]:
self._HP = self.hp_lim[1]
else:
self._HP = value
@property
def MP(self):
return self._MP
@MP.setter
def MP(self, value):
if value <= self.mp_lim[0]:
self._MP = self.mp_lim[0]
elif value >= self.mp_lim[1]:
self._MP = self.mp_lim[1]
else:
self._MP = value
class Visual:
@staticmethod
def show(data):
print("HP:{}".format(data.HP))
print("MP:{}".format(data.MP))
print()
class Method:
def __init__(self, data):
self._data = data
def Damage(self, value):
self._data.HP -= value
def Heal(self, value):
self._data.HP += value
def Spend(self, value):
self._data.MP -= value
def main():
d = Data()
m = Method(d)
Visual().show(d)
m.Damage(20)
Visual().show(d)
m.Heal(15)
Visual().show(d)
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment