Beispiel #1
0
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")
Beispiel #2
0
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")
Beispiel #3
0
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")
Beispiel #4
0
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))
Beispiel #5
0
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"
        )
Beispiel #6
0
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)