diff options
author | Aineopintojen-harjoitustyo-Algoritmit-j <github-hy-tiralabra@v.hix.fi> | 2024-02-03 10:02:58 +0200 |
---|---|---|
committer | Aineopintojen-harjoitustyo-Algoritmit-j <github-hy-tiralabra@v.hix.fi> | 2024-02-03 10:02:58 +0200 |
commit | 4253cf1292a40e6c5c7a6a7729c278da4bf69186 (patch) | |
tree | 3494909aff27ec57e27110255212a1927b8b0c8a | |
parent | c7426ade6bd238d7434ca9befc5c142d96c3ca4b (diff) |
Adding --file option to cmdline parser and moving to cmdline.py.
-rw-r--r-- | __main__.py | 84 | ||||
-rw-r--r-- | cmdline.py | 101 |
2 files changed, 102 insertions, 83 deletions
diff --git a/__main__.py b/__main__.py index 8f60946..a6b3172 100644 --- a/__main__.py +++ b/__main__.py @@ -1,92 +1,10 @@ """ __main__.py - Tästä suoritus alkaa """ import sys -from argparse import ArgumentParser from app import App 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): - """ parser for dimensions. throws error on bad input""" - w, h = wxh_string.split('x') - return (int(w), int(h)) -custom_group.add_argument( - '-s', '--size', - metavar='<S>', - type= board_size, - dest='size', - help='Pelikentän koko, missä <S> on {leveys}x{korkeus}.' -) -custom_group.add_argument( - '-m', '--mines', - metavar='<M>', - type=int, - dest='mines', - help='Säätää pelilaulla olevien pommien määrän <M>: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='<B>', - choices=range(2), - type=int, - default=2, - help='Valitsee tekoälyn <B>, missä: 0: Ei tekoälyä 1: Yksinkertainen, 2: DSSP (oletus)', -) - -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='<C>', - type=int, - dest='count', - help='Suorittaa ohelmaa <C> kertaa ja tulostaa voitto-osuuden.', -) - -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() +from cmdline import args if args.help: parser.print_help() diff --git a/cmdline.py b/cmdline.py new file mode 100644 index 0000000..b75c49c --- /dev/null +++ b/cmdline.py @@ -0,0 +1,101 @@ +from argparse import ArgumentParser + +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): + """ parser for dimensions. throws error on bad input""" + w, h = wxh_string.split('x') + return (int(w), int(h)) +custom_group.add_argument( + '-s', '--size', + metavar='<S>', + type= board_size, + dest='size', + help='Pelikentän koko, missä <S> on {leveys}x{korkeus}.' +) +custom_group.add_argument( + '-m', '--mines', + metavar='<M>', + type=int, + dest='mines', + help='Säätää pelilaulla olevien pommien määrän <M>: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='<B>', + choices=range(2), + type=int, + default=2, + help='Valitsee tekoälyn <B>, missä: 0: Ei tekoälyä 1: Yksinkertainen, 2: DSSP (oletus)', +) + +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='<C>', + type=int, + dest='count', + help='Suorittaa ohelmaa <C> 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='<F>', + type=filename, + dest='file', + help='Pelaa tiedostossa <F> 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() + |