summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--__main__.py84
-rw-r--r--cmdline.py101
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()
+