コード例 #1
0
ファイル: player_info.py プロジェクト: m3nd0r/game_companion
def change_player_name(update, context):
    player = Player(update.message.from_user.id)
    new_name = ' '.join(context.args)
    player.change_player_name(new_name, update.message.from_user.id)
    context.bot.send_message(chat_id=update.effective_chat.id,
                             text="Имя игрока изменено на: {}".format(
                                 new_name.title()))
コード例 #2
0
 def __init__(self, window):
     super().__init__(window)
     self.player1_name = "Dark Conqueror"
     self.player2_name = "Knight of Light"
     self.game_keys = GAME_KEYS
     self.pressed_keys = {}
     for key in self.game_keys:
         self.pressed_keys[key] = False
     self.prev_pressed_keys = {}
     for key in self.game_keys:
         self.prev_pressed_keys[key] = False
     self.images = {}
     self.gui_textures = {self.player1_name: [], self.player2_name: []}
     self.init_gui_textures()
     self.player_name_font_size = 30
     self.player_name_font = pygame.font.SysFont(None,
                                                 self.player_name_font_size)
     self.does_menu = False
     self.menu = pygame_menu.Menu(title="Game menu",
                                  height=250,
                                  width=500,
                                  theme=pygame_menu.themes.THEME_DARK)
     self.menu.add.button("Quit", switch_to_menu, self.event_manager)
     self.engine = GameEngine(Player(self.player1_name),
                              Player(self.player2_name))
     self.end_time_frame_ended = get_time()
     self.fps_sys = FpsRenderSystem(window)
     self.end_time = None
コード例 #3
0
def run_game():
    global CONNECTED_PEOPLE
    global THREADS
    player1 = Player("Dark Conqueror")
    player2 = Player("Knight of Light")
    engine = GameEngine(player1, player2)
    game_running = True
    frame_in_period = 0
    dt = 1 / 60
    start_frame_time = get_time()
    print("GAME")
    end_time = None
    keys = [None] * 2
    while game_running:
        frame_in_period += 1

        # get players keys (non blocking)
        for i in range(len(CONNECTED_PEOPLE)):
            try:
                keys[i] = recv_data_on_open_socket(CONNECTED_PEOPLE[i])
            except socket.error:
                keys[i] = None

        # update logic
        state = engine.update(dt, keys[0], keys[1])

        # check for endgame
        if state.has_ended and end_time is None:
            end_time = get_time()
        if end_time and (get_time()-end_time) * 1e-9 >= 1:
            state.should_exit = True
            print("Game over")

        if state.should_exit:
            for i in range(len(CONNECTED_PEOPLE)):
                WANT_TO_PLAY[i] = False
                # block sockets
                block_socket(CONNECTED_PEOPLE[i])
                # create threads
                player_thread = threading.Thread(target=threaded_client, args=[CONNECTED_PEOPLE[i], i])
                player_thread.start()
                THREADS.append(player_thread)

            game_running = False


        # send data (if period ended)
        if frame_in_period % SENDING_PERIOD == 0 or state.should_exit:
            frame_in_period = 0
            for i in range(len(CONNECTED_PEOPLE)):
                if not send_data_on_open_socket(CONNECTED_PEOPLE[i], state):
                    print("Client exited.")
                    return False

        # calculate frame time
        end_frame_time = get_time()
        dt = (end_frame_time - start_frame_time) * 1e-9
        start_frame_time = get_time()
    return True
コード例 #4
0
def heal(update, context):
    player = Player(update.message.from_user.id)
    context.bot.send_message(chat_id=update.effective_chat.id,
                             text="Исцеляю...".format(player.curr_hp))
    player.heal(update.message.from_user.id)
    context.bot.send_message(chat_id=update.effective_chat.id,
                             text="Готово!\n"
                             "Текущие ХП: {}".format(player.curr_hp))
コード例 #5
0
 def run(self):
     while not self.workdone[-1]:
         try:
             # Ok to block
             response, start, work = self.results.get(timeout=1)
             try:
                 self.return_queue.put_nowait(
                     APIResult(
                         tuple(
                             Player(
                                 p['account_id'],
                                 p['nickname'],
                                 p['created_at'],
                                 p['last_battle_time'],
                                 p['updated_at'],
                                 p['statistics']['all']['battles'],
                                 'xbox' if p['nickname'][-2:] == '-x' else 'ps',
                                 p['statistics']['all']['spotted'],
                                 p['statistics']['all']['wins'],
                                 p['statistics']['all']['damage_dealt'],
                                 p['statistics']['all']['frags'],
                                 p['statistics']['all']['dropped_capture_points']
                             ) for __, p in response['data'].items() if p),
                         start.timestamp(),
                         work[0]
                     )
                 )
             except KeyError:
                 self.log.warning('Batch %i has no "data" key', work[0])
                 self.log.warning('Batch %i: %s', work[0], str(response))
         except Empty:
             pass
コード例 #6
0
    def play_scenario(self, idsc=0, interactive=True):
        interp_u = np.zeros((len(self.times), len(self.lats), len(self.lons)))
        interp_v = np.zeros((len(self.times), len(self.lats), len(self.lons)))
        mag = np.zeros((len(self.times), len(self.lats), len(self.lons)))

        for t, time in enumerate(self.times):
            for ii, lat in enumerate(self.lats):
                for j, lon in enumerate(self.lons):
                    query_pt = [time, lat, lon]
                    interp_u[t][ii][j] = self.uWindAvg(query_pt)
                    interp_v[t][ii][j] = self.vWindAvg(query_pt)
                    mag[t][ii][j] = (interp_u[t][ii][j]**2 +
                                     interp_v[t][ii][j]**2)**0.5

        # %% PLOT
        font = {'family': 'normal', 'weight': 'bold', 'size': 22}
        proj = 'mill'
        res = 'i'
        Dline = 5
        density = 1
        matplotlib.rc('font', **font)
        fig = plt.figure(figsize=(8, 5))

        m = Basemap(projection=proj, lat_ts=10, llcrnrlon=self.lons.min(), \
                    urcrnrlon=self.lons.max(), llcrnrlat=self.lats.min(), urcrnrlat=self.lats.max(), \
                    resolution=res)

        x, y = m(*np.meshgrid(self.lons, self.lats))
        contour = m.pcolormesh(x, y, mag[0], shading="flat", cmap=plt.cm.jet)
        cbar = m.colorbar(location='right')
        quiv = m.quiver(x, y, interp_u[0], interp_v[0], color='black')
        cbar.ax.set_ylabel('Wind magnitude m/s')

        m.drawcoastlines()
        m.fillcontinents()
        m.drawmapboundary()
        m.drawparallels(self.lats[0::Dline], labels=[1, 0, 0, 0])
        m.drawmeridians(self.lons[0::Dline], labels=[0, 0, 0, 1])
        tit = plt.title('Scenario ' + str(idsc) + ' at time : ' +
                        str(self.times[0]) + ' days')

        ### using this class is as easy as using FuncAnimation:

        def update(i):
            contour.set_array(mag[i][:-1, :-1].ravel())
            quiv.set_UVC(interp_u[i], interp_v[i])
            tit.set_text('Scenario ' + str(idsc) + ' at time : ' +
                         str(self.times[i]) + ' days')
            cbar.set_clim(vmin=mag[i].min(), vmax=mag[i].max())
            cbar.draw_all()

        if interactive:
            ani = Player(fig, update, maxi=len(interp_v) - 1)
        else:
            ani = animation.FuncAnimation(fig,
                                          update,
                                          frames=len(interp_v),
                                          interval=600)
        plt.show()
        return ani
コード例 #7
0
def defense(update, context):
    player = Player(update.message.from_user.id)
    mobname = context.user_data['mobname']
    text = update.message.text
    context.user_data['player_translate'] = text
    player_translate = context.user_data['player_translate']

    if str(player_translate).lower() in context.user_data['translations_list']:
        update.message.reply_text('Защита успешна🛡', reply_markup=end_turn)
    else:
        update.message.reply_text('Неверно!\n'
                                  'Монстр наносит вам {} урона!'.format(
                                      mobname.dmg),
                                  reply_markup=end_turn)
        player.curr_hp -= mobname.dmg
        db.update_cur_hp(player.curr_hp, update.message.from_user.id)
        if player.curr_hp <= 0:
            context.bot.send_message(chat_id=update.effective_chat.id,
                                     text='Битва проиграна😔\n'
                                     'Нужно лечение!',
                                     reply_markup=ReplyKeyboardRemove())

            return ConversationHandler.END

    return TURN
コード例 #8
0
    def setup(self):
        arcade.set_background_color(arcade.color.AMAZON)
        self.all_sprites = arcade.SpriteList()
        self.coin_list = arcade.SpriteList()
        self.wall_list = arcade.SpriteList()
        self.cubicle_list = arcade.SpriteList()
        self.worker_list = arcade.SpriteList()
        self.button_list = []

        self.score = STARTSCORE
        self.coin_type = arcade.Sprite
        self.level_scores = []
        self.level_number = 0
        self.question_up = False
        self.question = None
        self.graphing = False
        self.touching = None

        player_images = [[
            arcade.load_texture('bin/boehm_walk/walk_boehm0.png', scale=0.75)
        ],
                         [
                             arcade.load_texture(
                                 'bin/boehm_walk/walk_boehm0.png',
                                 scale=0.75,
                                 mirrored=True)
                         ],
                         [
                             arcade.load_texture(
                                 'bin/boehm_walk/walk_boehm{}.png'.format(i),
                                 scale=0.75) for i in range(6)
                         ],
                         [
                             arcade.load_texture(
                                 'bin/boehm_walk/walk_boehm{}.png'.format(i),
                                 scale=0.75,
                                 mirrored=True) for i in range(6)
                         ]]

        self.player = Player(player_images)

        # start a level
        self.level()
        self.physics_engine = arcade.PhysicsEngineSimple(
            self.player, self.cubicle_list)
コード例 #9
0
ファイル: game.py プロジェクト: mokaddem/Phaser-RTS-Game
def main():
    glob.players = [
        Player(i) for i in range(cfg.getint('map', 'playerNumber'))
    ]
    glob.the_map = MapDefinition.Map()
    glob.actionEventManager = MapDefinition.ActionEventManager()

    mainGamelogic = mainGamelogicThread("gameLogic")
    mainGamelogic.start()
コード例 #10
0
def ask_answer(update, context):
    player = Player(update.message.from_user.id)
    mobname = context.user_data['mobname']
    text = update.message.text

    if text == str(context.user_data['answer']):
        update.message.reply_text('<b>{}</b> получает <b>{}</b> урона'.format(
            mobname.rus_name.title(), player.dmg),
                                  parse_mode='html')
        mobname.hp -= player.dmg
        if mobname.hp <= 0:
            context.bot.send_message(
                chat_id=update.effective_chat.id,
                text='Противник повержен!\nОтличная битва!\n'
                '<b>Получено {} опыта.</b>'.format(mobname.exp),
                parse_mode='html',
                reply_markup=ReplyKeyboardRemove())
            new_exp = player.curr_exp + mobname.exp
            player.update_curr_exp(new_exp, update.message.from_user.id)

            if player.curr_exp > player.next_lvl_exp:
                db.lvl_up(update.message.from_user.id)
                db.set_exp_to_next_lvl()
                context.bot.send_message(
                    chat_id=update.effective_chat.id,
                    text='Поздравляем, вы получили уровень!',
                    reply_markup=ReplyKeyboardRemove())
                return ConversationHandler.END
            else:
                return ConversationHandler.END
    else:
        update.message.reply_text('<b>Промах!</b>', parse_mode='html')

    context.bot.send_message(chat_id=update.effective_chat.id,
                             text='Защищайся!')
    context.bot.send_message(chat_id=update.effective_chat.id,
                             text='Переверди на русский: <b>{}</b>'.format(
                                 context.user_data['translation'][0]),
                             parse_mode="html")
    word = context.user_data['translation'][0]
    translations_list = translation(word)
    context.user_data['translations_list'] = translations_list

    return DEFENSE
コード例 #11
0
ファイル: rating.py プロジェクト: razumau/ke-scrapers
def process_csv(year: int) -> List[Player]:
    print(f"Processing {year}")
    dicts = read_csv(year)
    return [
        Player(
            id=int(d["IDplayer"]),
            team=Team(id=int(d["Team ID"]),
                      name=d["Название"],
                      city=d["Город"],
                      year=year),
            first_name=d["Имя"],
            middle_name=d["Отчество"],
            last_name=d["Фамилия"],
        ) for d in dicts
    ]
コード例 #12
0
    def setUp(self, agent_opts=None):
        spec = {
            "players": [Player(42, "SPEAKER", Pos(5, 63, 5), Look(270, 0), Item(0, 0))],
            "mobs": [],
            "item_stacks": [],
            "ground_generator": flat_ground_generator,
            "agent": {"pos": (0, 63, 0)},
            "coord_shift": (-16, 54, -16),
        }
        world_opts = Opt()
        world_opts.sl = 32
        self.world = World(world_opts, spec)
        self.agent = FakeAgent(self.world, opts=agent_opts)

        self.set_looking_at((0, 63, 0))
        self.speaker = self.agent.get_other_players()[0].name
        self.agent.perceive()
コード例 #13
0
 def __init__(self):
     # Replica of test environment
     spec = {
         "players":
         [Player(42, "SPEAKER", Pos(5, 63, 5), Look(270, 0), Item(0, 0))],
         "mobs": [],
         "ground_generator":
         flat_ground_generator,
         "agent": {
             "pos": (0, 63, 0)
         },
         "coord_shift": (-16, 54, -16),
     }
     world_opts = Opt()
     world_opts.sl = 32
     self.world = World(world_opts, spec)
     self.agent = FakeAgent(self.world, opts=None)
     self.speaker = "cat"
コード例 #14
0
def turn(update, context):
    player = Player(update.message.from_user.id)
    mobname = context.user_data['mobname']
    context.bot.send_message(chat_id=update.effective_chat.id,
                             text='🔸ХП Игрока: {}\n🔸ХП Монстра: {}'.format(
                                 player.curr_hp, mobname.hp))
    # Определеяется сложность моба:
    difficulty = mobname.difficulty
    ops = calc.rand_calc(difficulty)
    for k, v in ops.items():
        operation = k
        answer = v
        context.user_data['answer'] = answer
        context.user_data['wrong_answers'] = [
            random.randint(int(answer),
                           int(answer) + 15) for i in range(3)
        ]

        update.message.reply_text('<b>{}</b>'.format(operation),
                                  reply_markup=keyboard_generator(context),
                                  parse_mode='html')
        context.user_data['translation'] = db.word_for_tr()

    return ASK_ANSWER
コード例 #15
0
ファイル: conftest.py プロジェクト: thtrvdnl/fifa-bot
def player():
    return Player(123, 1513454219, 999999, 999999, 1)
コード例 #16
0
ファイル: master.py プロジェクト: tristan-ka/IBoat-PMCTS
    def plot_hist_best_policy(self, idscenario=-1, interactive=False):
        """
        Plot the best policy as in :py:meth:`plot_best_policy`, with the histogram of the best action at each node\
         (`Animation <https://matplotlib.org/api/animation_api.html>`_)

        :param int idscenario: id of the corresponding worker tree to be plot. If -1 (default), the global tree is plotted.
        :param bool interactive: if True the plot is not an animation but can be browsed step by step
        :return: `Animation <https://matplotlib.org/api/animation_api.html>`_
        """
        # check if the best_policy has been computed
        if len(self.best_policy) == 0:
            self.get_best_policy()

        # Get the right policy:
        nodes_policy = self.best_nodes_policy[idscenario]
        policy = self.best_policy[idscenario]

        # Plot
        fig, ax1 = self.plot_best_policy(idscenario=idscenario,
                                         number_subplots=2)

        ax2 = fig.add_subplot(1, 2, 2)
        ax2.set_title("Histogram of returns for given action")
        barcollection = ax2.bar(Hist.MEANS, [0 for _ in Hist.MEANS],
                                Hist.THRESH[1] - Hist.THRESH[0])
        pt, = ax1.plot(0, 0, color="green", marker='o', markersize='7')
        x0, y0 = 0, 0
        x_list = [x0]
        y_list = [y0]
        for node in nodes_policy[1:]:
            x = x0 + 1 * sin(node.arm * pi / 180)
            y = y0 + 1 * cos(node.arm * pi / 180)
            x_list.append(x)
            y_list.append(y)
            x0, y0 = x, y

        def animate(i):
            n = nodes_policy[i]
            if i == len(nodes_policy) - 1:
                # last nodes: same reward for all actions
                a = 0
            else:
                a = A_DICT[policy[i]]
            if idscenario is -1:
                hist = sum(n.rewards[ii, a].h * self.probability[ii]
                           for ii in range(len(n.rewards[:, a])))
            else:
                hist = n.rewards[idscenario, a].h
            for j, b in enumerate(barcollection):
                b.set_height(hist[j])
            ax2.set_ylim([0, np.max(hist) + 1])
            pt.set_data(x_list[i], y_list[i])

            return barcollection, pt

        if interactive:
            anim = Player(fig, animate, maxi=len(nodes_policy) - 1)
        else:
            anim = animation.FuncAnimation(fig,
                                           animate,
                                           frames=len(nodes_policy),
                                           interval=1000,
                                           blit=False)
        plt.show()

        return anim
コード例 #17
0
def run():
    Player.getGame().mixer.pause()
コード例 #18
0
hall = Hall()
connection_list = []
connection_list.append(listen_sock)


while True:
    conn, addr = s.accept()
    print("Connected to ", addr)

    # Player.fileno()
    read_players, write_players, error_sockets = select.select(
        connection_list, [], [])
    for player in read_players:
        if player is listen_sock:  # new connection, player is a socket
            new_socket, add = player.accept()
            new_player = Player(new_socket)
            connection_list.append(new_player)
            hall.welcome_new(new_player)

        else:  # new message
            msg = player.socket.recv(4096)
            if msg:
                msg = msg.decode().lower()
                hall.handle_msg(player, msg)
            else:
                player.socket.close()
                connection_list.remove(player)

    for sock in error_sockets:  # close error sockets
        sock.close()
        connection_list.remove(sock)
コード例 #19
0
class MyGame(arcade.Window):
    """ Main application class. """
    def __init__(self, width, height, title):
        file_path = os.path.dirname(os.path.abspath(__file__))
        os.chdir(file_path)

        super().__init__(width, height, title)
        self.game_state = 0
        self.coin_list = None

    def level(self):
        if self.game_state:
            self.game_state = GAMERUN
        self.coin_list = arcade.SpriteList()
        self.start_timer()

        levels = [(arcade.Sprite, 30), (FallingCoin, 30), (RisingCoin, 20),
                  (BouncingCoin, 20)]
        try:
            self.coin_type, num_coins = levels[self.level_number]
        except IndexError:
            self.game_state = GAMEOVER
            return
        else:
            self.make_walls()

    def place_coin(self):
        while True:
            coin = self.coin_type('bin/gold/gold0.png', scale=0.3)
            coin.center_x = random.randrange(WIDTH)
            coin.center_y = random.randrange(HEIGHT)
            if isinstance(coin, BouncingCoin):
                coin.change_x = random.randrange(-3, 3)
                coin.change_y = random.randrange(-3, 3)
            # check for collisions
            wall_hits = arcade.check_for_collision_with_list(
                coin, self.wall_list)
            worker_hits = arcade.check_for_collision_with_list(
                coin, self.worker_list)
            cube_hits = arcade.check_for_collision_with_list(
                coin, self.cubicle_list)
            coin_hits = arcade.check_for_collision_with_list(
                coin, self.coin_list)

            if len(wall_hits) == len(coin_hits)\
                   == len(cube_hits) == len(worker_hits) == 0:
                break
        self.coin_list.append(coin)

    def make_walls(self):
        for w in self.wall_list:
            self.all_sprites.remove(w)
        self.wall_list = arcade.SpriteList()
        for x in range(0, WIDTH, dim):
            wall_t = arcade.Sprite('bin/wall.jpg', scale)
            wall_b = arcade.Sprite('bin/wall.jpg', scale)
            wall_t.center_x, wall_t.center_y = x, 0
            wall_b.center_x, wall_b.center_y = x, HEIGHT
            self.wall_list.append(wall_t)
            self.wall_list.append(wall_b)

        for y in range(0, HEIGHT, dim + 1):
            wall_l = arcade.Sprite('bin/wall.jpg', scale)
            wall_r = arcade.Sprite('bin/wall.jpg', scale)
            wall_l.center_x, wall_l.center_y = 0, y
            wall_r.center_x, wall_r.center_y = WIDTH, y
            self.wall_list.append(wall_l)
            self.wall_list.append(wall_r)

        self.make_cubicles()
        for wall in self.wall_list:
            self.all_sprites.append(wall)

    def cube_one(self):
        for y in range(int(d), int(1.5 * dim) + 1, int(d)):
            wall = arcade.Sprite('bin/wall.jpg', scl)
            wall.center_x, wall.center_y = 2.5 * dim, y + dim / 2 - d / 2
            self.cubicle_list.append(wall)

        for y in range(int(HEIGHT - d), HEIGHT - int(1.5 * dim) + 1, int(-d)):
            wall = arcade.Sprite('bin/wall.jpg', scl)
            wall.center_x, wall.center_y = WIDTH - 2.5 * dim, y - dim / 2 + d / 2
            self.cubicle_list.append(wall)

    def cube_two(self):
        comp = arcade.Sprite('bin/other/comp.png', 0.05)
        comp.center_x, comp.center_y = WIDTH - 165, 535
        comp.angle = 90
        self.wall_list.append(comp)

        comp = arcade.Sprite('bin/other/comp.png', 0.05)
        comp.center_x, comp.center_y = dim - 20, HEIGHT - 505
        comp.angle = 90
        self.wall_list.append(comp)

    def cube_three(self):
        comp = arcade.Sprite('bin/other/comp.png', 0.05)
        comp.center_x, comp.center_y = WIDTH - 60, HEIGHT - 505
        comp.angle = -90
        self.wall_list.append(comp)

        comp = arcade.Sprite('bin/other/comp.png', 0.05)
        comp.center_x, comp.center_y = 60, HEIGHT - 65
        comp.angle = 90
        self.wall_list.append(comp)

        comp = arcade.Sprite('bin/other/comp.png', 0.05)
        comp.center_x, comp.center_y = 240, HEIGHT - 65
        comp.angle = 90
        self.wall_list.append(comp)

        comp = arcade.Sprite('bin/other/comp.png', 0.05)
        comp.center_x, comp.center_y = 440, HEIGHT - 65
        comp.angle = 90
        self.wall_list.append(comp)

        for y in range(int(d), int(1.5 * dim), int(d)):
            wall = arcade.Sprite('bin/wall.jpg', scl)
            wall.center_x, wall.center_y = 2.5 * dim, HEIGHT - (y + dim / 2 -
                                                                d / 2)
            self.cubicle_list.append(wall)

        for y in range(int(d), int(1.5 * dim), int(d)):
            wall = arcade.Sprite('bin/wall.jpg', scl)
            wall.center_x, wall.center_y = WIDTH / 2, HEIGHT - (y + dim / 2 -
                                                                d / 2)
            self.cubicle_list.append(wall)

        for y in range(int(HEIGHT - d), HEIGHT - int(1.5 * dim) + 1, int(-d)):
            wall = arcade.Sprite('bin/wall.jpg', scl)
            wall.center_x, wall.center_y = WIDTH - 2.5 * dim, HEIGHT - (
                y - dim / 2 + d / 2)
            self.cubicle_list.append(wall)

    def cube_four(self):
        water = arcade.Sprite('bin/other/water.png', 0.2)
        water.center_x, water.center_y = WIDTH / 2, dim + 12
        self.cubicle_list.append(water)

    def make_cubicles(self):
        self.cubicle_list = arcade.SpriteList()
        cube_levels = [
            self.cube_one, self.cube_two, self.cube_three, self.cube_four
        ]
        for level in range(self.level_number + 1):
            cube_levels[level]()
        self.physics_engine = arcade.PhysicsEngineSimple(
            self.player, self.cubicle_list)

    def setup(self):
        arcade.set_background_color(arcade.color.AMAZON)
        self.all_sprites = arcade.SpriteList()
        self.coin_list = arcade.SpriteList()
        self.wall_list = arcade.SpriteList()
        self.cubicle_list = arcade.SpriteList()
        self.worker_list = arcade.SpriteList()
        self.button_list = []

        self.score = STARTSCORE
        self.coin_type = arcade.Sprite
        self.level_scores = []
        self.level_number = 0
        self.question_up = False
        self.question = None
        self.graphing = False
        self.touching = None

        player_images = [[
            arcade.load_texture('bin/boehm_walk/walk_boehm0.png', scale=0.75)
        ],
                         [
                             arcade.load_texture(
                                 'bin/boehm_walk/walk_boehm0.png',
                                 scale=0.75,
                                 mirrored=True)
                         ],
                         [
                             arcade.load_texture(
                                 'bin/boehm_walk/walk_boehm{}.png'.format(i),
                                 scale=0.75) for i in range(6)
                         ],
                         [
                             arcade.load_texture(
                                 'bin/boehm_walk/walk_boehm{}.png'.format(i),
                                 scale=0.75,
                                 mirrored=True) for i in range(6)
                         ]]

        self.player = Player(player_images)

        # start a level
        self.level()
        self.physics_engine = arcade.PhysicsEngineSimple(
            self.player, self.cubicle_list)

    def make_worker(self):
        worker = Worker()

        # use cubicle coordinates
        counter = 0
        while True:
            counter += 1
            worker.center_x, worker.center_y = worker.get_coords(
                self.level_number)
            plist = arcade.SpriteList()
            plist.append(self.player)
            player_hits = arcade.check_for_collision_with_list(worker, plist)
            worker_hits = arcade.check_for_collision_with_list(
                worker, self.worker_list)

            if len(worker_hits) == len(player_hits) == 0:
                break
            if counter == len(Worker.coords):
                return

        self.worker_list.append(worker)
        self.all_sprites.append(worker)

    def check_worker_collisions(self):
        p = self.player
        for worker in self.worker_list:
            if p.left > worker.right:
                continue
            if p.right < worker.left:
                continue
            if p.bottom > worker.top:
                continue
            if p.top < worker.bottom:
                continue
            self.touching = worker
            self.start_question()

    def start_question(self):
        self.game_state = QUESTION
        self.get_question()

    def start_timer(self):
        self.time = TIMELIMIT
        self.timing = True

    def stop_timer(self):
        self.timing = False

    def get_question(self):
        worker = self.touching
        buttons, data = worker.ask_question()
        for b in buttons:
            self.button_list.append(b)
        self.question = {'text': data.text, 'buttons': data.buttons}
        # remove worker
        worker.kill()
        self.touching = None

    def draw_question(self):
        # draw dialog box with text
        x, y = 50, HEIGHT / 2
        w, h = WIDTH - 50 - x, HEIGHT - 50 - y
        x += w / 2
        y += h / 2
        arcade.draw_rectangle_filled(x, y, w, h, arcade.color.WHITE)
        arcade.draw_text(self.question['text'],
                         x,
                         y,
                         arcade.color.BLACK,
                         14,
                         width=w,
                         align='center',
                         anchor_x='center',
                         anchor_y='center')
        # maybe stop time here
        self.stop_timer()
        self.draw_time()

        if not self.question_up:
            self.question_up = True
        for b in self.button_list:
            b.draw()

    def draw_title(self):
        tex = arcade.load_texture('bin/title.png')
        arcade.draw_texture_rectangle(WIDTH // 2, HEIGHT // 2, tex.width,
                                      tex.height, tex, 0)

    def draw_game_over(self):
        self.stop_timer()
        w = WIDTH / 4
        arcade.draw_text('Game Over',
                         w,
                         400,
                         arcade.color.BLACK,
                         50,
                         width=w * 2,
                         align='center')
        arcade.draw_text('Click to Restart',
                         w,
                         350,
                         arcade.color.BLACK,
                         24,
                         width=w * 2,
                         align='center')

    def draw_game(self):
        if self.game_state == GAMERUN:
            r, g, b = arcade.color.AMAZON
            output = 'Quarter {}'.format(self.level_number + 1)
            arcade.draw_text(output,
                             WIDTH / 4,
                             25 + dim, (r - 15, g - 15, b - 15),
                             50,
                             width=WIDTH / 2,
                             align='center')

        self.player.draw()

        self.all_sprites.draw()
        self.cubicle_list.draw()
        self.coin_list.draw()

        output = 'Balance: ${}'.format(self.score)
        arcade.draw_text(output, 10, HEIGHT - 20, arcade.color.WHITE, 18)
        output = 'Press [q] to quit'
        arcade.draw_text(output, WIDTH / 2 - 50, HEIGHT - 20,
                         arcade.color.WHITE, 14)
        self.draw_time()

    def draw_time(self):
        output = 'Time: {:.0f}'.format(self.time)
        arcade.draw_text(output, WIDTH - 115, HEIGHT - 20, arcade.color.WHITE,
                         18)

    def on_draw(self):
        """ Render the screen. """
        arcade.start_render()
        if not self.game_state:
            self.draw_title()
        if self.game_state == GAMERUN:
            self.draw_game()
        if self.game_state == GAMEOVER:
            self.draw_graph()
            self.draw_game_over()
        if self.game_state == QUESTION:
            self.draw_question()
        if self.game_state == GRAPH:
            self.draw_graph()

    def on_key_press(self, key, modifiers):
        SPEED = 5
        if key == arcade.key.Q:
            sys.exit(0)

        if key == arcade.key.UP:
            self.player.change_y = SPEED
        if key == arcade.key.DOWN:
            self.player.change_y = -SPEED
        if key == arcade.key.LEFT:
            self.player.change_x = -SPEED
        if key == arcade.key.RIGHT:
            self.player.change_x = SPEED

    def on_key_release(self, key, modifiers):
        if key == arcade.key.UP or key == arcade.key.DOWN:
            self.player.change_y = 0
        elif key == arcade.key.LEFT or key == arcade.key.RIGHT:
            self.player.change_x = 0

    def on_mouse_press(self, x, y, button_num, modifiers):
        if not self.game_state:
            self.game_state = GAMERUN
        if check_press(x, y, self.button_list):
            self.game_state = QUESTION
        if self.game_state == GAMEOVER:
            self.game_state = GAMERUN
            self.setup()

    def on_mouse_release(self, x, y, button_num, modifiers):
        data = check_release(x, y, self.button_list)
        if data and self.game_state == QUESTION:
            # reward player for answer
            reward = self.question['buttons'][data.lbl]
            self.score += reward
            self.game_state = GAMERUN
            self.timing = True
            self.button_list = []

        if self.game_state == GRAPH:
            arcade.set_background_color(arcade.color.AMAZON)
            self.graphing = False
            self.next_level()

    def next_level(self):
        self.start_timer()
        self.level_number += 1
        self.level()

    def draw_graph(self):
        if not self.graphing and self.game_state != GAMEOVER:
            self.level_scores.append(self.score)
        self.graphing = True
        if graph(self.level_scores, self):
            self.game_state = GAMEOVER

    def update(self, delta_time):
        """ All the logic to move, and the game logic goes here. """
        if self.timing:
            self.time -= delta_time
        if self.time <= 0:
            # show quarter update and go to next level
            self.game_state = GRAPH
            self.draw_graph()
        if self.game_state == GAMERUN:
            # randomly spawn a coin
            if random.randrange(coin_prob) == 0:
                self.place_coin()
            self.coin_list.update()

            # make workers
            if random.randrange(coin_prob * 2) == 0:
                self.make_worker()

            self.all_sprites.update()

            self.physics_engine.update()

            self.player.update_animation()

            hit_list = arcade.check_for_collision_with_list(
                self.player, self.coin_list)
            for coin in hit_list:
                coin.kill()
                self.score += COINSCORE

            self.check_worker_collisions()
コード例 #20
0
ファイル: fake_agent.py プロジェクト: youkarin/craftassist
 def get_other_players(self):
     return [Player(42, "SPEAKER", Pos(5, 63, 5), Look(270, 0), Item(0, 0))]
コード例 #21
0
pygame.mixer.pre_init(44100, -16, 2)
pygame.mixer.music.load("Burzum-Den_onde_ysten.wav")
pygame.mixer.music.play()
dp = pygame.mixer.Sound("batflyby.wav")
bark = pygame.mixer.Sound("dogbark.wav")

#direction will store the players directions
direction = "stop"
mons_dir = "stop"

#get the center of the screen and set the player there
screen_center = screen.get_rect().center
player_imgs = [
    "dogefront.png", "dogeback.png", "dogeright.png", "dogeleft.png"
]
player = Player(player_imgs[0], screen_center)
player.setImage(player_imgs[0])
life = 3

#mob initialization
mobs = Player("bat.png", screen_center)
spawn = False
hurt_time = 0
hurt = False

#get other relevant images
lives = pygame.image.load("Dog Treat 1.png").convert_alpha()

#battery life
outline = pygame.image.load("Empty Battery Meter 128 px.png").convert_alpha()
fill = pygame.image.load("Battery Meter Fill.png").convert_alpha()
コード例 #22
0
ファイル: player_info.py プロジェクト: m3nd0r/game_companion
def player_info(update, context):
    player = Player(update.message.from_user.id)
    context.bot.send_message(chat_id=update.effective_chat.id,
                             text=player.player_info(),
                             parse_mode='html')
コード例 #23
0
ファイル: fake_agent.py プロジェクト: yjernite/craftassist
 def get_player(self):
     return Player(1, "fake_agent", Pos(*self.pos), Look(0, 0), Item(0, 0))
コード例 #24
0
 def resolve(self, game):
     game.players.append(Player(game, len(game.players), self.value))
     return PlayerJoinedMessage(game.players[-1],
                                name=game.players[-1].name)
コード例 #25
0
 def create_player_enemy(self):
     self.player = Player(self.center_x*3/4, self.center_y//3, resources.player_image_sprite, 5)
     self.enemy = Enemy(self.center_x*3/4, 7*self.center_y//4, resources.enemy_image_sprite, 50)
     return (self.player, self.enemy)
コード例 #26
0
ファイル: fake_agent.py プロジェクト: qingqing01/droidlet
 def get_player(self):
     return Player(1, "fake_agent", Pos(*self.pos), self.get_look(), Item(*self._held_item))
コード例 #27
0
    def setUp(self, agent_opts=None):
        spec = {
            "players":
            [Player(42, "SPEAKER", Pos(5, 63, 5), Look(270, 0), Item(0, 0))],
            "mobs": [],
            "ground_generator":
            flat_ground_generator,
            "agent": {
                "pos": (0, 63, 0)
            },
            "coord_shift": (-16, 54, -16),
        }
        world_opts = Opt()
        world_opts.sl = 32
        self.world = World(world_opts, spec)
        self.agent = FakeAgent(self.world, opts=agent_opts)

        # More helpful error message to encourage test writers to use self.set_looking_at()
        self.agent.get_player_line_of_sight = Mock(
            side_effect=NotImplementedError(
                "Cannot call into C++ function in this unit test. " +
                "Call self.set_looking_at() to set the return value"))

        self.speaker = self.agent.get_other_players()[0].name
        self.agent.perceive()

        # Combinable actions to be used in test cases
        self.possible_actions = {
            "destroy_speaker_look": {
                "action_type": "DESTROY",
                "reference_object": {
                    "location": {
                        "location_type": "SPEAKER_LOOK"
                    }
                },
            },
            "copy_speaker_look_to_agent_pos": {
                "action_type": "BUILD",
                "reference_object": {
                    "location": {
                        "location_type": "SPEAKER_LOOK"
                    }
                },
                "location": {
                    "location_type": "AGENT_POS"
                },
            },
            "build_small_sphere": {
                "action_type": "BUILD",
                "schematic": {
                    "has_name": "sphere",
                    "has_size": "small"
                },
            },
            "build_1x1x1_cube": {
                "action_type": "BUILD",
                "schematic": {
                    "has_name": "cube",
                    "has_size": "1 x 1 x 1"
                },
            },
            "move_speaker_pos": {
                "action_type": "MOVE",
                "location": {
                    "location_type": "SPEAKER_POS"
                },
            },
            "build_diamond": {
                "action_type": "BUILD",
                "schematic": {
                    "has_name": "diamond"
                }
            },
            "build_gold_cube": {
                "action_type": "BUILD",
                "schematic": {
                    "has_block_type": "gold",
                    "has_name": "cube"
                },
            },
            "fill_all_holes_speaker_look": {
                "action_type": "FILL",
                "location": {
                    "location_type": "SPEAKER_LOOK"
                },
                "repeat": {
                    "repeat_key": "ALL"
                },
            },
            "go_to_tree": {
                "action_type": "MOVE",
                "location": {
                    "location_type": "REFERENCE_OBJECT",
                    "reference_object": {
                        "has_name": "tree"
                    },
                },
            },
            "build_square_height_1": {
                "action_type": "BUILD",
                "schematic": {
                    "has_name": "square",
                    "has_height": "1"
                },
            },
            "stop": {
                "action_type": "STOP"
            },
            "fill_speaker_look": {
                "action_type": "FILL",
                "location": {
                    "location_type": "SPEAKER_LOOK"
                },
            },
            "fill_speaker_look_gold": {
                "action_type": "FILL",
                "has_block_type": "gold",
                "location": {
                    "location_type": "SPEAKER_LOOK"
                },
            },
        }
コード例 #28
0
def playSong(song):
    Player.getGame().mixer.music.load(song)
    Player.getGame().mixer.music.play()
    while pygame.mixer.music.get_busy():
        pygame.time.Clock().tick(10)
コード例 #29
0
ファイル: Game.py プロジェクト: thyarles/simple-muzero
 def to_play(self) -> Player:
     return Player()
コード例 #30
0
ファイル: levels.py プロジェクト: romaofrancas/Small
 def getPlayer(self):
     return Player(Vector(.5, .5), Vector(0, 0), 150000, 150, 0.02)
コード例 #31
0
ファイル: parsers.py プロジェクト: jbest84/GuildReport
 def startElement(self, name, attrs):
     if name == "guildKey":
         self.name = attrs.getValue("name")
         #self.battleGroup = attrs.getValue("battleGroup") #this was removed
         self.realm = attrs.getValue("realm")
         self.statsUrl = attrs.getValue("url")#2.3 changed this to 'url' instead
     elif name == "members":
         self.memberCount = attrs.getValue("memberCount")
     elif name == "character":
         p = Player()
         p.playerClass = attrs.getValue("class")
         p.playerClassId = attrs.getValue("classId")
         p.gender = attrs.getValue("gender")
         p.genderId = attrs.getValue("genderId")
         p.level = attrs.getValue("level")
         #increase level 70 count
         if p.level == "70":
             self.numSeventies +=1
         p.name = attrs.getValue("name")
         p.race = attrs.getValue("race")
         p.raceId = attrs.getValue("raceId")
         if self.faction == None:
             if p.raceId == "1" or p.raceId == "3" or p.raceId == "4" or p.raceId == "7" or p.raceId == "11":
                 self.faction = "A"
             else:
                 self.faction = "H"
         p.rank = attrs.getValue("rank")
         p.url = attrs.getValue("url")
         
         #assign guild leader
         if p.rank == "0":
             self.guildLeader = p
         #add player to list
         self.players.append(p)