mirror of
https://github.com/maoakeEnterprise/amazing.git
synced 2026-04-28 16:04:35 +02:00
53 lines
1.4 KiB
Python
53 lines
1.4 KiB
Python
from dataclasses import dataclass
|
|
|
|
|
|
@dataclass
|
|
class Cell:
|
|
def __init__(self, value: int) -> None:
|
|
self.value = value
|
|
|
|
def __str__(self) -> str:
|
|
return hex(self.value).removeprefix("0x").upper()
|
|
|
|
def set_value(self, value: int) -> None:
|
|
self.value = value
|
|
|
|
def get_value(self) -> int:
|
|
return self.value
|
|
|
|
def set_north(self, is_wall: bool) -> None:
|
|
if (not is_wall and self.value | 14 == 15) or (
|
|
is_wall and self.value | 14 != 15
|
|
):
|
|
self.value = self.value ^ (1)
|
|
|
|
def get_north(self) -> bool:
|
|
return self.value & 1 == 1
|
|
|
|
def set_est(self, is_wall: bool) -> None:
|
|
if (not is_wall and self.value | 13 == 15) or (
|
|
is_wall and self.value | 13 != 15
|
|
):
|
|
self.value = self.value ^ (2)
|
|
|
|
def get_est(self) -> bool:
|
|
return self.value & 2 == 2
|
|
|
|
def set_south(self, is_wall: bool) -> None:
|
|
if (not is_wall and self.value | 11 == 15) or (
|
|
is_wall and self.value | 11 != 15
|
|
):
|
|
self.value = self.value ^ (4)
|
|
|
|
def get_south(self) -> bool:
|
|
return self.value & 4 == 4
|
|
|
|
def set_west(self, is_wall: bool) -> None:
|
|
if (not is_wall and self.value | 7 == 15) or (
|
|
is_wall and self.value | 7 != 15
|
|
):
|
|
self.value = self.value ^ (8)
|
|
|
|
def get_west(self) -> bool:
|
|
return self.value & 8 == 8
|