From 3e1c94a4a58d10ad12f9713f97dc6e8c6629c39e Mon Sep 17 00:00:00 2001 From: samuf Date: Mon, 29 Apr 2019 14:09:57 +0200 Subject: [PATCH 1/6] getting closer. now comes the delete --- alone_2048.py | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/alone_2048.py b/alone_2048.py index bb4cf1d..1252b21 100644 --- a/alone_2048.py +++ b/alone_2048.py @@ -4,7 +4,6 @@ from flask import request, render_template, jsonify, session -global_dict = {} @app.route("/") def main(): return render_template('index.html') @@ -39,15 +38,9 @@ def play_the_game(): return game_dict game_data = {"board": board, "c_score": c_score, "uId": uId, "game_over": True} game_dict = jsonify(game_data) - # session['uId'] = pickle.dumps(b) return game_dict -@app.route('/api/games') -def games(): - return str(global_dict) - - @app.route('/api/new_game') def new_game(): b = Game() @@ -61,13 +54,6 @@ def new_game(): return game_dict -# @app.route('/save_user_highscore', methods=['POST']) #curl -X POST -F 'u_name=Try_1' -F 'c_score=1500' 127.0.0.1:5000/save_user_highscore -# def save_user_highscore(): -# u_name = request.form.get('u_name') -# c_score = request.form.get('c_score') -# db.save_to_db(u_name, c_score) -# return print(c_score, u_name) - @app.route('/save_user_highscore', methods=['POST', 'GET']) #curl -H 'Content-Type: application/json' -X GET 127.0.0.1:5000/save_user_highscore -d '{"u_name": "test_1", "c_score": 1000}' def save_user_highscore(): resp = request.get_json() From b097ce480aeeaa33a7ff191d53c3d45b154bd444 Mon Sep 17 00:00:00 2001 From: samuf Date: Mon, 29 Apr 2019 16:44:56 +0200 Subject: [PATCH 2/6] gave comment for the bois --- alone_2048.py | 22 +++++++++++----------- game.py | 6 ------ 2 files changed, 11 insertions(+), 17 deletions(-) diff --git a/alone_2048.py b/alone_2048.py index 1252b21..889bfdf 100644 --- a/alone_2048.py +++ b/alone_2048.py @@ -14,11 +14,11 @@ def play_the_game(): resp = request.get_json() uId = str(resp['uId']) direction = resp['direction'] - b = pickle.loads(session['uId']) - board = b.x - moved = b.process_move(direction) - legit = b.next_step_check() - c_score = b.c_score + b = pickle.loads(session['uId']) # Itt a b az maga egy Game object, amit a sessionben tárolt uId alapján hívunk meg + board = b.x # Maga a board (16 db szám) -- A b Game object x paramétere. (mátrix) + moved = b.process_move(direction) # A játék (b) process_move függvényének a visszatérési értéke (boolean) + legit = b.next_step_check() # A játék (b) next_step_check függvényének a visszatérési értéke (boolean) + c_score = b.c_score # A játék (b) c_score (mint current score) változója if legit: if moved and b.count_zeroes() != 0: b.add_number() @@ -43,11 +43,11 @@ def play_the_game(): @app.route('/api/new_game') def new_game(): - b = Game() + b = Game() # Egy új Game object. uId = str(time.time()) - b.add_number() - board = b.x - c_score = b.c_score + b.add_number() # A játék (b) add_number metódusa meghívása, amivel elhelyez 2 random tile-t a board-on. + board = b.x # Maga a board (16 db szám) -- A b Game object x paramétere. (mátrix) + c_score = b.c_score # A játék (b) c_score (mint current score) változója game_data = {"board": board, "c_score": c_score, "uId": uId} game_dict = jsonify(game_data) session['uId'] = pickle.dumps(b) @@ -57,8 +57,8 @@ def new_game(): @app.route('/save_user_highscore', methods=['POST', 'GET']) #curl -H 'Content-Type: application/json' -X GET 127.0.0.1:5000/save_user_highscore -d '{"u_name": "test_1", "c_score": 1000}' def save_user_highscore(): resp = request.get_json() - u_name = resp['u_name'] - c_score = resp['c_score'] + u_name = resp['u_name'] # User name rövidítése, front-end-en user adja meg, ezzel mentjük el az adatbázisba + c_score = resp['c_score'] # Current score, front-end-en user adja meg, ezzel mentjük el az adatbázisba db.save_to_db(u_name, c_score) msg = "Saved!" return msg diff --git a/game.py b/game.py index d6f4d80..7506b4c 100644 --- a/game.py +++ b/game.py @@ -12,15 +12,9 @@ def __init__(self): self.c_score = self.c_score self.copy_board = self.copy_board - def print_inline(self, s): - print(s, end='') - def count_zeroes(self): return sum([sum([1 for c in r if c == 0]) for r in self.x]) - def max_value(self): - return max([max(r) for r in self.x]) - def add_number(self): list_of_num = [2, 2, 2, 2, 4] num = random.choice(list_of_num) From 8aa03d8eb9b10bc9e08859b1d32ee6842e800a89 Mon Sep 17 00:00:00 2001 From: samuf Date: Tue, 30 Apr 2019 13:32:08 +0200 Subject: [PATCH 3/6] reworked for dict, not session --- alone_2048.py | 40 +++++++++++++++++++++++++--------------- 1 file changed, 25 insertions(+), 15 deletions(-) diff --git a/alone_2048.py b/alone_2048.py index 889bfdf..9f17fdf 100644 --- a/alone_2048.py +++ b/alone_2048.py @@ -4,6 +4,7 @@ from flask import request, render_template, jsonify, session +global_dict = {} @app.route("/") def main(): return render_template('index.html') @@ -14,51 +15,60 @@ def play_the_game(): resp = request.get_json() uId = str(resp['uId']) direction = resp['direction'] - b = pickle.loads(session['uId']) # Itt a b az maga egy Game object, amit a sessionben tárolt uId alapján hívunk meg - board = b.x # Maga a board (16 db szám) -- A b Game object x paramétere. (mátrix) - moved = b.process_move(direction) # A játék (b) process_move függvényének a visszatérési értéke (boolean) - legit = b.next_step_check() # A játék (b) next_step_check függvényének a visszatérési értéke (boolean) - c_score = b.c_score # A játék (b) c_score (mint current score) változója + b = global_dict[uId] + # b = pickle.loads(session['dict'][uId]) + # b = session['dict'][uId] + board = b.x + moved = b.process_move(direction) + legit = b.next_step_check() + c_score = b.c_score if legit: if moved and b.count_zeroes() != 0: b.add_number() game_data = {"board": board, "c_score": c_score, "uId": uId, "game_over": False} game_dict = jsonify(game_data) - session['uId'] = pickle.dumps(b) + # session['dict'][uId] = pickle.dumps(b) return game_dict elif moved: game_data = {"board": board, "c_score": c_score, "uId": uId, "game_over": False} game_dict = jsonify(game_data) - session['uId'] = pickle.dumps(b) + # session['dict'][uId] = pickle.dumps(b) return game_dict else: game_data = {"board": board, "c_score": c_score, "uId": uId, "game_over": False} game_dict = jsonify(game_data) - session['uId'] = pickle.dumps(b) + # session['dict'][uId] = pickle.dumps(b) return game_dict game_data = {"board": board, "c_score": c_score, "uId": uId, "game_over": True} game_dict = jsonify(game_data) return game_dict +@app.route('/api/games') +def games(): + return str(global_dict) + + @app.route('/api/new_game') def new_game(): - b = Game() # Egy új Game object. + b = Game() uId = str(time.time()) - b.add_number() # A játék (b) add_number metódusa meghívása, amivel elhelyez 2 random tile-t a board-on. - board = b.x # Maga a board (16 db szám) -- A b Game object x paramétere. (mátrix) - c_score = b.c_score # A játék (b) c_score (mint current score) változója + b.add_number() + board = b.x + c_score = b.c_score game_data = {"board": board, "c_score": c_score, "uId": uId} game_dict = jsonify(game_data) - session['uId'] = pickle.dumps(b) + # session['dict'][uId] = pickle.dumps(b) + # b = global_dict[uId] + global_dict[uId] = b return game_dict @app.route('/save_user_highscore', methods=['POST', 'GET']) #curl -H 'Content-Type: application/json' -X GET 127.0.0.1:5000/save_user_highscore -d '{"u_name": "test_1", "c_score": 1000}' def save_user_highscore(): resp = request.get_json() - u_name = resp['u_name'] # User name rövidítése, front-end-en user adja meg, ezzel mentjük el az adatbázisba - c_score = resp['c_score'] # Current score, front-end-en user adja meg, ezzel mentjük el az adatbázisba + u_name = resp['u_name'] + c_score = resp['c_score'] db.save_to_db(u_name, c_score) msg = "Saved!" return msg From 6aa4ccce8662435c2bb029039aa43ed9e6804e59 Mon Sep 17 00:00:00 2001 From: samuf Date: Tue, 30 Apr 2019 13:40:34 +0200 Subject: [PATCH 4/6] try something --- alone_2048.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/alone_2048.py b/alone_2048.py index 9f17fdf..341c308 100644 --- a/alone_2048.py +++ b/alone_2048.py @@ -1,7 +1,7 @@ -import time, pickle +import time from app import app, db from game import * -from flask import request, render_template, jsonify, session +from flask import request, render_template, jsonify global_dict = {} @@ -28,16 +28,19 @@ def play_the_game(): game_data = {"board": board, "c_score": c_score, "uId": uId, "game_over": False} game_dict = jsonify(game_data) # session['dict'][uId] = pickle.dumps(b) + global_dict[uId] = b return game_dict elif moved: game_data = {"board": board, "c_score": c_score, "uId": uId, "game_over": False} game_dict = jsonify(game_data) # session['dict'][uId] = pickle.dumps(b) + global_dict[uId] = b return game_dict else: game_data = {"board": board, "c_score": c_score, "uId": uId, "game_over": False} game_dict = jsonify(game_data) # session['dict'][uId] = pickle.dumps(b) + global_dict[uId] = b return game_dict game_data = {"board": board, "c_score": c_score, "uId": uId, "game_over": True} game_dict = jsonify(game_data) From ac1044556e0e88518ee33c5448b3b72c7f2c2ee7 Mon Sep 17 00:00:00 2001 From: samuf Date: Tue, 30 Apr 2019 15:02:43 +0200 Subject: [PATCH 5/6] try heroku cache --- app/__init__.py | 10 +++++++++- requirements.txt | 2 ++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/app/__init__.py b/app/__init__.py index 73111de..83217e4 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -1,8 +1,16 @@ from flask import Flask +from flask_caching import Cache +config = { + "DEBUG": True, + "CACHE_TYPE": "simple", + "CACHE_DEFAULT_TIMEOUT": 300 +} + app = Flask(__name__) app.config['SECRET_KEY'] = 'so amazingly secret' # for session values - +app.config.from_mapping(config) +cache = Cache(app) import alone_2048 diff --git a/requirements.txt b/requirements.txt index 4ac03b4..baaa5b8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,4 @@ Flask==1.0.2 gunicorn==19.7.1 +Flask-Caching==1.4.0 +pylibmc==1.5.2 From c30965cc7a29aa3a0be97da7549332f3de2d081d Mon Sep 17 00:00:00 2001 From: samuf Date: Mon, 6 May 2019 10:17:30 +0200 Subject: [PATCH 6/6] db try_1 --- alone_2048.py | 30 +++++++++++------------------- app/__init__.py | 10 ---------- app/db.py | 28 ++++++++++++++++++++++++---- games.db | Bin 0 -> 16384 bytes requirements.txt | 3 +-- 5 files changed, 36 insertions(+), 35 deletions(-) create mode 100644 games.db diff --git a/alone_2048.py b/alone_2048.py index 341c308..c5e373d 100644 --- a/alone_2048.py +++ b/alone_2048.py @@ -1,10 +1,10 @@ -import time +import time, pickle from app import app, db from game import * from flask import request, render_template, jsonify -global_dict = {} +# global_dict = {} @app.route("/") def main(): return render_template('index.html') @@ -15,9 +15,8 @@ def play_the_game(): resp = request.get_json() uId = str(resp['uId']) direction = resp['direction'] - b = global_dict[uId] - # b = pickle.loads(session['dict'][uId]) - # b = session['dict'][uId] + b = db.get_game(uId) + print(b, "**") board = b.x moved = b.process_move(direction) legit = b.next_step_check() @@ -27,29 +26,23 @@ def play_the_game(): b.add_number() game_data = {"board": board, "c_score": c_score, "uId": uId, "game_over": False} game_dict = jsonify(game_data) - # session['dict'][uId] = pickle.dumps(b) - global_dict[uId] = b return game_dict elif moved: game_data = {"board": board, "c_score": c_score, "uId": uId, "game_over": False} game_dict = jsonify(game_data) - # session['dict'][uId] = pickle.dumps(b) - global_dict[uId] = b return game_dict else: game_data = {"board": board, "c_score": c_score, "uId": uId, "game_over": False} game_dict = jsonify(game_data) - # session['dict'][uId] = pickle.dumps(b) - global_dict[uId] = b return game_dict game_data = {"board": board, "c_score": c_score, "uId": uId, "game_over": True} game_dict = jsonify(game_data) return game_dict -@app.route('/api/games') -def games(): - return str(global_dict) +# @app.route('/api/games') +# def games(): +# return str(global_dict) @app.route('/api/new_game') @@ -61,17 +54,16 @@ def new_game(): c_score = b.c_score game_data = {"board": board, "c_score": c_score, "uId": uId} game_dict = jsonify(game_data) - # session['dict'][uId] = pickle.dumps(b) - # b = global_dict[uId] - global_dict[uId] = b + # global_dict[uId] = b + db.save_to_games_db(uId, pickle.dumps(b)) return game_dict -@app.route('/save_user_highscore', methods=['POST', 'GET']) #curl -H 'Content-Type: application/json' -X GET 127.0.0.1:5000/save_user_highscore -d '{"u_name": "test_1", "c_score": 1000}' +@app.route('/save_user_highscore', methods=['POST', 'GET']) def save_user_highscore(): resp = request.get_json() u_name = resp['u_name'] c_score = resp['c_score'] - db.save_to_db(u_name, c_score) + db.save_to_scores_db(u_name, c_score) msg = "Saved!" return msg diff --git a/app/__init__.py b/app/__init__.py index 83217e4..9bbe5aa 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -1,16 +1,6 @@ from flask import Flask -from flask_caching import Cache - - -config = { - "DEBUG": True, - "CACHE_TYPE": "simple", - "CACHE_DEFAULT_TIMEOUT": 300 -} app = Flask(__name__) app.config['SECRET_KEY'] = 'so amazingly secret' # for session values -app.config.from_mapping(config) -cache = Cache(app) import alone_2048 diff --git a/app/db.py b/app/db.py index 4f1caa8..a9619e0 100644 --- a/app/db.py +++ b/app/db.py @@ -1,17 +1,37 @@ -import sqlite3 +import sqlite3, pickle def create_db(): - conn = sqlite3.connect('scores.db') + conn = sqlite3.connect('games.db') c = conn.cursor() - c.execute("CREATE TABLE high_scores (name text, score integer)") + c.execute("CREATE TABLE game_list (id text, game text)") conn.commit() conn.close() -def save_to_db(u_name, c_score): +def save_to_scores_db(u_name, c_score): conn = sqlite3.connect('scores.db') c = conn.cursor() c.execute("INSERT INTO high_scores VALUES(?, ?)", (u_name, c_score)) conn.commit() conn.close() + + +def save_to_games_db(uId, b): + conn = sqlite3.connect('games.db') + c = conn.cursor() + c.execute("INSERT INTO game_list VALUES(?, ?)", (uId, b)) + conn.commit() + conn.close() + + +def get_game(uId): + conn = sqlite3.connect('games.db') + c = conn.cursor() + c.execute("SELECT game FROM game_list WHERE id=?", (uId,)) + gam = c.fetchone() + b = pickle.loads(gam[0]) + conn.commit() + conn.close() + print(b) + return b diff --git a/games.db b/games.db new file mode 100644 index 0000000000000000000000000000000000000000..1984b27500d02a5ba4622ee56e16a23a90a49ee8 GIT binary patch literal 16384 zcmeI&Jqp4w6u|Kp6}M71$7WQ}$-&hRItX3-*rjTffFfuHZ{i6&f;VvX7@otlimM$Q ziu_+2@){l?`DF@pI*yD@^m>2T#a4HuCQ3<9YZ2+XR(ZFQ>(x7VT^8y0x9CdyQT1Gv z@~`4v0s#aNKmY**5I_I{1Q0*~0R-|2j8wHA1ZrvH#WvZ*yJWsKNBc=i!%5hmg?iQ> zM4|o+>xNlro1APb8_UvWdN+5Me({ZOyo+~9``43qG1MV|00IagfB*vjFL3{>EwY>9 z9w%qR*<=FhR!9idW?A_K&iPBJL;wK<5I_I{1Q0*~0R#|0009JkEs*}pU;g!^%!dF1 W2q1s}0tg_000IagfB*u;5O@Mdo-D%v literal 0 HcmV?d00001 diff --git a/requirements.txt b/requirements.txt index baaa5b8..3e68db8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,3 @@ Flask==1.0.2 gunicorn==19.7.1 -Flask-Caching==1.4.0 -pylibmc==1.5.2 +