diff options
author | Aineopintojen-harjoitustyo-Algoritmit-j <github-hy-tiralabra@v.hix.fi> | 2024-02-17 09:41:48 +0200 |
---|---|---|
committer | Aineopintojen-harjoitustyo-Algoritmit-j <github-hy-tiralabra@v.hix.fi> | 2024-02-17 09:41:48 +0200 |
commit | e785dbd4f726c5716f21071ed25dc35ac87c0c74 (patch) | |
tree | 781373b78380a1ffd1ea8c5dc8ceb2bd313631e9 /src/miinaharava/__main__.py | |
parent | 4eff4a32cfa594cc2a3df3885de92d407edc6675 (diff) |
Dev tools and directory structure rework.
Diffstat (limited to 'src/miinaharava/__main__.py')
-rw-r--r-- | src/miinaharava/__main__.py | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/src/miinaharava/__main__.py b/src/miinaharava/__main__.py new file mode 100644 index 0000000..ba7a25f --- /dev/null +++ b/src/miinaharava/__main__.py @@ -0,0 +1,57 @@ +""" __main__.py - Tästä suoritus alkaa """ +import sys + +from app import App +from cmdline import args + +vars(args)['board'] = None + +if args.count is None and args.file is None: + app = App(args) + IS_WIN = app.run() + del app + sys.exit(not IS_WIN) # Exit koodeissa 0 on onnistunut suoritus + +WIN_COUNT = 0 + +if args.file is None: + args.autoplay = 2 + RUN_COUNT = args.count + 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}%)..") + if not args.quiet: + print() + app = App(args) + WIN_COUNT+=app.run() + del app +else: + RUN_COUNT = 0 + with open(args.file, "r", encoding="utf-8") as bfile: + board = [] + while True: + line = bfile.readline() + if not line or (line[0]!='.' and line[0]!='@'): + if board: + WIN_PERCENT = (100*WIN_COUNT/RUN_COUNT) if RUN_COUNT else 0 + print(end= + f" \rAjo ...{args.file[-18:]:} ({RUN_COUNT+1}): " + f"({WIN_PERCENT:.1f}%).." + ) + if not args.quiet: + print() + args.board = board + app = App(args) + WIN_COUNT += app.run() + RUN_COUNT += 1 + del app + board = [] + if not line: + break + continue + board.append([x=='@' for x in line if x in ('.', '@')]) + +print( + f"\n## Voittoja {WIN_COUNT}/{RUN_COUNT} " + f"({(100*WIN_COUNT/RUN_COUNT) if RUN_COUNT else 0:.1f}%)" +) |