コード例 #1
0
ファイル: testing.py プロジェクト: mdheller/costar_plan
def EvaluateDefaultActor(world, actor, niter=100):

    # iterate: return 1 if back at spot, else return -1 at end
    # return -1 if it ever leaves its lane or hits another actor too
    for i in xrange(niter):
        # prev_f = actor.getLocalWorld()
        world.tick()
        (code, res) = Evaluate(world, actor, i)
        # print
        # "x=%d,y=%d,location=%d,action=%d"%(actor.state.x,actor.state.y,actor.state.lookup(world),actor.last_action.idx)
        if not code == 0:
            return (code, res)

    return (0, "did not finish loop")
コード例 #2
0
ファイル: testing.py プロジェクト: mdheller/costar_plan
def EvaluateAndGetFeatures(world,
                           actor,
                           num_features,
                           num_actions,
                           get_features,
                           niter=100,
                           default_r=0):

    prev_fs = np.zeros((niter, num_features))
    next_fs = np.zeros((niter, num_features))
    actions = np.zeros((niter, num_actions))
    rs = np.zeros((niter, 1))
    terminal = np.zeros((niter, 1), dtype=bool)

    (code, res) = (-1, "did not finish loop")

    # iterate: return 1 if back at spot, else return -1 at end
    # return -1 if it ever leaves its lane or hits another actor too
    for i in xrange(niter):
        prev_f = get_features(world, actor)
        world.tick()
        next_f = get_features(world, actor)
        (code, res) = Evaluate(world, actor, i)
        # print
        # "x=%d,y=%d,location=%d,action=%d"%(actor.state.x,actor.state.y,actor.state.lookup(world),actor.last_action.idx)

        prev_fs[i] = prev_f
        next_fs[i] = next_f
        actions[i, actor.last_action.idx] = 1.

        rs[i] = default_r

        if not code == 0:
            rs[i] = code
            terminal[i] = True
            break

    if code == 0:
        code = -1
    return (code, res,
            ExperienceInput(i + 1, prev_fs, rs, actions, next_fs, terminal))
コード例 #3
0
ファイル: game.py プロジェクト: goosemo/monkey
def main(screen):
    screensize = (screen.get_width(), screen.get_height())
    
    #hud = data.load_image("headerCropped.png")
    hud = data.load_image("header_colored.png")
    hud_shift = (screensize[0]  - hud.get_width())/2
    hud_center = hud_shift + (hud.get_width()/2)

    texture_manager = texture.TextureManager()
    texture_manager.register_texture('MUD', 'test.png')
    texture_manager.register_texture('monkey', 'monkey_resized.png')

    texture_manager.register_texture('vertPole', 'VerticalPoleSmall.png')
    texture_manager.register_texture('chain', 'Chain01.png')
    texture_manager.register_texture('balloon', 'Balloon.png')
    texture_manager.register_texture('crate1', 'Crate001.png')
    texture_manager.register_texture('bananacrate', 'BananaCrate.png')

    texture_manager.register_texture('floorBox', 'FloorBox1.png')
    texture_manager.register_texture('floorBoxRight', 'FloorBoxRight.png')
    texture_manager.register_texture('floorBoxLeft', 'FloorBoxLeft.png')

    texture_manager.register_texture('banana', 'Banana.png')
    texture_manager.register_texture('bananas', 'BananaS.png')
    texture_manager.register_texture('topPole', 'PoleToppers.png')
    texture_manager.register_texture('bottomPole', 'PoleBottoms.png')

    texture_manager.register_texture('MONKEY_L0', 'MonkeyWalk001.png')
    texture_manager.register_texture('MONKEY_L1', 'MonkeyWalk002.png')
    texture_manager.register_texture('MONKEY_L2', 'MonkeyWalk003.png')
    texture_manager.register_texture('MONKEY_L3', 'MonkeyWalk004.png')

    texture_manager.flip_texture('MONKEY_L0', 'MONKEY_R0')
    texture_manager.flip_texture('MONKEY_L1', 'MONKEY_R1')
    texture_manager.flip_texture('MONKEY_L2', 'MONKEY_R2')
    texture_manager.flip_texture('MONKEY_L3', 'MONKEY_R3')

    pymunk.init_pymunk()

    player = game_entities.Player()
    world = WorldInstance(player, texture_manager, level_num = 1)
    view = View(screensize)

    font = pygame.font.Font(None, 16)
    timerFont = pygame.font.Font(data.filepath("pointy.ttf"), 24)
    levelFont = pygame.font.Font(data.filepath("JANIS___.TTF"),50)

    clock = pygame.time.Clock()
    time = pygame.time
    MaxTime = 250
    time_elapsed = 0
    text_timer = timerFont.render("%4i" % world._level_max_time, 4, (0, 0, 0))

    unused_time = 0
    step_size = 0.005

    keydown_map = {K_w: False, K_LEFT: False, K_RIGHT: False}

    #preprime event timers
    pygame.time.set_timer(USEREVENT, 1000)

    #pygame event loop
    is_running = True
    while is_running:
        screen.fill((0x28,0x08b,0xd7))
        #perform physics in uniform steps
        space = world.get_space()
        dt = clock.tick()/1000.0
        unused_time += dt
        while(unused_time > step_size):
            space.step(step_size)
            unused_time -= step_size

        #handle events
        for event in pygame.event.get():
            if event.type == QUIT:
                is_running = False

            elif event.type == KEYDOWN:
                if event.key in keydown_map:
                    keydown_map[event.key] = True

                if event.key == K_ESCAPE:
                    is_running = False
                elif event.key == K_SPACE or event.key == K_UP:
                    player.jump()
                elif event.key == K_z:
                    player.begin_grabbing()
                elif event.key == K_c:
                    player.begin_tagging()
                elif event.key == K_x:
                    player.drop()
                elif event.key == K_v:
                    player.begin_untagging()
                elif event.key == K_r:
                    world.restart_level()
                elif event.key == K_LEFTBRACKET:
                    world.previous_level()
                    world.display_level_name(
                            screen, font=levelFont, pos = (70+hud_shift, 165))

                elif event.key == K_RIGHTBRACKET:
                    world.next_level()
                    world.display_level_name(
                            screen, font=levelFont, pos = (70+hud_shift, 165))


            elif event.type == KEYUP:
                if event.key in keydown_map:
                    keydown_map[event.key] = False
                elif event.key == K_z:
                    player.end_grabbing()
                elif event.key == K_c:
                    player.end_tagging()
                elif event.key == K_v:
                    player.end_untagging()

            elif event.type == USEREVENT:
                world._time_elapsed += 1
                pygame.time.set_timer(USEREVENT, 1000)
                time_left = world.time_left()

                if time_left == 0:
                        world.restart_level()    
#                    world.display_level_name(screen, font=levelFont, pos = (70+hud_shift, 165))

                #render timer
                if time_left > 50:
                    color = (0, 0, 0)
                elif time_left > 10:
                    color = (155,0,0)
                else:
                    color = (255,0,0)
        
                text_timer = timerFont.render("%4i" % time_left, 4, color)


        #perframe actions
        if keydown_map[K_LEFT]:
            player.left()
        elif keydown_map[K_RIGHT]:
            player.right()
        else:
            player.stop()

        #let entites know how much time has passed
        world.tick(dt)

        #draw entities
        view.set_position(player.get_position())

        for entity in world.get_entities():
            if entity.is_textured():
                tex = texture_manager.get_texture_map(entity, entity.get_texture_name())
                image = pygame.transform.rotate(tex.image, entity.get_body().angle * 180/math.pi)
                screen.blit(image, view.to_screen(entity.get_texture_origin()))

#            pygame.draw.polygon(screen, (255,255,255), map(view.to_screen, entity.get_vertices()), 1)

        #render hud, fps, & timer
        screen.blit(hud,(hud_shift,0))
        text_surf = font.render("fps: %i" % clock.get_fps(), 1, (25,0,0))
        screen.blit(text_surf, (5, 5))
        #screen.blit(text_timer, (370 + hud_shift, 65))
        screen.blit(text_timer, (hud_center - 30 , hud.get_height()- 34))

        world.display_level_progress(screen, font=levelFont, pos = (700+hud_shift, 55))

        if world._time_elapsed < 5:
            world.display_level_name(screen, font=levelFont, pos = (70+hud_shift, 165))        


        pygame.display.flip()
コード例 #4
0
ファイル: towerwars.py プロジェクト: kd5bjo/tower-wars
    def run_events(self):
        if (frameno - 1) in self.cache:
            del self.cache[frameno - 1]
        if self.state in ('Connected', 'Synchronized'):
            remote_events = self.socket.inbuf.splitlines(True)
            if remote_events and remote_events[-1][-1] not in '\r\n':
                self.socket.inbuf = remote_events[-1]
                remote_events = remote_events[:-1]
            else:
                self.socket.inbuf = ''
            for ev in remote_events:
                timestamp, args = ev.split(None, 1)
                args = args.split()
                timestamp = int(timestamp)
                log.msg(5, 'RemoteEvent', args[0], remote=timestamp, args=args[1:])
                if self.state == 'Synchronized':
                    if args[0] not in ('ping', 'synchronize'):
                        self.add_remote_event(args, timestamp)
                elif self.state == 'Connected':
                    assert args[0] in ('ping', 'synchronize')
                    if args[0] == 'ping':
                        self.remote_frame = timestamp
                        if int(args[1]) != 0:
                            self.rtts.append(frameno - int(args[1]))
                            log.msg(5, 'Clock', 'AddedRTT', start=int(args[1]), value=self.rtts[-1], remote=timestamp)
                            if options.server and len(self.rtts) >= 30:
                                self.state = 'Synchronized'
                                rtt = sum(self.rtts)/(2*len(self.rtts))
                                self.remote_frame_offset = frameno - timestamp + rtt
                                log.msg(3, 'Clock', 'Synchronized', rtt=rtt, frame_offset=self.remote_frame_offset)
                                self.socket.outbuf += '%d synchronize %d\n' % \
                                    (frameno, frameno-self.remote_frame_offset)
                                self.add_event('randomize', random.getrandbits(32))
                                self.add_event('reset')
                    if args[0] == 'synchronize':
                        rtt = sum(self.rtts)/(2*len(self.rtts))
                        self.state = 'Synchronized'
                        self.remote_frame_offset = int(args[1]) - timestamp
                        log.msg(3, 'Clock', 'Synchronized', rtt=rtt, frame_offset=self.remote_frame_offset)
            if self.state == 'Connected':
                self.socket.outbuf += '%d ping %d\n' % (frameno, self.remote_frame)
        for ev in pygame.event.get():
            log.msg(5, 'PygameEvent', pygame.event.event_name(ev.type), **ev.dict)
            func_name = 'H_PYGAME_%s' % pygame.event.event_name(ev.type)
            if hasattr(world, func_name):
                getattr(world, func_name)(**ev.dict)
    
        precedence = ['remote', 'local']
        if options.server: precedence = ['local', 'remote']

        world.frameno = frameno

        for p in precedence:
            for ev in (e for e in self.cache.get(frameno, []) if e[0] == p):
                log.msg(4, 'Event', ev[1], args=ev[2:])
                func_name = 'H_EVENT_%s' % ev[1]
                if hasattr(world, func_name):
                    getattr(world, func_name)(*ev[2:])
                else:
                    log.msg(2, 'Event', 'UndefinedHandler', func=func_name, args=ev[2:])
        world.tick()