New pathfinding that avoids most of the mobs getting stuck, closes #35

This commit is contained in:
Nicolas Margulies
2020-12-10 22:21:09 +01:00
parent 50d806cdcf
commit cc6033e8e4
3 changed files with 74 additions and 48 deletions

View File

@ -3,7 +3,6 @@
from squirrelbattle.interfaces import Map
from .display import Display
from squirrelbattle.entities.player import Player
class MapDisplay(Display):
@ -23,24 +22,27 @@ class MapDisplay(Display):
for e in self.map.entities:
self.addstr(self.pad, e.y, self.pack.tile_width * e.x,
self.pack[e.name.upper()], self.color_pair(2))
players = [ p for p in self.map.entities if isinstance(p,Player) ]
player = players[0] if len(players) > 0 else None
if player:
for x in range(self.map.width):
for y in range(self.map.height):
if (y,x) in player.paths:
deltay, deltax = (y - player.paths[(y, x)][0],
x - player.paths[(y, x)][1])
if (deltay, deltax) == (-1, 0):
character = ''
elif (deltay, deltax) == (1, 0):
character = ''
elif (deltay, deltax) == (0, -1):
character = ''
else:
character = ''
self.addstr(self.pad, y, self.pack.tile_width * x,
character, self.color_pair(1))
# Display Path map for deubg purposes
# from squirrelbattle.entities.player import Player
# players = [ p for p in self.map.entities if isinstance(p,Player) ]
# player = players[0] if len(players) > 0 else None
# if player:
# for x in range(self.map.width):
# for y in range(self.map.height):
# if (y,x) in player.paths:
# deltay, deltax = (y - player.paths[(y, x)][0],
# x - player.paths[(y, x)][1])
# if (deltay, deltax) == (-1, 0):
# character = '↓'
# elif (deltay, deltax) == (1, 0):
# character = '↑'
# elif (deltay, deltax) == (0, -1):
# character = '→'
# else:
# character = '←'
# self.addstr(self.pad, y, self.pack.tile_width * x,
# character, self.color_pair(1))
def display(self) -> None:
y, x = self.map.currenty, self.pack.tile_width * self.map.currentx