summaryrefslogtreecommitdiff
path: root/__main__.py
diff options
context:
space:
mode:
Diffstat (limited to '__main__.py')
-rw-r--r--__main__.py110
1 files changed, 69 insertions, 41 deletions
diff --git a/__main__.py b/__main__.py
index 902d92b..8f60946 100644
--- a/__main__.py
+++ b/__main__.py
@@ -3,71 +3,99 @@ 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
)
-parser.add_argument(
+level_group = parser.add_argument_group('Vaikeustaso')
+level_group.add_argument(
'-i', '--intermediate',
- help='Asettaa keskivaikean vaikeustaso (oletus on aloittelija)',
+ help='keskivaikea (oletus on aloittelija)',
action='store_true'
)
-parser.add_argument(
+level_group.add_argument(
'-e', '--expert',
- help='Asettaa edistyneen vaikeustason (vaatii 100 merkkiä leveän terminaalin)',
+ help='edistynyt (vaatii 100 merkkiä leveän terminaalin)',
action='store_true'
)
-parser.add_argument(
- '-s', '--simple',
- help='Käytä yksinkertaisempaa vain yhtä pistettä tutkivaa bottia',
- 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.',
)
-parser.add_argument(
+
+
+hint_group = parser.add_argument_group('Tekoäly')
+hint_group.add_argument(
'-a', '--auto',
- help='Antaa botin pelata automaattisesti',
- action='store_true'
+ dest='autoplay',
+ default=0,
+ action='count',
+ help='Pelaa tekoälyn vihjeet. [-aa] Pelaa myös epävarmat.'
)
-parser.add_argument(
- '-u', '--uncertain',
- help='Antaa botille luvan tehdä myös epävarmoja valintoja (asettaa myös -a asetuksen)',
- action='store_true'
+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)',
)
-parser.add_argument(
+
+batch_group = parser.add_argument_group('Automatisointi')
+batch_group.add_argument(
'-q', '--quiet',
- help='Tulostaa minimaalisesti (asettaa myös -a ja -u asetukset)',
+ help='Tulostaa minimaalisesti (asettaa myös [-aa])',
action='store_true'
)
-parser.add_argument(
- '-c',
- metavar='COUNT',
+batch_group.add_argument(
+ '-c', '--count',
+ metavar='<C>',
type=int,
dest='count',
- help='Suorittaa ohelmaa COUNT kertaa ja tulostaa voitto-osuuden.',
-)
-parser.add_argument(
- '-w',
- metavar='WIDTH',
- type=int,
- dest='width',
- help='Mukautaa pelilaudan leveydelle WIDTH. (resetoi vaikeustason)',
+ help='Suorittaa ohelmaa <C> kertaa ja tulostaa voitto-osuuden.',
)
-parser.add_argument(
- '-H',
- metavar='HEIGHT',
- type=int,
- dest='height',
- help='Mukautaa pelilaudan korkeudelle HEIGTH. (resetoi vaikeustason)',
+
+misc_group = parser.add_argument_group('Sekalaista')
+misc_group.add_argument(
+ '-h', '--help',
+ help='Tulostaa tämän viestin',
+ action='store_true'
)
-parser.add_argument(
- '-m',
- metavar='MINES',
- type=int,
- dest='mines',
- help='Säätää pelilaulla olevien pommien määrän MINES:ksi. (resetoi vaikeustason)',
+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()
+
if args.count is None:
app = App(args)
is_win = app.run()
@@ -77,7 +105,7 @@ if args.count is None:
win_count = 0
run_count = args.count
-args.uncertain=True
+args.autoplay = 2
for i in range(run_count):
print(end=f" \rSuoritus {i+1:>6}/{run_count} ")
print(end=f"({100*win_count/(i if i else 1):.1f}%)..")