From 0ef63ca80ba262a2e45e8ed3e7d364dc24c0d3c9 Mon Sep 17 00:00:00 2001 From: Nikolaj Date: Wed, 29 Dec 2021 12:24:07 +0100 Subject: [PATCH] some things --- font-list.txt | 4 +- font_game/__init__.py | 2 +- .../__pycache__/__init__.cpython-310.pyc | Bin 392 -> 433 bytes font_game/__pycache__/game.cpython-310.pyc | Bin 2209 -> 2745 bytes font_game/__pycache__/util.cpython-310.pyc | Bin 1326 -> 2184 bytes font_game/__pycache__/web.cpython-310.pyc | Bin 2672 -> 1909 bytes font_game/game.py | 16 +++++- font_game/util.py | 15 ++++++ font_game/web.py | 47 +++++------------- 9 files changed, 46 insertions(+), 38 deletions(-) diff --git a/font-list.txt b/font-list.txt index db90c6c..e1ddd85 100644 --- a/font-list.txt +++ b/font-list.txt @@ -6,7 +6,7 @@ Arial #Cambria Calibri #Clarendon -#DaxPro +#Dax Pro #Didot #Franklin Gothic #Frutiger @@ -24,6 +24,6 @@ Roboto #Roboto Slab #Rockwell #Sabon -#Segoe UI +Segoe UI #Times New Roman #Verdana \ No newline at end of file diff --git a/font_game/__init__.py b/font_game/__init__.py index 1bbbdde..5a1d783 100644 --- a/font_game/__init__.py +++ b/font_game/__init__.py @@ -1,5 +1,5 @@ from .util import (base64, FONT_SIZE, FONT_COLOR, IMAGE_BACKGROUND, IMAGE_SIZE, - MARGINS, FONTS) + MARGINS, FONTS, read_file, write_file) from . import images from . import web from . import game diff --git a/font_game/__pycache__/__init__.cpython-310.pyc b/font_game/__pycache__/__init__.cpython-310.pyc index bbf7c2dc04be76238b01aeae5df027a70547db03..1475669c71872ced93730a914519fc1e4f24a765 100644 GIT binary patch delta 171 zcmeBR-pI_G&&$ij00gc2XA+N0KrP&g_g7@$KXO>FJi43DT{V3F|$q@ zQ1BuC2gKf53N}6U+*2=s9t*vdUgq3O&xIa(N#C1|nxZb~H}Ac9^LwA@a`DG@II7nJ z1HS3bFUe2NG`vQ>o^G$7k<5%uW-yvrxgFcY0NKo(+>PDbi@n^B{XB>Ruv^SNH{vVI zVJ@6C=J9%;GM@$KRvfZ6>a4~W`WCCR@Z63YYymXN8f+0f7ExnOeZRz7U}-XPWb8%D ze_&Pz5mEktpLEka8Suzb&T%67?gM2%dVKKZk@5vkSht^MTm{cXT5v5-Uw=m$UQkxn&ObwLej|NKPPYQ>-C78Hzfb-xK9N=jq^SAuApoI_PAntSH*$ zuV#O*q7W9opl=D%xxnH&+#IITX7}04Nkd~J?y~jvqAVbpD`$fG0Wx^c}WX0p^UB>Ae$hW zYsLj-)+L#M^wOG;i8Z9+R$*#C8~vEG0yv>(%sG}I zJ>(roLEJ&Oi?9U%n}}J8B>-j1ah4Y1AsU?O5_>E@L)b&mG#>%+|3{?D*OUAZJl`&6 z4OY^F)ojof5s$zQz1_rPNo*h=4oSEOpOjaCt1`HQ#@R nq<2PdxYx-?>@?&1xDav`z%x9^!y`4iN<8Y>q1g(;m1XlE2xb%} delta 806 zcmZ9Jy>1gh5XW!sZtpAh*^Uj^CL}=^$&Ld=0;R!m30;U31kyFu;axk2eYV+i_>zFe zFA!}-iKs$Lfk2|8;SJDrl$5*yJA09Wywc6i-u&k`GrM0ed?@+TeBRUK`uOEX_}e`3 z*Wl?%d;Oh0Hexd{L8BTq#w4}^E4Bk$o=r*?THsKN+H!ZP!@Pk`UFt2&V1*X&Omi$Z zFlnCp3liih9BQrNA1t!pg47+dNiT}SA#3TW^(0K#?wyp}d$9lTu#XzGL;>D|FHYe; zIN~pqp(u!c(DY@HpPPa_rk3K-yz~=YnhNl;c%%PpqfVC4Z|GO z)-8!=#;B|GkP;qFWN!w)h;$h76}g{6YQJF7@MxZ7997!ujH4t&R7Bkz>}3dUVupSO zh?WZTD>7P@pX#=%wTRO5n)q(6A5>%@a0k=LyoYR6Jg{a_f5d18x-1nuE04c>s7;E< z!|Fbmkb^3CunNA;8=u?c7Bn!zH_#|g8HI2=^7h!v8Sgg5TWiz;+Ngn z#P?fbr(QA-`Mfs_V^$Yy&W+k#DQW?~j+@V~V#+ESB5K~wBfJDvkeAR?o!mwb)BalBZ{dgt7|D>+q=eX4I>$fE3D6P11$s6ggb0W|}%gqi_4D2LWqrKC!$tTHHJj+KWy z@9(rlqnbT6o>o~?$2B15yTidxAJ=tU=^flM)?yMQm(CmK?Z^sbAcb_-SPM3Ik8L>8 z>%k4S3ahZf?=#5+&Q%9ki_ftsmY!GwU^E}#B3=2wEz<_QtVzWe~unEVGFL7xpA{*BT~jq8&Q~{%qK1w5rwhZ zWV(bNwk}ORP3meg4!bRwXy<35FwJU7y)ipLK`7!8wtQTxs(d^jMrvXvN@~?8oyEg% zO9T0`Fd}KF*a#WcG9$=d_v7WVqbXw}=yD~uP_3)SWMYHwY=iWD&PHgHRT1Shz%2j{ zhrrv;Zwoj0AzV!*8$mv5l-Tbf@bCxEJrpEtFoI)&K#viM9-_!NVna~ULu|zrr{!!o zE#5;IyO7$JlEelhrPF^?A{|oF!{~k=6M7piF3V&L50=TnhkOMCw%`NOZ}AW8qqDO-hAu60lr7K%QKs>(sjB+WFwwrhHnuJ6ynyxN3 zPTZ__zCWKng+fJO$i}~ZyeHLEUA{<7+V$b17a#neLg?`?Uttu6G=bbJ!uGqn#h3eS z{+gO$-&OaO^X}-sdDg3o*qkKJ((&#^F&Rvub$Q5mJH_eq-Bg_M&XS7@-A`hA5%qe6 zM0!}eRfKV-$4R8i#=Uv_*4??k3b7&Wi}h#fiEKt{mi{TyW4QUuhXMp#Z~=Dm5-<5B J-_PYoe*qt20eS!c delta 329 zcmZ9HKTpFj5XEze&NL#tDwIlo1Bj;7`HA z!h$+8GctJRL$Dy6vT>(-!@YMu=^nc;j+eWxW9SO!@5v{sy*{M%##zrzy$2)qsef<8 zK?);d;MZ>_9g9_&!kmhVGnu1X59`wy37Qqp25-x6*j>YyNlACMeeIMTEeHq%ddLq# z+;doIUIl@lwIZNgk39eO&}7dcP3b=9U>Ry527wL)CNdE$+FZ8Ck`w&`)(uZ_ diff --git a/font_game/__pycache__/web.cpython-310.pyc b/font_game/__pycache__/web.cpython-310.pyc index 09acad7eadccb9ad6b8d926d604cfe551b09e0fe..8523c0a4bd3f823bd9f403bd6dcc5110bb01b860 100644 GIT binary patch literal 1909 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 X1qKWN4*X- str: file.write(game) return game_id + +def test_game(game_id: str): + return pathlib.Path(f"current_games/{game_id}").is_file() + +def guess_font(game_id: str, font_guess: str): + game_dict = read_file(f"current_games/{game_id}") + i = int(game_dict['i']) + font = game_dict['fonts'].split(',')[i] + if font_guess == font: + game_dict['points'] = str(int(game_dict['points']) + 1) + + game_dict['i'] = str(i+1) + write_file(f"current_games/{game_id}", game_dict) diff --git a/font_game/util.py b/font_game/util.py index 34ee715..28ced70 100644 --- a/font_game/util.py +++ b/font_game/util.py @@ -11,6 +11,21 @@ IMAGE_SIZE = (1800, 1200) MARGINS = 60 +def read_file(path: str) -> dict: + with open(path, "r", encoding="utf-8") as file: + game_dict = dict( + [tuple(line.split(":")) for line in file.read().split('\n')] + ) + + return game_dict + +def write_file(path: str, game: dict): + game_string = "\n".join( + [f"{key}:{value}" for key, value in game.items()] + ) + + with open(path, "w", encoding="utf-8") as file: + file.write(game_string) def base64(num: int) -> str: temp = "" diff --git a/font_game/web.py b/font_game/web.py index 3f6ac98..86084ea 100644 --- a/font_game/web.py +++ b/font_game/web.py @@ -1,8 +1,8 @@ -import pathlib +import os import flask from font_game.images import purge_images -from font_game.game import start_game, purge_games -from font_game import FONTS +from font_game.game import start_game, purge_games, guess_font, test_game +from font_game import FONTS, read_file app = flask.Flask( __name__, @@ -20,36 +20,21 @@ def font_game(): if flask.request.method == "POST": game_id = flask.request.form['id'] font_guess = flask.request.form['font'] - - if not pathlib.Path(f"current_games/{game_id}").is_file(): + if not test_game(game_id): return flask.redirect("/") - with open(f"current_games/{game_id}", "r+", encoding="utf-8") as file: - game_dict = dict( - [tuple(line.split(":")) for line in file.read().split('\n')] - ) - i = int(game_dict['i']) - font = game_dict['fonts'].split(',')[i] - if font_guess == font: - game_dict['points'] = str(int(game_dict['points']) + 1) - game_dict['i'] = str(i+1) - game = "\n".join( - [f"{key}:{value}" for key, value in game_dict.items()] - ) - file.seek(0) - file.write(game) + guess_font(game_id, font_guess) args = flask.request.args if 'id' in args: - if not pathlib.Path(f"current_games/{args['id']}").is_file(): + game_id = args['id'] + if not test_game(game_id): return flask.redirect("/") - with open(f"current_games/{args['id']}", "r", encoding="utf-8") as file: - game = dict( - [tuple(line.split(":")) for line in file.read().split('\n')] - ) + game = read_file(f"current_games/{game_id}") if int(game['i']) == int(game['game_length']): + os.remove(f"current_games/{game_id}") return flask.render_template("final.html", points=game['points'], game_length=game['game_length']) @@ -68,14 +53,6 @@ def font_game(): } return flask.render_template("fontgame.html", **parameters) - if 'n' in flask.request.args: - game_length = int(flask.request.args['n']) - else: - game_length = 10 - - game_id = start_game(game_length) - return flask.redirect(f"/fontgame?id={game_id}") - @app.route("/") def root(): return flask.render_template("menu.html") @@ -83,7 +60,9 @@ def root(): @app.route("/startgame", methods=["POST"]) def start(): if 'game_length' in flask.request.form: - game_length = flask.request.form['game_length'] + game_length = int(flask.request.form['game_length']) else: game_length = 10 - return flask.redirect(f"/fontgame?n={game_length}") + + game_id = start_game(game_length) + return flask.redirect(f"/fontgame?id={game_id}")