Ejemplo n.º 1
0
 def setUp(self):
     self.players = Players()
     self.players.add_player(models.Player('Erik'))
     self.players.add_player(models.Player('Erty'))
     self.players.add_player(models.Player('Alex'))
     self.game = game.Game(self.players)
     self.players.start_game()
Ejemplo n.º 2
0
 def test_deploy_troops_to_wrong_country(self):
     country_A = self.board.countries['northwest territory']
     erty = models.Player('Erty')
     alex = models.Player('Alex')
     erty.choose_country(country_A)
     country_A.troops = 21
     with self.assertRaises(AssertionError):
         alex.deploy_troops(country_A, 10)
Ejemplo n.º 3
0
    def __init__(self, config):
        """
        This method initializes the models in the game class
        """
        # initializing background / determining canvas_size
        self.c = config
        c = self.c
        self.bg = m.Background(c.bg_images,
                               random.randint(1, len(c.bg_images)) - 1)
        self.grid_size = self.bg.pic.get_rect().size
        self.canvas_size = (self.grid_size[0] + 100, self.grid_size[1] + 100)

        # initializing player & Monster
        self.player = m.Player(c.player_image, (0, 0))
        self.monster = m.Monster(c.monster_image_1, c.monster_image_2, c.NUM_X,
                                 c.NUM_Y, c.NUM_MONSTER, self.canvas_size)

        # initializing screen & grid & clock
        self.grid_list = m.GridList(c.NUM_X, c.NUM_Y, self.grid_size,
                                    c.bg_images, 0)

        # initializing background music, BPM is about 110
        pygame.mixer.music.load(self.c.MUSIC)
        pygame.mixer.music.play(-1)

        self.frame_count = 0
        self.rhythm = m.Rhythm(c.BEAT_CONST, self.frame_count,
                               c.MARGINAL_ERROR)

        self.total_num_pic = 0  # number of clear pictures(stages)

        # initializing pygame clock
        self.clock = pygame.time.Clock()
Ejemplo n.º 4
0
 def test_not_card_set(self):
     card1 = self.cards[0]
     card2 = self.cards[1]
     card3 = self.cards[2]
     alex = models.Player("Alex")
     alex.cards = {card2, card3}
     self.assertEqual(alex.has_card_set(), False)
Ejemplo n.º 5
0
 def test_deploy_troops(self):
     country_A = self.board.countries['iceland']
     erty = models.Player('Erty')
     erty.choose_country(country_A)
     country_A.troops = 20
     erty.deploy_troops(country_A, 10)
     self.assertEqual(country_A.troops, 30)
Ejemplo n.º 6
0
async def on_member_join(member):
    pa_chan = get(member.guild.text_channels, name="player-assignments")
    ins_chan = get(member.guild.text_channels, name="instructions")
    # Assign the new member to one of the three teams randomly
    # FIXME Get number of teams through the DB and not hardcode a 3
    team_id = randint(1, 3)
    t = models.Team()
    t.load(team_id)
    # Add flair to user
    role = get(member.guild.roles, name=t.name)
    await member.add_roles(role)
    # Create new Player record.
    p = models.Player()
    # First check if they already exist
    try:
        p.custom_load("discord_id = ?", (member.id, ))
        t.load(p.team_id)
        await pa_chan.send("Welcome back, {}! the **{}** missed you!".format(
            member.mention, t.name))
        return
    except Exception:
        pass
    p.discord_id = member.id
    p.team_id = team_id
    p.coins = config['starting_coins']
    p.last_active_day = 0
    p.shares = 100
    p.insert()
    models.save()

    # Post message to player-assignments channel
    await pa_chan.send("Welcome, {}! You have been assigned to the **{}**!\n\
        Make sure to check out the {} and good luck!".format(
        member.mention, t.name, ins_chan.mention))
Ejemplo n.º 7
0
def play():
    """
    creating players
    :return:
    """
    print("Please, enter your name: ", end='')
    name = input()
    level = settings.START_ENEMY_LEVEL
    player = models.Player(name)
    enemy = models.Enemy(level)
    command = ''
    while command != 'start':
        print("To start the game enter 'start' here: ", end='')
        command = input()
        player.verify_commands(command)
    while True:
        try:
            print(player.attack(enemy))
            print(player.defence(enemy))
        except exceptions.EnemyDown:
            player.scores_up(5)
            level += 1
            enemy = models.Enemy(level)
            print(
                f'Enemy down. \n'
                f'Going to LEVEL {level}. Player has {player.lives} lives from {settings.START_LIVES} and'
                f' {player.score} scores.')
    return None
Ejemplo n.º 8
0
    def post(self, player_id):
        values = [
            self.get_argument(field, None) for field in models.Player.fields
        ]
        player = models.Player(values)
        user = self.get_current_user()
        if user:
            if player.password and player.user_name and (
                    user.priviledges == 'admin'
                    or int(user.id) == int(player.id)):
                player.set_password()
            elif not (player.password or player.user_name):
                player.values['password'] = None
                player.values['user_name'] = None
            if player.member == None:
                player.values['member'] = False
            if player.save():
                self.redirect("/")

        self.render(
            "new_player.html",
            tittle="Pelaajan tiedot",
            player=player,
            message="Pelaaja on jo tietokannassa!",
            # For template
            course_name_dict=self.db.course_name_dict(),
            active_games=models.games({'active': True}),
            user=self.get_current_user(),
        )
Ejemplo n.º 9
0
async def pay(ctx, target_location, amount):
    if not config['game_ongoing']: return

    amount = int(amount)  # dumb.
    member = ctx.message.author
    p = models.Player()
    try:
        p.custom_load("discord_id = ?", (member.id, ))
    except Exception:
        await ctx.send("I don't have you listed as a player, {}\n\
            If you believe this is an error, please talk to a Lord or the King"
                       .format(member.mention))
        return
    # Make sure player has enough coins!!!
    if amount < 1:
        await ctx.send("You can't pay 0 or negative coins, {}".format(
            member.mention))
        return
    elif amount > p.coins:
        await ctx.send("{}, you don't have enough coins!".format(
            member.mention))
        return
    # Get team, current location id, available locations
    t = models.Team()
    t.load(p.team_id)
    current_loc = t.current_location_id
    avail_locs = graphanalyzer.get_next_location_list(t.team_id)
    # Make sure it's a valid target location.
    if target_location.lower() not in (name.lower()
                                       for name in avail_locs.keys()):
        await ctx.send(
            "I don't think {} is a valid location. Maybe you mistyped it?".
            format(target_location))
        return
    # Get the ID for the target location...
    target_loc = models.Location()
    target_loc.custom_load("name = ? COLLATE NOCASE", (target_location, ))

    edge = models.LocationEdge()
    edge.custom_load("start_location_id = ? AND end_location_id = ?", (
        current_loc,
        target_loc.location_id,
    ))
    # Store the payment in the db
    payment = models.Payment()
    payment.player_id = p.player_id
    payment.team_id = p.team_id
    payment.amount = amount
    payment.location_edge = edge.edge_id
    payment.time = helpers.get_game_day()
    payment.insert()

    # Remove coins from player's account.
    p.coins -= amount
    p.last_active_day = helpers.get_game_day()
    p.update()
    models.save()
    # Send confirmation message.
    await ctx.send("{} has paid **{}** coins toward **{}**".format(
        member.mention, amount, target_loc.name))
Ejemplo n.º 10
0
def update_players(data_rows):
    for player in data_rows:
        print(player[2])
        new_player = models.Player.query.filter_by(nba_id=player[0]).first()
        if new_player:
            new_player.active = player[3]
            new_player.year_end = player[5]
            new_player.games_played = True if player[12] == 'Y' else False

            new_player.update_object()
        else:
            new_player = models.Player()
            # Update to make league_id variable
            new_player.league_id = "00"
            new_player.nba_id = player[0]
            new_player.first_name = player[1].split(',')[-1].strip()
            new_player.last_name = player[1].split(',')[0].strip()
            new_player.active = player[3]
            new_player.year_start = player[4]
            new_player.year_end = player[5]
            new_player.nba_player_code = player[6]
            new_player.games_played = True if player[12] == 'Y' else False

            new_player.add_object()

    return True
Ejemplo n.º 11
0
 def post(self):
     values = [
         self.get_argument(field, None) for field in models.Player.fields
     ]
     player = models.Player(values)
     user = self.get_current_user()
     if user:
         if player.password and player.user_name and user.priviledges == 'admin':
             player.set_password()
         if player.member == None and user.priviledges in ('admin',
                                                           'hallitus'):
             player._values['member'] = False
     else:
         player._values['user_name'] = None
         player._values['password'] = None
     if player.save():
         self.redirect("/")
     else:
         self.render(
             "new_player.html",
             tittle="Uusi pelaaja",
             player=player,
             message="Pelaaja on jo tietokannassa!",
             # For template
             all_players=models.players(),
             course_name_dict=self.db.course_name_dict(),
             active_games=models.games({'active': True}),
             user=self.get_current_user(),
         )
Ejemplo n.º 12
0
async def team(ctx):
    if not config['game_ongoing']: return
    member = ctx.message.author
    try:
        p = models.Player()
        p.custom_load("discord_id = ?", (member.id, ))
        if p.last_active_day != helpers.get_game_day():
            p.last_active_day = helpers.get_game_day()
            p.update()
            models.save()
    except Exception:
        await ctx.send("I don't think you're playing, {}\n\
            (If you think this is a mistake, please talk to a Lord or the King)"
                       .format(member.mention))
        return
    t = models.Team()
    t.load(p.team_id)
    l = models.Location()
    l.load(t.current_location_id)
    funding_table = paymentreducer.get_funding_table(p.team_id,
                                                     helpers.get_game_day())
    await ctx.send(
        "Your team is in **{}**, with at least **{}km** to go!\nHere is how today's funding is going:\n{}"
        .format(
            l.name,
            graphanalyzer.dijkstra(graphanalyzer.graph, t.current_location_id,
                                   0), "```" + funding_table + "```"))
Ejemplo n.º 13
0
	def test_shot_msg(self):

		# Create second player
		mock_sock_2 = Mock()

		player_2 = models.Player(mock_sock_2, "18958")
		player_2.gameId = 234
		conn_2 = Mock()
		conn_2.fileobj = mock_sock_2
		conn_2.data = player_2

		shot_1 = ["SHOT", "234", "12345", "5", "2"] # Miss
		shot_2 = ["SHOT", "234", "12345", "8", "8"] # Hit boat
		shot_3 = ["SHOT", "234", "12345", "8", "7"] # Sink boat
		shot_4 = ["SHOT", "234", "12345", "5", "7"] # Sink last boat

		msg_parts = shot_1 + shot_2 + shot_3 + shot_4

		mock_sock_2.recv.side_effect = encode_msg(msg_parts)

		# Set up game
		game = models.Game(234, 2)
		self.manager.gameDict[234] = game

		# Add players to game
		game.players["12345"] = self.player
		game.players["18958"] = player_2
		game.turnArray = list(game.players.values())
		# shuffle(game.turnArray)
		game.turn = 0

		# Set up player's board
		exp_board = [[0, 0, 0, 0, 0, 0, 15, 0],
					[0, 0, 13, 0, 0, 0, 15, 0],
					[0, 0, 13, 0, 0, 0, 15, 0],
					[0, 0, 13, 0, 0, 0, 15, 0],
					[0, 0, 0, 0, 14, 0, 5, 0],
					[0, 0, 0, 0, 14, 0, 0, 0],
					[0, 0, 0, 0, 14, 0, 0, 0],
					[12, 12, 12, 0, 14, 0, 1, 1]]

		self.player.set_up_game(8, [0,2,3,3,4,5])
		self.player.gameId = 234
		self.player.board.plot = exp_board
		self.player.liveBoats = 2
		self.player.boatHealth = [0, 2, 0, 0, 0, 1]
		self.player.set_status = "ready"





		# Test method
		for i in range(4):
			process_read_request(self.manager, conn_2)

		for i in self.out_msgs:
			print(i)

		print(self.player.board.plot)
Ejemplo n.º 14
0
 def test_continent_bonus(self):
     alex = models.Player('Alex')
     north_america = self.board.continents["north america"]
     for country in north_america.countries.values():
         alex.choose_country(country)
     self.assertEqual(north_america.get_player_set(), {alex})
     self.assertEqual(north_america.bonus, 5)
Ejemplo n.º 15
0
async def spectate(ctx):
    member = ctx.message.author
    player = models.Player()
    team = models.Team()
    try:
        player.custom_load("discord_id = ?", (str(member.id), ))
        team.load(player.team_id)
    except Exception as e:
        await ctx.send(
            "I think you're already out of the game, {}. If you think this was a mistake, please talk to a Lord or the King"
            .format(member.mention))
        logging.error(e)
        return
    # Remove flair from user
    role = get(member.guild.roles, name=team.name)
    await member.remove_roles(role, reason='Player left game')
    # Add spectator role
    role = get(member.guild.roles, name='Spectator')
    await member.add_roles(role, reason='Player left game')

    player.delete()
    models.save()

    logging.info("{} has switched to spectating".format(member.id))
    await ctx.send("{}, you're now a spectator. Enjoy the show!".format(
        member.mention))
Ejemplo n.º 16
0
def action_commit(hex_id, current_gui):
    move_to_commit = models.Move()
    move_to_commit.hex_start = models.Player(
        current_gui.player_id_selected).current_tile
    move_to_commit.hex_end = hex_id
    move_to_commit.action_type = current_gui.action_to_do
    move_to_commit.player_action = current_gui.player_id_selected
    return move_to_commit
Ejemplo n.º 17
0
 def test_attack_self(self):
     country_A = self.board.countries['alaska']
     country_B = self.board.countries['northwest territory']
     alex = models.Player('Alex')
     alex.choose_country(country_A)
     alex.choose_country(country_B)
     with self.assertRaises(AssertionError):
         country_A.attack(country_B, 3, 1)
Ejemplo n.º 18
0
 def test_has_card_set(self):
     card1 = self.cards[0]
     card2 = self.cards[1]
     card3 = self.cards[2]
     card4 = self.cards[3]
     card5 = self.cards[4]
     alex = models.Player("Alex")
     alex.cards = {card1, card2, card3, card4, card5}
     self.assertEqual(alex.has_card_set(), True)
Ejemplo n.º 19
0
    def test_attack(self):
        country_A = self.board.countries['alaska']
        country_B = self.board.countries['northwest territory']
        players = [models.Player('Erty'), models.Player('Alex')]
        country_A.owner = players[0]
        country_B.owner = players[1]
        country_A.troops = 30
        country_B.troops = 10
        with patch.object(random, 'randint') as mock_method:
            mock_method.side_effect = [6, 6, 1, 1, 1]
            country_A.attack(country_B, 3, 4)
            self.assertEqual(country_A.troops, 28)
            self.assertEqual(country_B.troops, 10)

        with patch.object(random, 'randint') as mock_method:
            mock_method.side_effect = [1, 1, 6, 6, 6]
            country_A.attack(country_B, 3, 2)
            self.assertEqual(country_A.troops, 28)
            self.assertEqual(country_B.troops, 8)
Ejemplo n.º 20
0
def add_to_db(data):
    '''
    When called, it adds the user to the database.
    '''

    new_user = models.Player(email=data['email'],
                             username=data['name'],
                             score=0,
                             profile_image=data['imageUrl'])
    DB.session.add(new_user)
    DB.session.commit()
Ejemplo n.º 21
0
def accept_connection(sock):
    conn, addr = sock.accept()
    host, port = addr

    conn.setblocking(False)
    print("accepting connection from {0}".format(addr))

    data = models.Player(conn, port)
    events = selectors.EVENT_READ | selectors.EVENT_WRITE

    sel.register(conn, events, data=data)
Ejemplo n.º 22
0
def play():
    print("Enter your name")
    name = input()
    print("Enter start")
    start = input()
    player = models.Player(name)
    level = 1
    enemy = models.Enemy(level)
    global score
    score = 0
    score = models.Player(score)

    while True:
        try:
            player.attack(enemy)
            player.defense(enemy)
        except exceptions.EnemyDown:
            level += 1
            print("Enemy down, meet new enemy with level ", level)
            enemy = models.Enemy(level)
Ejemplo n.º 23
0
def check_click(hex_id):
    player_selected = None
    # TODO replace with match class
    current_teams = ["Rage", "Peace"]
    players_on_field = []
    for team_name in current_teams:
        players_on_field = players_on_field + models.Team(
            team_name).player_list
    for player_x in players_on_field:
        if models.Player(player_x).current_tile == hex_id:
            player_selected = player_x
    return player_selected
Ejemplo n.º 24
0
 def test_attacking_phase(self):
     country_A = self.game.board.countries["northwest territory"]
     country_B = self.game.board.countries["alaska"]
     country_A.owner = self.players.current_player
     country_B.owner = models.Player("bob")
     country_A.troops = 10
     country_B.troops = 5
     with patch.object(random, 'randint') as mock_random:
         mock_random.side_effect = [6, 6, 1, 1, 1]
         self.game.attack(country_A, country_B, 3, 3)
         self.assertEqual(country_A.troops, 8)
         self.assertEqual(country_B.troops, 5)
Ejemplo n.º 25
0
def action_possible_hexes(action_selected, current_gui, current_field):
    possible_hexes = []
    if action_selected == "Move":
        # find options to move
        current_hex_id = models.Player(
            current_gui.player_id_selected).current_tile
        adj_hexes = current_field.adjacent_hexes(current_hex_id)
        for hex_id in adj_hexes:
            player_occupied = check_click(hex_id)
            if player_occupied is None:
                possible_hexes.append(hex_id)
    elif action_selected == "Throw":
        # find options to throw
        current_hex_id = models.Player(
            current_gui.player_id_selected).current_tile
        current_teams = ["Rage", "Peace"]
        players_on_field = []
        player_hexes = []
        for team_name in current_teams:
            players_on_field = players_on_field + models.Team(
                team_name).player_list
        # check validity of throw, only sideways and back passes
        check_y = current_field.current_field[current_hex_id].hex_coord_y
        for player_x in players_on_field:
            hex_x = current_field.current_field[models.Player(
                player_x).current_tile]
            if hex_x.hex_coord_y <= check_y:
                possible_hexes.append(hex_x.hex_id)
    elif action_selected == "Tackle":
        # find options to tackle
        current_hex_id = models.Player(
            current_gui.player_id_selected).current_tile
        adj_hexes = current_field.adjacent_hexes(current_hex_id)
        for hex_id in adj_hexes:
            player_occupied = check_click(hex_id)
            if player_occupied is not None:
                possible_hexes.append(hex_id)
    else:
        print("Error, action not possible: ", action_selected)
    return possible_hexes
Ejemplo n.º 26
0
    def controller_add_player(self):
        """
        Add player control
        """

        get_view_player = self.view_player.add_player()

        new_player = models.Player(
            get_view_player[0],
            get_view_player[1],
            get_view_player[2],
            get_view_player[3],
            get_view_player[4],
        )

        self.players.append(new_player)
        bdd.serialize_player(self.players)
Ejemplo n.º 27
0
async def me(ctx):
    if not config['game_ongoing']: return
    member = ctx.message.author
    try:
        p = models.Player()
        p.custom_load("discord_id = ?", (member.id, ))
        await ctx.send("{}, you have **{}** coins".format(
            member.mention, p.coins))
        if p.last_active_day != helpers.get_game_day():
            p.last_active_day = helpers.get_game_day()
            p.update()
            models.save()
    except Exception:
        # Show error if user isn't actually playing
        await ctx.send("I... don't believe you're playing, {}\n\
            (If you think this is a mistake, please talk to a Lord or the King)"
                       .format(member.mention))
Ejemplo n.º 28
0
def play():
    name = print(input('Welcome to the game! Please enter your name here: '))
    player_one = models.Player(name)
    enemy_one = models.Enemy()
    while True:
        try:
            player_one.attack(enemy_one)
            player_one.defence(enemy_one)

        except exceptions.EnemyDown:
            if enemy_one.lives == 0:
                player_one.lives += 5
                enemy_two = models.Enemy()
        except exceptions.GameOver:
            with open('scores.txt', 'a+') as file:
                file.write(player_one.name + ' ' + player_one.score + '\n')
            raise
Ejemplo n.º 29
0
Archivo: game.py Proyecto: blite0/hw
def play():
    global player_name
    player_name = input("Please enter your name\n")
    player = models.Player(player_name)
    level = 1
    opponent = models.Enemy(level)
    start_game = input("Write 'start' to start the game\n")

    if start_game == 'start':
        while True:
            try:
                player.attack(opponent)
                player.defence(opponent)
            except exceptions.EnemyDown:
                level += 1
                opponent = models.Enemy(level)
                settings.score = (level - 1) * 5 + player.allowed_attacks
Ejemplo n.º 30
0
	def test_join_play_sail(self):
		# Set up
		msg_parts = ["JOIN", "2"]

		# Create second player
		mock_sock_2 = Mock()

		player_2 = models.Player(mock_sock_2, 18958)
		conn_2 = Mock()
		conn_2.fileobj = mock_sock_2
		conn_2.data = player_2

		# Load Messages
		self.mock_sock.recv.side_effect = encode_msg(msg_parts)
		mock_sock_2.recv.side_effect = encode_msg(msg_parts)

		# Test method
		process_read_request(self.manager, self.conn)
		process_read_request(self.manager, conn_2)

		# Get message responses
		game_msg = self.out_msgs[0]
		wait_msg = self.out_msgs[1]
		play_msg = self.out_msgs[2]
		sail_msg = self.out_msgs[3]
		game_number = game_msg[4:]

		# Check play message
		self.assertEqual(play_msg[:4], "PLAY")
		self.assertEqual(play_msg[4:7], game_number)
		self.assertEqual(int(play_msg[7:9]), self.player.boardSize) # Boardsize
		self.assertEqual(play_msg[9], "1") # Number of opponents
		self.assertEqual(play_msg[10:15], "18958") # Opp 1 Port
		self.assertEqual(play_msg[15:35].lstrip(" "), "Anonymous58") #Opp 1 Name

		# Check sail message
		self.assertEqual(sail_msg[:4], "SAIL")
		self.assertEqual(sail_msg[4:7], game_number)
		self.assertEqual(sail_msg[7], "1") # Coord Size
		self.assertEqual(sail_msg[8], "5") # Boat Count
		self.assertEqual(sail_msg[9:14], "23345") # Boat Layout

		# Check Variables
		self.assertEqual(self.player.status, "settingBoard")
		self.assertEqual(self.player.boatHealth, [None] * 6)
		self.assertIsInstance(self.player.board, models.Board)