summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAineopintojen-harjoitustyo-Algoritmit-j <github-hy-tiralabra@v.hix.fi>2024-02-05 07:46:04 +0200
committerAineopintojen-harjoitustyo-Algoritmit-j <github-hy-tiralabra@v.hix.fi>2024-02-05 07:46:04 +0200
commitae57dacc625b9ded6fad48e9197b4a29ad692173 (patch)
tree0e284eae461e02d8e7be9233235c8e6c70241737
parenta7fe2d0dff18abd253db3f2f999259a281b09630 (diff)
Adding option for delaying autoplay.
-rw-r--r--app.py1
-rw-r--r--bots/bot.py8
-rw-r--r--cmdline.py9
-rw-r--r--tests/test_app.py1
-rw-r--r--tui/tui.py19
5 files changed, 30 insertions, 8 deletions
diff --git a/app.py b/app.py
index cb79568..8553fe5 100644
--- a/app.py
+++ b/app.py
@@ -27,6 +27,7 @@ class App:
tui_opts['autoplay'] = args.autoplay > 0
tui_opts['interactive'] = args.autoplay != 2
tui_opts['suppress'] = args.quiet
+ tui_opts['delay'] = args.delay
self.board = Board(**board_opts)
tui_opts['level_name'] = self.board.get_level_name()
diff --git a/bots/bot.py b/bots/bot.py
index cc09936..51151e0 100644
--- a/bots/bot.py
+++ b/bots/bot.py
@@ -31,7 +31,13 @@ class Bot():
return Action.NOOP, 0, 0
def saved_hints(self):
- """ onko muuveja varastossa """
+ """ poistetaan auenneet laatat ja palautetaan onko muuveja """
+ for tile in list(self.safe_tiles):
+ if self.known_tile(tile):
+ self.safe_tiles.remove(tile)
+ for tile in list(self.mine_tiles):
+ if self.known_tile(tile):
+ self.mine_tiles.remove(tile)
return self.safe_tiles or self.mine_tiles
def hint(self, matrix, cursor_x, cursor_y):
diff --git a/cmdline.py b/cmdline.py
index 8df3408..533c40f 100644
--- a/cmdline.py
+++ b/cmdline.py
@@ -24,7 +24,7 @@ level_group.add_argument(
custom_group = parser.add_argument_group('Mukautettu vaikeustaso')
def board_size(wxh_string):
- """ parser for dimensions. throws error on bad input"""
+ """ parsija laudan koolle, että on varmasti muotoa {leveys}x{korkeys} """
w, h = wxh_string.split('x')
return (int(w), int(h))
custom_group.add_argument(
@@ -39,7 +39,7 @@ custom_group.add_argument(
metavar='<M>',
type=int,
dest='mines',
- help='Säätää pelilaulla olevien pommien määrän <M>:ksi.',
+ help='Säätää pelilaulla olevien miinojen määrän <M>:ksi.',
)
@@ -58,6 +58,11 @@ hint_group.add_argument(
default=2,
help='Valitsee tekoälyn <B>, missä: 0: Ei tekoälyä 1: Yksinkertainen, 2: DSSP (oletus)',
)
+hint_group.add_argument(
+ '-d', '--delay', metavar='<D>',
+ type=float,
+ help='Odottaa ennen tekoälyn siirtoa <D> sadasosasekuntia.',
+)
batch_group = parser.add_argument_group('Automatisointi')
batch_group.add_argument(
diff --git a/tests/test_app.py b/tests/test_app.py
index cae4e30..ba97a90 100644
--- a/tests/test_app.py
+++ b/tests/test_app.py
@@ -30,6 +30,7 @@ class TestAppClass(unittest.TestCase):
size = None
bot = None
quiet = None
+ delay = None
sure_win_board = [
[0,0,0,0,0,0,0,0,0],
diff --git a/tui/tui.py b/tui/tui.py
index d32af71..6b3eb33 100644
--- a/tui/tui.py
+++ b/tui/tui.py
@@ -1,5 +1,6 @@
""" tui/tui.py - runko käyttöliittymälle """
# pylint: disable = multiple-imports
+from time import sleep
from .static import Action
from .kbd import Kbd, NoKbd
from .ansi_draw import AnsiDraw, SuppressDraw
@@ -14,7 +15,8 @@ class Tui():
interactive = True,
suppress = False,
height = 9,
- level_name = "outo lauta"):
+ level_name = "outo lauta",
+ delay = 0):
# jos ei ole bottia pitää olla interaktiivinen
if bot is None:
@@ -23,17 +25,22 @@ class Tui():
suppress = False
# jos ei mitään näytetä ei voi olla interaktiivinen
- # pylint: disable = pointless-statement
- (interactive := False) if suppress else ()
+ if suppress:
+ interactive = False
# automaattipeli pitää olla päällä jos ei interaktiivinen
- (autoplay := True) if not interactive else ()
+ 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
@@ -51,7 +58,9 @@ class Tui():
if self.autoplay:
action, x, y = self.bot.hint(matrix, x, y)
if action != Action.NOOP:
- self.draw.matrix(matrix, -1, -1)
+ if self.delay:
+ self.draw.matrix(matrix, x, y)
+ sleep(self.delay/100)
return Action.OPEN if action==Action.SAFE else action, x, y