summaryrefslogtreecommitdiff
path: root/tui/tui.py
diff options
context:
space:
mode:
Diffstat (limited to 'tui/tui.py')
-rw-r--r--tui/tui.py109
1 files changed, 0 insertions, 109 deletions
diff --git a/tui/tui.py b/tui/tui.py
deleted file mode 100644
index d7f7fb3..0000000
--- a/tui/tui.py
+++ /dev/null
@@ -1,109 +0,0 @@
-""" tui/tui.py - runko käyttöliittymälle """
-import time
-from .static import Action
-from .kbd import Kbd, NoKbd
-from .ansi_draw import AnsiDraw, SuppressDraw
-
-
-class Tui():
- """ Tui - Luokka käyttäjän interaktiota varten """
- # pylint: disable = too-many-arguments, too-many-instance-attributes
- def __init__(self,
- bot = None,
- autoplay = False,
- interactive = True,
- suppress = False,
- height = 9,
- level_name = "outo lauta",
- delay = 0):
-
- # jos ei ole bottia pitää olla interaktiivinen
- if bot is None:
- autoplay = False
- interactive = True
- suppress = False
-
- # jos ei mitään näytetä ei voi olla interaktiivinen
- if suppress:
- interactive = False
-
- # automaattipeli pitää olla päällä jos ei interaktiivinen
- if not interactive:
- autoplay = True
-
- if delay and delay not in range(0,500):
- delay = 50
-
- self.autoplay = autoplay
- self.interactive = interactive
- self.suppress = suppress
- self.height = height
- self.level_name = level_name
- self.delay = delay
-
- self.bot = bot(uncertain=not self.interactive) if bot else None
-
- self.kbd = Kbd() if self.interactive else NoKbd()
-
- if self.suppress:
- self.draw = SuppressDraw()
- else:
- self.draw = AnsiDraw(height=self.height, name=self.level_name)
-
- def matrix_selector(self, matrix, x, y):
- """ valinta matriisita """
-
- # automaattipeli avaa botin vinkit heti
- if self.autoplay:
- action, x, y = self.bot.hint(matrix, x, y)
- if action != Action.NOOP:
- if self.delay:
- self.draw.matrix(matrix, x, y)
- time.sleep(self.delay/100)
- return Action.OPEN if action==Action.SAFE else action, x, y
-
-
- # ilman näppiskäsittelijää voidaan lopettaa
- if not self.interactive:
- return Action.QUIT, 0, 0
-
- w, h = len(matrix), len(matrix[0])
- while True:
- self.draw.matrix(matrix, x, y)
- action, x, y = self.kbd.read_matrix_action(w, h, x, y)
- match action:
- case Action.QUIT:
- return (action, x, y)
- case Action.OPEN | Action.FLAG | Action.MINE | Action.SAFE:
- if matrix[x][y] >= 10:
- return (action, x, y)
- case Action.HINT:
- if self.bot is not None:
- return self.bot.hint(matrix, x, y)
-
- def game_over(self, matrix, x, y):
- """ tehtävät kun kuolee """
- self.draw.matrix(matrix, x, y)
- self.draw.status_line(
- f"{self.level_name}: " +
- ("K " if self.suppress else f"{'Kuolit!':<30}")
- )
- self.kbd.read_action()
-
- def game_win(self, matrix, x, y):
- """ tehtävät kun voittaa """
- self.draw.matrix(matrix, x, y)
- self.draw.status_line(
- f"{self.level_name}: " +
- ("V " if self.suppress else f"{'Voitit!':<30}")
- )
- self.kbd.read_action()
-
- def game_end(self, matrix):
- """ tehtävät ihan pelin lopuksi """
- if self.interactive:
- self.draw.matrix(matrix, -1, -1)
- self.draw.status_line(
- f"{self.level_name}: " +
- f"{'Kiitos!':<30}"
- )