aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--api/game/random.py2
-rw-r--r--api/game/socket.py35
2 files changed, 35 insertions, 2 deletions
diff --git a/api/game/random.py b/api/game/random.py
index 68ba44c..52a6d1f 100644
--- a/api/game/random.py
+++ b/api/game/random.py
@@ -26,7 +26,7 @@ def index():
if len(public_games) == 0:
game_id = new_uuid("games")
- cursor.execute("insert into games values (?, NULL, NULL, ?, NULL, NULL, 0, NULL, NULL, NULL, \"wait_for_opponent\", \"default\", FALSE) ", (game_id, user_id))
+ cursor.execute("insert into games values (?, NULL, \"\", ?, NULL, NULL, 0, NULL, NULL, NULL, \"wait_for_opponent\", \"default\", FALSE) ", (game_id, user_id))
connection.commit()
player_1 = True
else:
diff --git a/api/game/socket.py b/api/game/socket.py
index 3828c35..f1a591e 100644
--- a/api/game/socket.py
+++ b/api/game/socket.py
@@ -2,7 +2,7 @@ from flask import Blueprint, request, make_response
from flask_socketio import SocketIO, emit, Namespace
from game.voerbak_connector import bord
from auth.login_token import token_login
-from db import cursor
+from db import cursor, connection
import time
import json
from socket_io import io
@@ -21,6 +21,7 @@ class game:
if user_id != self.player_1_id and user_id != self.player_2_id: return
move = self.player_1_id if self.board.player_1 else self.player_2_id
if user_id != move: return
+
self.board.drop_fisje(column)
self.io.emit("fieldUpdate", { "field": self.board.board })
self.io.emit("turnUpdate", { "player1": self.board.player_1 })
@@ -30,14 +31,46 @@ class game:
"boardFull": self.board.board_full
})
+ cursor.execute("update games set moves = moves || ? || ',' where game_id = ?", [column, self.game_id])
+ connection.commit()
+
+ if self.board.board_full:
+ self.close("finished", "d")
+
+ def close(self, new_status, outcome):
+ cursor.execute(" ".join([
+ "update games set",
+ "moves = moves || '0',",
+ "duration = ?,",
+ "status = ?,",
+ "outcome = ?",
+ "where game_id = ?"
+ ]), [
+ int( time.time() * 1000 ) - cursor.execute("select timestamp from games where game_id = ?", [self.game_id]).fetchone()[0],
+ new_status,
+ outcome,
+ self.game_id
+ ])
+ connection.commit()
+
@io.on("newMove")
def new_move(data):
if not data["game_id"] or \
not data["move"] or \
not data["token"]: return
if not data["game_id"] in games: return
+
game = games[data["game_id"]]
if(len(game.board.win_positions) > 0 or game.board.board_full): return
user_id = token_login(data["token"])[0]
game.move(user_id, data["move"])
+@io.on("resign")
+def resign(data):
+ if not data["game_id"] or \
+ not data["token"]: return
+ if not data["game_id"] in games: return
+
+ game = games[data["game_id"]]
+ game.move(user_id, data["move"])
+