User player entity instead of temporary Player class

This commit is contained in:
Yohann D'ANELLO 2020-11-06 17:48:47 +01:00
parent 81479f99e2
commit 8641e7d13d
3 changed files with 19 additions and 24 deletions

View File

@ -4,3 +4,15 @@ from ..interfaces import FightingEntity
class Player(FightingEntity): class Player(FightingEntity):
maxhealth = 20 maxhealth = 20
strength = 5 strength = 5
def move_up(self) -> None:
self.y -= 1
def move_down(self) -> None:
self.y += 1
def move_left(self) -> None:
self.x -= 1
def move_right(self) -> None:
self.x += 1

View File

@ -1,5 +1,6 @@
from typing import Any from typing import Any
from .entities.player import Player
from .interfaces import Map from .interfaces import Map
from .mapdisplay import MapDisplay from .mapdisplay import MapDisplay
from .settings import Settings from .settings import Settings
@ -22,8 +23,8 @@ class Game:
m = Map.load("example_map.txt") m = Map.load("example_map.txt")
player = Player() player = Player()
self.player = player self.player = player
player.y = 1 m.entities.append(player)
player.x = 6 player.move(1, 6)
d = MapDisplay(m, player) d = MapDisplay(m, player)
while True: while True:
screen.clear() screen.clear()
@ -43,20 +44,3 @@ class Game:
if key == 'd' or key == 'KEY_RIGHT': if key == 'd' or key == 'KEY_RIGHT':
self.player.move_right() self.player.move_right()
class Player:
# FIXME Should be elsewhere, only useful to don't break the previous code
y: int = 0
x: int = 0
def move_up(self) -> None:
self.y -= 1
def move_down(self) -> None:
self.y += 1
def move_left(self) -> None:
self.x -= 1
def move_right(self) -> None:
self.x += 1

View File

@ -1,22 +1,21 @@
#!/usr/bin/env python #!/usr/bin/env python
import curses import curses
from typing import Any
from dungeonbattle.entities.player import Player
from dungeonbattle.interfaces import Map from dungeonbattle.interfaces import Map
class MapDisplay: class MapDisplay:
def __init__(self, m: Map, player: Any): def __init__(self, m: Map, player: Player):
# TODO Type the player field with the good type
self.map = m self.map = m
self.pad = curses.newpad(m.height, m.width + 1) self.pad = curses.newpad(m.height, m.width + 1)
self.player = player self.player = player
def update_pad(self) -> None: def update_pad(self) -> None:
self.pad.addstr(0, 0, self.map.draw_string()) self.pad.addstr(0, 0, self.map.draw_string())
# TODO Not all entities should be a player
for e in self.map.entities: for e in self.map.entities:
self.pad.addch(e.y, e.x, e.img) self.pad.addstr(e.y, e.x, '🐿')
self.pad.addstr(self.player.getPosY(), self.player.getPosX(), '🐿')
def display(self, y: int, x: int) -> None: def display(self, y: int, x: int) -> None:
deltay, deltax = (curses.LINES // 2) + 1, (curses.COLS // 2) + 1 deltay, deltax = (curses.LINES // 2) + 1, (curses.COLS // 2) + 1