From c0a0bb30e03be9c47b99d5da848e29a747e9af66 Mon Sep 17 00:00:00 2001 From: Aineopintojen-harjoitustyo-Algoritmit-j Date: Sat, 27 Jan 2024 12:09:16 +0200 Subject: Adding autoplay functionality. --- __main__.py | 18 +++++++++++++++--- app.py | 6 ++++-- tui/__init__.py | 1 + tui/autotui.py | 17 +++++++++++++++++ 4 files changed, 37 insertions(+), 5 deletions(-) create mode 100644 tui/autotui.py 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) -- cgit v1.2.3