Compare commits
No commits in common. "3cfe2a57b45c27d8e3b82bd55db424c16d1767d7" and "586fd80706e1d655b5e0c85426a6251a61198cc7" have entirely different histories.
3cfe2a57b4
...
586fd80706
3 changed files with 0 additions and 308 deletions
|
@ -75,7 +75,6 @@ nest-asyncio==1.6.0
|
||||||
notebook==7.3.2
|
notebook==7.3.2
|
||||||
notebook_shim==0.2.4
|
notebook_shim==0.2.4
|
||||||
numpy==2.0.2
|
numpy==2.0.2
|
||||||
nvidia-nccl-cu12==2.25.1
|
|
||||||
opt_einsum==3.4.0
|
opt_einsum==3.4.0
|
||||||
optree==0.14.0
|
optree==0.14.0
|
||||||
overrides==7.7.0
|
overrides==7.7.0
|
||||||
|
@ -138,4 +137,3 @@ Werkzeug==3.1.3
|
||||||
wheel==0.45.1
|
wheel==0.45.1
|
||||||
widgetsnbextension==4.0.13
|
widgetsnbextension==4.0.13
|
||||||
wrapt==1.17.2
|
wrapt==1.17.2
|
||||||
xgboost==2.1.4
|
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1,103 +0,0 @@
|
||||||
from enum import Enum
|
|
||||||
import numpy as np
|
|
||||||
|
|
||||||
|
|
||||||
class Direction(Enum):
|
|
||||||
UP = 0
|
|
||||||
LEFT = 1
|
|
||||||
RIGHT = 2
|
|
||||||
DOWN = 3
|
|
||||||
|
|
||||||
|
|
||||||
class Field(Enum):
|
|
||||||
NOTHING = 0
|
|
||||||
WIN = 1
|
|
||||||
|
|
||||||
def __str__(self) -> str:
|
|
||||||
match self:
|
|
||||||
case Field.NOTHING: return ""
|
|
||||||
case Field.WIN: return ""
|
|
||||||
case _: raise NotImplementedError("field type not implemented")
|
|
||||||
|
|
||||||
|
|
||||||
class Player:
|
|
||||||
x_pos: int
|
|
||||||
y_pos: int
|
|
||||||
|
|
||||||
def __init__(self, start_x: int, start_y: int) -> None:
|
|
||||||
self.x_pos = start_x
|
|
||||||
self.y_pos = start_y
|
|
||||||
|
|
||||||
def __str__(self) -> str:
|
|
||||||
return " "
|
|
||||||
|
|
||||||
|
|
||||||
class Map:
|
|
||||||
map: np.ndarray
|
|
||||||
x: int
|
|
||||||
y: int
|
|
||||||
|
|
||||||
def __init__(self, x: int, y: int) -> None:
|
|
||||||
self.map = np.array([Field.NOTHING] * (x*y)).reshape(y, x)
|
|
||||||
self.map[0][0] = Field.WIN
|
|
||||||
self.map[-1][-1] = Field.WIN
|
|
||||||
self.x = x
|
|
||||||
self.y = y
|
|
||||||
|
|
||||||
def make_player(self) -> Player:
|
|
||||||
return Player(int(self.x/2), int(self.y/2))
|
|
||||||
|
|
||||||
def __str__(self) -> str:
|
|
||||||
buf = "-" + "-" * (self.x * 3) + "\n"
|
|
||||||
for row in self.map:
|
|
||||||
for field in row:
|
|
||||||
buf += (f"|{field} ")
|
|
||||||
buf += ("|\n")
|
|
||||||
buf += "-" + "-" * self.x * 3
|
|
||||||
return buf
|
|
||||||
|
|
||||||
def render(self, player: Player) -> str:
|
|
||||||
buf = "-" + "-" * self.x * 3 + "\n"
|
|
||||||
for y, row in enumerate(self.map):
|
|
||||||
for x, field in enumerate(row):
|
|
||||||
if (player.x_pos, player.y_pos) == (x, y):
|
|
||||||
buf += ("| ")
|
|
||||||
else:
|
|
||||||
buf += (f"|{field} ")
|
|
||||||
buf += ("|\n")
|
|
||||||
buf += "-" + "-" * self.x * 3
|
|
||||||
return buf
|
|
||||||
|
|
||||||
def set_position(self, player: Player, x: int, y: int) -> bool:
|
|
||||||
if not 0 <= x <= self.x and 0 <= y <= self.y:
|
|
||||||
return False
|
|
||||||
else:
|
|
||||||
player.x_pos = x
|
|
||||||
player.y_pos = y
|
|
||||||
return True
|
|
||||||
|
|
||||||
def move(self, player: Player, direction: Direction) -> bool:
|
|
||||||
match direction:
|
|
||||||
case Direction.UP: return self.set_position(player, player.x_pos,
|
|
||||||
player.y_pos-1)
|
|
||||||
case Direction.DOWN: return self.set_position(player, player.x_pos,
|
|
||||||
player.y_pos+1)
|
|
||||||
case Direction.LEFT: return self.set_position(player, player.x_pos-1,
|
|
||||||
player.y_pos)
|
|
||||||
case Direction.RIGHT: return self.set_position(player, player.x_pos+1,
|
|
||||||
player.y_pos)
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
map = Map(5, 5)
|
|
||||||
p = map.make_player()
|
|
||||||
print(map.render(p))
|
|
||||||
assert map.move(p, Direction.UP)
|
|
||||||
print(map.render(p))
|
|
||||||
assert map.move(p, Direction.LEFT)
|
|
||||||
assert map.move(p, Direction.LEFT)
|
|
||||||
print(map.render(p))
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
main()
|
|
Loading…
Add table
Reference in a new issue