Beispiel #1
0
def start_game():
    join_code = session["join_code"]
    db = get_db()
    # Creates a row in player table
    db.execute('INSERT INTO game (join_code) VALUES (%s)', (join_code, ))

    # Gets players from the lobby database
    players = get_list(join_code)
    # Creates board in the player database
    create_board(join_code)
    for i in range(len(players)):
        add_player(join_code, players[i])
    # Switches players list to full player objects
    players = get_players(join_code)

    # Inserts starting position
    if (players["player1"] != None):
        set_square(join_code, 1, 1, players["player1"])
    if (players["player2"] != None):
        set_square(join_code, 4, 4, players["player2"])
    if (players["player3"] != None):
        set_square(join_code, 1, 4, players["player3"])
    if (players["player4"] != None):
        set_square(join_code, 4, 1, players["player4"])

    # Removes row from lobby database
    remove_list(join_code)
    # set's turn to first player
    set_turn(join_code, 1)
    # Forces all connected sockets to call intermediate method, which
    # sets session variable and redirects them to game
    emit('redirect', {'url': url_for('lobby.intermediate')},
         room=join_code,
         broadcast=True)
Beispiel #2
0
def check_empty(join_code):
    db = get_db()
    if connection_manager.numberOfPlayers(join_code) < 1:
        print("GAME EMPTY - DELETING: " + join_code)
        db.execute("DELETE FROM game WHERE join_code = (%s)", (join_code,))
        return True
    return False
Beispiel #3
0
def add_player(join_code, nickname, money=300, team=None):
    """Adds a player to the game
    If games full, returns None, otherwise return player"""
    db = get_db()
    players = get_players(join_code)
    player_obj = {}

    player_obj["money"] = money
    player_obj["nickname"] = nickname

    # checks for dups
    for key, value in players.items():
        if value != None and value["nickname"] == nickname:
            return None

    # Checks for column to add player
    count = 0
    for key, value in players.items():
        count+=1
        if value == None:
            player_obj["team"] = "team" + str(count)
            db.execute(
                    sql.SQL("UPDATE game SET {} = (%s) WHERE join_code = (%s)").format(sql.Identifier(key)), (json.dumps(player_obj), join_code)
                    )
            return count
    return None
Beispiel #4
0
def get_list(join_code):
    db = get_db()
    db.execute("SELECT players FROM lobby WHERE join_code = (%s)",
               (join_code, ))
    result = db.fetchone()
    if result == None:
        return None
    if (result["players"] == None):
        return []
    return json.loads(result["players"])
Beispiel #5
0
def get_list(join_code):
    db = get_db()
    db.execute("SELECT connections FROM game WHERE join_code = (%s)",
               (join_code, ))
    result = db.fetchone()
    if result is None:
        return None
    if result["connections"] is None:
        return []
    return json.loads(result["connections"])
Beispiel #6
0
def update_player_money(join_code,player_num,moneyChange):
    db = get_db()
    old_player = get_players(join_code)["player" + str(player_num)]
    if old_player == None:
        return None

    old_player["money"] += moneyChange

    update_player(join_code,player_num, old_player)
    emit_money(join_code,get_players(join_code))
Beispiel #7
0
def get_players(join_code):
    """returns a dictonary of all players in a game"""
    db = get_db()
    db.execute("SELECT player1, player2, player3, player4 FROM game WHERE join_code = (%s)", (join_code,))
    player_jsons = dict(db.fetchone())
    players = {}
    for key, value in player_jsons.items():
        if value != None:
            players[key] = json.loads(value)
        else:
            players[key] = None
    return players
Beispiel #8
0
def update_player_team(join_code,player_num,team_name):
    db = get_db()
    player = get_players(join_code)["player" + str(player_num)]
    if player == None:
        return None
    board = get_board(join_code)


    player["team"] = team_name

    update_player(join_code,player_num, player)

    for i in range(len(board)):
        for j in range(len(board[i])):
            if(board[i][j]["name"] == player["nickname"]):
                board[i][j]["color"] = colors[player["team"]]
                print(board[i][j])
    set_board(join_code, board)
Beispiel #9
0
def index():
    if request.method == "POST":
        nickname = request.form['nickname']
        join_code = request.form['join_code']

        print("hello?")

        db = get_db()

        players = get_list(join_code)

        #TODO HERE: Check if game is not already started
        db.execute("SELECT * FROM game WHERE join_code = (%s)", (join_code,))
        game = db.fetchone()
        if game != None:
            print("ERROR: Game has already started")
            return render_template("index.html")

        if players is None:
            #create new game
            db.execute(
                'INSERT INTO lobby (join_code) VALUES (%s)', (join_code,)
            )
            players = get_list(join_code)

        if len(players) >= 4:
            print("ERROR: Game " + join_code + " IS FULL")
            return render_template("index.html")
        if players.count(nickname) != 0:
            print("ERROR: Game " + join_code + "  already has name "+nickname)
            return render_template("index.html")

        players.append(nickname)
        set_list(join_code, players)

        # Updates session variables
        session["join_code"] = join_code
        session["nickname"] = nickname

        return redirect(url_for('lobby.enter_lobby'))

    # Run if request is GET
    return render_template("index.html")
Beispiel #10
0
def get_json_board(join_code):
    db = get_db()
    db.execute("SELECT game_data FROM game WHERE join_code = (%s)", (join_code,))
    json_board = (db.fetchone())["game_data"]
    return json_board
Beispiel #11
0
def set_board(join_code, board):
    """Given a board array, saves it to sql database"""
    json_board = json.dumps(board)
    db = get_db()
    db.execute('UPDATE game SET game_data = (%s) WHERE join_code = (%s)', (json_board, join_code))
    return json_board
Beispiel #12
0
def remove_list(join_code):
    db = get_db()
    db.execute("DELETE FROM lobby WHERE join_code = (%s)", (join_code, ))
Beispiel #13
0
def set_list(join_code, newlist):
    db = get_db()
    jsonres = json.dumps(newlist)
    db.execute("UPDATE game SET connections = (%s) WHERE join_code = (%s)",
               (jsonres, join_code))
Beispiel #14
0
def set_turn(join_code, player_num):
    db = get_db()
    db.execute("UPDATE game SET turn = (%s) WHERE join_code = (%s)", (player_num, join_code))
Beispiel #15
0
def set_list(join_code, newlist):
    db = get_db()
    jsonres = json.dumps(newlist)
    db.execute("UPDATE lobby SET players = (%s) WHERE join_code = (%s)",
               (jsonres, join_code))
Beispiel #16
0
def get_turn(join_code):
    db = get_db()
    db.execute("SELECT turn FROM game WHERE join_code = (%s)", (join_code,))
    turn = db.fetchone()["turn"]
    return turn
Beispiel #17
0
def update_player(join_code, player_num, player_obj):
    db = get_db()

    db.execute(
            sql.SQL("UPDATE game SET {} = (%s) WHERE join_code = (%s)").format(sql.Identifier("player" + str(player_num))), (json.dumps(player_obj), join_code)
            )