2023-03-22 17:17:44 +00:00
|
|
|
from typing import Dict
|
2023-03-02 16:51:17 +00:00
|
|
|
from actions import Action, Idle, NA
|
2023-03-01 19:47:24 +00:00
|
|
|
|
|
|
|
class Entity():
|
|
|
|
pass
|
|
|
|
|
|
|
|
class Item(Entity):
|
|
|
|
pass
|
|
|
|
|
2023-03-13 18:46:29 +00:00
|
|
|
class Creature(Entity):
|
2023-03-21 18:36:19 +00:00
|
|
|
def __init__(self, codename):
|
|
|
|
self.speed = CREATURES_DATA[codename]["speed"]
|
|
|
|
self.max_hp = CREATURES_DATA[codename]["max_hp"]
|
|
|
|
self.hp = self.max_hp
|
|
|
|
self.damage = CREATURES_DATA[codename]["damage"]
|
2023-03-02 16:51:17 +00:00
|
|
|
self.action: Action = NA()
|
2023-03-01 19:47:24 +00:00
|
|
|
|
2023-03-13 18:46:29 +00:00
|
|
|
class Player(Creature):
|
2023-03-01 19:47:24 +00:00
|
|
|
def __init__(self):
|
2023-03-21 18:36:19 +00:00
|
|
|
super().__init__("player")
|
2023-03-22 17:17:44 +00:00
|
|
|
self.equipment: Dict[str, Dict | None] = {
|
|
|
|
"main_hand": None,
|
|
|
|
"feet": None
|
|
|
|
}
|
|
|
|
|
|
|
|
def equip(self, item, slot) -> None:
|
|
|
|
self.equipment[slot] = ITEMS_DATA[item]
|
|
|
|
|
|
|
|
def total_damage(self) -> int:
|
|
|
|
dmg = self.damage
|
|
|
|
for item in self.equipment.values():
|
|
|
|
if item: dmg += item["damage"]
|
|
|
|
return dmg
|
2023-03-01 19:47:24 +00:00
|
|
|
|
2023-03-13 18:46:29 +00:00
|
|
|
class Enemy(Creature):
|
2023-03-21 18:36:19 +00:00
|
|
|
def __init__(self, codename):
|
|
|
|
super().__init__(codename)
|
2023-03-02 16:51:17 +00:00
|
|
|
|
2023-03-22 17:17:44 +00:00
|
|
|
def calculate_action(self) -> None:
|
2023-03-21 18:36:19 +00:00
|
|
|
self.action: Action = Idle()
|
|
|
|
|
|
|
|
CREATURES_DATA = {
|
|
|
|
"player": {
|
|
|
|
"max_hp": 20,
|
|
|
|
"speed": 10,
|
|
|
|
"damage": 1
|
|
|
|
},
|
|
|
|
"slime": {
|
|
|
|
"max_hp": 5,
|
|
|
|
"speed": 5,
|
|
|
|
"damage": 1
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
ITEMS_DATA = {
|
2023-03-22 17:17:44 +00:00
|
|
|
"shiv": {
|
|
|
|
"damage": 3,
|
|
|
|
"name": "Shiv"
|
|
|
|
},
|
|
|
|
"fire_gem": {
|
|
|
|
"damage": 1,
|
|
|
|
"name": "Fire gem"
|
2023-03-21 18:36:19 +00:00
|
|
|
}
|
|
|
|
}
|