summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAineopintojen-harjoitustyo-Algoritmit-j <github-hy-tiralabra@v.hix.fi>2024-01-27 12:09:16 +0200
committerAineopintojen-harjoitustyo-Algoritmit-j <github-hy-tiralabra@v.hix.fi>2024-01-27 12:09:16 +0200
commitc0a0bb30e03be9c47b99d5da848e29a747e9af66 (patch)
treee1bbfb9da2c5a8feff6eaf6ea03e24fda1dee7fb
parent628105f4640cb341967aaf9771c7c604d4f7aea5 (diff)
Adding autoplay functionality.
-rw-r--r--__main__.py18
-rw-r--r--app.py6
-rw-r--r--tui/__init__.py1
-rw-r--r--tui/autotui.py17
4 files changed, 37 insertions, 5 deletions
diff --git a/__main__.py b/__main__.py
index 2df26fa..697ceb4 100644
--- a/__main__.py
+++ b/__main__.py
@@ -8,19 +8,31 @@ parser = ArgumentParser(
)
parser.add_argument(
'-b', '--beginner',
- help='Aseta aloittelijan vaikeustaso (oletus)',
+ help='Asettaa aloittelijan vaikeustason (oletus)',
action='store_true',
)
parser.add_argument(
'-i', '--intermediate',
- help='Aseta keskivaikea vaikeustaso',
+ help='Asettaa keskivaikean vaikeustaso',
action='store_true'
)
parser.add_argument(
'-e', '--expert',
- help='Aseta edistynyt vaikeustaso (vaatii 100 merkkiä leveän terminaalin)',
+ help='Asettaa edistyneen vaikeustason (vaatii 100 merkkiä leveän terminaalin)',
action='store_true'
)
+parser.add_argument(
+ '-a', '--auto',
+ help='Antaa botin pelata automaattisesti',
+ action='store_true'
+)
+parser.add_argument(
+ '-u', '--uncertain',
+ help='Antaa botille luvan tehdä myös epävarmoja valintoja',
+ action='store_true'
+)
+
+
args = parser.parse_args()
diff --git a/app.py b/app.py
index 1770c25..6a2b00a 100644
--- a/app.py
+++ b/app.py
@@ -1,6 +1,6 @@
""" app.py - pääohjelma """
from board import Board, Level
-from tui import Tui
+from tui import Tui, AutoTui
from game import Game
from bots import BadBot
@@ -9,14 +9,16 @@ class App:
""" App - Luokka pääohjelmalle"""
def __init__(self, args=None):
level=Level.BEGINNER
+ ui_class=Tui
if args:
level = Level.EXPERT if args.expert else level
level = Level.INTERMEDIATE if args.intermediate else level
level = Level.BEGINNER if args.beginner else level
+ ui_class = AutoTui if args.auto else ui_class
self.board = Board(level=level)
self.bot = BadBot()
- self.ui = Tui(self.bot)
+ self.ui = ui_class(self.bot)
self.game = Game(self.board,self.ui)
def run(self):
diff --git a/tui/__init__.py b/tui/__init__.py
index c1c5b91..f39cd45 100644
--- a/tui/__init__.py
+++ b/tui/__init__.py
@@ -1,3 +1,4 @@
""" tui - hoitaa käyttäjälle katseltavaa ja havaitsee syötteet """
from .tui import Tui
+from .autotui import AutoTui
from .static import Action
diff --git a/tui/autotui.py b/tui/autotui.py
new file mode 100644
index 0000000..dbda560
--- /dev/null
+++ b/tui/autotui.py
@@ -0,0 +1,17 @@
+""" autotui - pelaa botin antamat vinkit jonka jälkeen käyttäjän """
+from .tui import Tui
+from .static import Action
+
+class AutoTui(Tui):
+ """ Tui - Luokka joka tekee botin vinkit ensin """
+ def matrix_selector(self, matrix, x, y):
+ """ yritetään pyydellä botilta vinkkiä ensin """
+ if self.bot is not None:
+ action, x, y = self.bot.hint(matrix, x, y)
+ if action != Action.NOOP:
+ self.draw_matrix(matrix, -1, -1)
+ if action==Action.SAFE:
+ action = Action.OPEN
+ return action, x, y
+
+ return super().matrix_selector(matrix, x, y)