Exemplo n.º 1
0
def start_game_db(Session):

    session = Session()

    players = list()
    players.append(
        PlayerModel(nickname='nwhite', email='*****@*****.**', role=4))
    players.append(
        PlayerModel(nickname='nwhite2', email='*****@*****.**', role=4))
    players.append(
        PlayerModel(nickname='nwhite3', email='*****@*****.**', role=4))
    players.append(
        PlayerModel(nickname='nwhite4', email='*****@*****.**', role=4))

    numberOfTeams = 2
    minRequiredPlayers = 2
    maxPlayersPerTeam = 2
    game = GameModel(name='game1',
                     initiator=players[0],
                     numberOfTeams=numberOfTeams,
                     minRequiredPlayers=minRequiredPlayers,
                     maxPlayersPerTeam=maxPlayersPerTeam)

    for index in range(50):
        print("Putting card.")
        forbidden = "{'word1', 'word2', 'word3', 'word4'}"
        card = CardModel("word_" + str(index + 1), forbidden, "Book", "345")
        session.add(card)

    session.add(game)
    session.commit()

    for i in range(numberOfTeams):
        teamName = 'team' + str(i)
        team = TeamModel(teamName)

        if (i == 0):
            team.addPlayer(players[0])
            team.addPlayer(players[1])
        else:
            team.addPlayer(players[2])
            team.addPlayer(players[3])

        game.addTeam(team)
    game.gameState = GAME_READY

    session.commit()
    session.close()
Exemplo n.º 2
0
    def test1CreatePlayers(self):
        delete_db(engine)
        AppModelBase.metadata.create_all(engine)
        for i in range(50):
            email = "member" + str(i + 1) + "@bsu.edu"
            if PlayerModel.emailExists(self.session, email):
                print("the entered email already exists")
            else:
                member1 = PlayerModel("Member " + str(i + 1), email, 3)
                self.session.add(member1)
                self.session.flush()
        self.session.commit()
        self.assertEqual(PlayerModel.numberOfRows(self.session), 50)

        print(
            "\n\n*************Test add exist Player**********************\n\n")
        member2_email = "*****@*****.**"
        if (PlayerModel.emailExists(self.session, member2_email)):
            print("the entered email already exists")
        else:
            member2 = PlayerModel("Member2", "*****@*****.**", 3)
            self.session.add(member2)
            self.session.flush()
            self.session.commit()
        self.assertEqual(PlayerModel.numberOfRows(self.session), 50)

        print(
            "\n\n*************Test add invalid email Player***************\n\n"
        )
        member3_email = ""
        member3_name = "member3"
        data = {"email": member3_email, "username": member3_name}
        feedback = PlayerModel.isValidPlayer(data)
        self.assertFalse(feedback["valid"])
        self.assertEqual(feedback["message"], 'invalid email')

        print(
            "\n\n*************Test add invalid username Player***************\n\n"
        )
        member4_email = "*****@*****.**"
        member4_name = ""
        data = {"email": member4_email, "username": member4_name}
        feedback = PlayerModel.isValidPlayer(data)
        print(feedback)
        self.assertFalse(feedback["valid"])
        self.assertEqual(
            feedback["message"],
            'username must be between 2 and 255  characters inclusive')
Exemplo n.º 3
0
def start_game2_db(Session):
    session = Session()

    players = list()
    players.append(
        PlayerModel(nickname='nwhite', email='*****@*****.**', role=4))
    players.append(
        PlayerModel(nickname='nwhite2', email='*****@*****.**', role=4))
    players.append(
        PlayerModel(nickname='nwhite3', email='*****@*****.**', role=4))
    players.append(
        PlayerModel(nickname='nwhite4', email='*****@*****.**', role=4))

    numberOfTeams = 2
    minRequiredPlayers = 2
    maxPlayersPerTeam = 2
    game = GameModel(name='game1',
                     initiator=players[0],
                     numberOfTeams=numberOfTeams,
                     minRequiredPlayers=minRequiredPlayers,
                     maxPlayersPerTeam=maxPlayersPerTeam)

    session.add(game)
    session.commit()

    for i in range(numberOfTeams):
        teamName = 'team' + str(i)
        team = TeamModel(teamName)

        if (i == 0):
            team.addPlayer(players[0])
            team.addPlayer(players[1])
        else:
            team.addPlayer(players[2])
            team.addPlayer(players[3])

        game.addTeam(team)
    game.gameState = GAME_READY

    session.commit()
    session.close()
Exemplo n.º 4
0
    def get(self):
        OoR_object = OoRModel.query().get()
        if OoR_object == None:
            OoR = []
        else:
            OoR = OoR_object.players
        template_params = handle_user()
        if not 'admin' in template_params:
            self.redirect('/')
        # Delete All player Models
        players = PlayerModel.query()
        for player in players:
            player.key.delete()
        tournament_query = TournamentModel.query()
        tournaments = []
        for t in tournament_query:
            tournaments.append(t)
        #sort
        tournaments.sort(key=lambda x: x.timestamp)
        for tournament in tournaments:
            #self.response.out.write(tournament.name + "<br>")

            matches = []
            match_query = MatchModel.query(ancestor=tournament.key)
            for m in match_query:
                matches.append(m)
            matches.sort(key=lambda x: x.timestamp)
            for match in matches:
                player1 = match.player1
                player2 = match.player2
                winner = match.winner
                if player1 in OoR or player2 in OoR:
                    continue
                # Find player1 Model
                player1_query = PlayerModel.query(PlayerModel.tag == player1)
                if player1_query.get() is not None:
                    player1_object = player1_query.get()
                else:
                    player1_object = PlayerModel()
                    player1_object.tag = player1
                    player1_object.ranking = trueskill.Rating()
                    player1_object.put()
                player1_object.lastActive = match.timestamp
                # Find player2 Model
                player2_query = PlayerModel.query(PlayerModel.tag == player2)
                if player2_query.get() is not None:
                    player2_object = player2_query.get()
                else:
                    player2_object = PlayerModel()
                    player2_object.tag = player2
                    player2_object.ranking = trueskill.Rating()
                    player2_object.put()
                player2_object.lastActive = match.timestamp
                #Run Rankings Algo
                player1_rate = player1_object.ranking
                player2_rate = player2_object.ranking
                #self.response.out.write(player1_rate)
                #self.response.out.write('<br>')
                #self.response.out.write(player2_rate)
                #self.response.out.write('<br>')
                if winner == player1:
                    new_player1, new_player2 = trueskill.rate_1vs1(
                        player1_rate, player2_rate)
                else:
                    new_player2, new_player1 = trueskill.rate_1vs1(
                        player2_rate, player1_rate)
                #self.response.out.write(new_player1)
                #self.response.out.write('<br>')
                #self.response.out.write(new_player2)
                #self.response.out.write('<br>')
                #self.response.out.write('<br>')
                # Update player stats
                player1_object.ranking = new_player1
                player2_object.ranking = new_player2
                #Save
                player1_object.put()
                player2_object.put()
                #self.response.out.write(match.player1+" vs. "+player2)
                #self.response.out.write('<br>')
            #self.response.out.write('<hl><br><br>')
        self.redirect('/')
Exemplo n.º 5
0
 def mutate(self, into, name):
     player = PlayerModel(name=name)
     db_session.add(player)
     db_session.commit()
     return InsertPlayer(player=player)