From e785dbd4f726c5716f21071ed25dc35ac87c0c74 Mon Sep 17 00:00:00 2001 From: Aineopintojen-harjoitustyo-Algoritmit-j Date: Sat, 17 Feb 2024 09:41:48 +0200 Subject: Dev tools and directory structure rework. --- src/miinaharava/cmdline.py | 117 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 src/miinaharava/cmdline.py (limited to 'src/miinaharava/cmdline.py') diff --git a/src/miinaharava/cmdline.py b/src/miinaharava/cmdline.py new file mode 100644 index 0000000..533c40f --- /dev/null +++ b/src/miinaharava/cmdline.py @@ -0,0 +1,117 @@ +""" cmdline.py - komentorivin käsittely argparse moduulilla """ +import sys +from argparse import ArgumentParser + +from tui import KEY_DESCRIPTIONS + +parser = ArgumentParser( + prog='miinaharava', + description='Klassisen miinaharavapelin terminaali toteutus.', + add_help=False +) +level_group = parser.add_argument_group('Vaikeustaso') +level_group.add_argument( + '-i', '--intermediate', + help='keskivaikea (oletus on aloittelija)', + action='store_true' +) +level_group.add_argument( + '-e', '--expert', + help='edistynyt (vaatii 100 merkkiä leveän terminaalin)', + action='store_true' +) + + +custom_group = parser.add_argument_group('Mukautettu vaikeustaso') +def board_size(wxh_string): + """ 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( + '-s', '--size', + metavar='', + type= board_size, + dest='size', + help='Pelikentän koko, missä on {leveys}x{korkeus}.' +) +custom_group.add_argument( + '-m', '--mines', + metavar='', + type=int, + dest='mines', + help='Säätää pelilaulla olevien miinojen määrän :ksi.', +) + + +hint_group = parser.add_argument_group('Tekoäly') +hint_group.add_argument( + '-a', '--auto', + dest='autoplay', + default=0, + action='count', + help='Pelaa tekoälyn vihjeet. [-aa] Pelaa myös epävarmat.' +) +hint_group.add_argument( + '-b', '--bot', metavar='', + choices=range(3), + type=int, + default=2, + help='Valitsee tekoälyn , missä: 0: Ei tekoälyä 1: Yksinkertainen, 2: DSSP (oletus)', +) +hint_group.add_argument( + '-d', '--delay', metavar='', + type=float, + help='Odottaa ennen tekoälyn siirtoa sadasosasekuntia.', +) + +batch_group = parser.add_argument_group('Automatisointi') +batch_group.add_argument( + '-q', '--quiet', + help='Tulostaa minimaalisesti (asettaa myös [-aa])', + action='store_true' +) +batch_group.add_argument( + '-c', '--count', + metavar='', + type=int, + dest='count', + help='Suorittaa ohelmaa kertaa ja tulostaa voitto-osuuden.', +) + +def filename( fn_string ): + """ filename - parser tyyppi joka testaa saako tiedoston auki """ + try: + with open(fn_string, "r", encoding="utf-8"): + pass + except FileNotFoundError as e: + raise ValueError from e + return fn_string +batch_group.add_argument( + '-f', '--file', + metavar='', + type=filename, + dest='file', + help='Pelaa tiedostossa olevat miinaharavakentät.', +) + +misc_group = parser.add_argument_group('Sekalaista') +misc_group.add_argument( + '-h', '--help', + help='Tulostaa tämän viestin', + action='store_true' +) +misc_group.add_argument( + '-k', '--keys', + help='Tulostaa pelin näppäinkartan.', + action='store_true' +) + +args = parser.parse_args() + +if args.help: + parser.print_help() + sys.exit() + +if args.keys: + print(end=KEY_DESCRIPTIONS) + sys.exit() -- cgit v1.2.3