add: tictactoe: timer and afk handling
This commit is contained in:
@ -40,18 +40,19 @@ class TicTacToeWebSocket(WebsocketConsumer):
|
||||
|
||||
if (self.game is None):
|
||||
return
|
||||
|
||||
self.member = self.game.join(self.user.pk, self)
|
||||
|
||||
if (isinstance(self.member, TicTacToePlayer)):
|
||||
if (isinstance(self.member, TicTacToePlayer)): # Send player sign (x or o) to the player
|
||||
self.member.send(self.member.sign)
|
||||
|
||||
if (self.game._everbody_is_here() and self.game.model.started == True and self.game.model.finished == False):
|
||||
if (self.game._everbody_is_here() and self.game.model.started == True and self.game.model.finished == False): # if an user disconnected and joined back
|
||||
self.member.send("catchup", {"morpion" : self.game._map, "turn" : self.game.turn, "currentMorpion": self.member.currentMorpion})
|
||||
return
|
||||
if (self.game._everbody_is_here() and self.game.model.started == False):
|
||||
if (self.game.time != -1):
|
||||
self.game.broadcast("opponent_joined")
|
||||
|
||||
if (self.game._everbody_is_here() and self.game.model.started == False): # Launch the game if the two players are connected
|
||||
self.game.broadcast("game_start")
|
||||
self.game.time = time.time()
|
||||
self.game.model.start()
|
||||
|
||||
def receive(self, text_data=None, bytes_data=None):
|
||||
@ -60,12 +61,18 @@ class TicTacToeWebSocket(WebsocketConsumer):
|
||||
if (data.get("targetMorpion") is not None and data.get("targetCase") is not None):
|
||||
if (self.game.add(data, self.member) == False):
|
||||
return
|
||||
|
||||
if (data.get("timerIsDue") is not None and self.game.time + 20 < time.time()):
|
||||
self.winner = 'x' if self.game.turn == 'o' else 'o'
|
||||
self.game.model.finish(self.user)
|
||||
self.game.broadcast("game_end", {"winning_sign": self.winner})
|
||||
|
||||
if (self.game.checkWin() != False):
|
||||
self.winner = self.game.checkWin()
|
||||
self.game.model.finish(self.user)
|
||||
self.game.broadcast("game_end", {"winning_sign": self.winner})
|
||||
|
||||
self.game.broadcast("game_move", data, [self.member])
|
||||
pass
|
||||
|
||||
def disconnect(self, event):
|
||||
try:
|
||||
|
@ -47,6 +47,7 @@ class TicTacToeGame(AGame):
|
||||
self._map[newmove.get("targetMorpion")][newmove.get("targetCase")] = newmove.get("sign")
|
||||
player.currentMorpion = int(newmove.get("targetCase"))
|
||||
self.changeTurn()
|
||||
self.time = time.time()
|
||||
return True
|
||||
|
||||
return False
|
||||
|
Reference in New Issue
Block a user