def start_game_post(response, roomcode): game_id = db.get_active_game_id(roomcode) game_state = db.get_game_state_by_id(game_id) #If player in game if player_in_game(response, roomcode) and game_state != "not active": #If game already started go to the game board #Otherwise do start game procedure if game_state == "playing" or game_state == "endgame": response.redirect("game/play/" + roomcode) else: #change game state to playing db.set_game_state_to_playing(game_id) #assign players randomly to teams and to spymaster assign_teams_and_roles(game_id) #choose words for the game words = db.random_words(25) #who goes first? start_colour = random.choice(["blue", "red"]) db.set_current_colour(game_id, start_colour) db.make_turn(game_id, start_colour) #assign card colours card_colours = [start_colour, "black" ] + 7 * ["neutral"] + 8 * ["blue", "red"] random.shuffle(card_colours) #pair up words and colours pairs = zip(words, card_colours) db.add_game_word_pairs(game_id, pairs) #Send to game board response.redirect("/game/" + roomcode) else: response.redirect("/game")
def join_lobby(response, roomcode): #check if room code exists and what it's status is state = db.get_game_state(roomcode) if state == "lobby": game_id = db.get_active_game_id(roomcode) #add player to game players table player_id = get_player_id_cookies(response) db.add_game_player(game_id, player_id) #redirect to lobby page response.redirect("/lobby/" + roomcode) elif state == "playing": #The game in this room has already started. print("The game in this room has already started. ") else: #You must either have the wring room code or the game you want has already finished print("You must either have the wrong room code or the game you want has already finished")
def assign_teams_and_roles(roomcode): players = db.get_game_players(roomcode) random.shuffle(players) colours = [] game_id = db.get_active_game_id(roomcode) for i in len(players): if i < 2: if i % 2 == 0: db.update_game_player(game_id, player_id, "blue", "True") else: db.update_game_player(game_id, player_id, "red", "True") else: if i % 2 == 0: db.update_game_player(game_id, player_id, "blue", "False") else: db.update_game_player(game_id, player_id, "red", "False")
def game_page(response, roomcode): game_id = db.get_active_game_id(roomcode) word_data = db.get_game_words(game_id) CodeName = namedtuple('CodeName', 'word colour position guessed') Player = namedtuple('Player', 'name team spymaster') codenames = [ CodeName(**{ 'word': word, 'colour': colour, 'position': position, 'guessed': guess }) for word, colour, position, guess in word_data ] player = Player(name='Test', team='blue', spymaster=True) gamehtml = loader.load("game.html") response.write( gamehtml.generate(code=roomcode, codenames=codenames, player=player))
def join_lobby(response, roomcode): #check if room code exists and what it's status is state = db.get_game_state(roomcode) if state == "lobby": game_id = db.get_active_game_id(roomcode) #add player to game players table player_id = get_player_id_cookies(response) db.add_game_player(game_id, player_id) #redirect to lobby page response.redirect("/lobby/" + roomcode) elif state == "playing" or state == "endgame": #The game in this room has already started. print("The game in this room has already started. ") else: #You must either have the wrong room code or the game you want has already finished and become historic print( "You must either have the wrong room code or the game you want has already finished" )
def guess_word(room_code, player_id, word): #game_id game_id = db.get_active_game_id(room_code) game_state = db.get_game_state_by_id(game_id) if game_state == "playing": #Get player team player_team = db.player_team(game_id, player_id) #Is teams turn? turn = db.get_current_turn(game_id) if turn: turn_id, game_id, remaining_guesses, team = turn if remaining_guesses > 0 and player_team == team: #word changed to guessed colour, guessed_before = db.guess_word(game_id, word) if not guessed_before: #num guesses reduced if colour == team: #reduce counter by 1 db.set_guesses(turn_id, remaining_guesses - 1) elif colour == "black": #reduce counter to 0 and end game db.set_guesses(turn_id, 0) db.set_game_state_to_endgame(game_id) if player_team == "blue": winner = "red" elif player_team == "red": winner = "blue" db.set_winner(game_id, winner) else: #reduce counter to zero db.set_guesses(turn_id, 0) winner = get_game_winner(game_id) if winner: db.set_winner(game_id, winner) db.set_game_state_to_endgame(game_id)