Example #1
0
 def __init__(self):
     self._background = City()
     width, height, tiles, objects = mapreader(MAP_FILE)
     self._background.build(width, height, tiles)
     self._start = Vector(*objects['start'])
     self._player = self._background.place_pawn(self._start.x, self._start.y,
                                                PLAYER_IMAGE)
     goal = Vector(*objects['goal'])
     self._goal = self._background.place_pawn(goal.x, goal.y,
                                              FLOORTARGET_IMAGE)
     self._goal.opacity = FLOORTARGET_OPACITY
     self._ai = []
     for x,y in objects['other']:
         pos = Vector(x,y)
         ai = create_normal_ai(self._background, pos, NORMAL_IMAGE,
                              FAN_IMAGE, self._player)
         self._ai.append(ai)
     self._stats = Stats()
     self._movement = Vector(0,0)
     self._cooldown = 0
     self._reset_level = False
Example #2
0
class MainState(EngineState):
    def __init__(self):
        self._background = City()
        width, height, tiles, objects = mapreader(MAP_FILE)
        self._background.build(width, height, tiles)
        self._start = Vector(*objects['start'])
        self._player = self._background.place_pawn(self._start.x, self._start.y,
                                                   PLAYER_IMAGE)
        goal = Vector(*objects['goal'])
        self._goal = self._background.place_pawn(goal.x, goal.y,
                                                 FLOORTARGET_IMAGE)
        self._goal.opacity = FLOORTARGET_OPACITY
        self._ai = []
        for x,y in objects['other']:
            pos = Vector(x,y)
            ai = create_normal_ai(self._background, pos, NORMAL_IMAGE,
                                 FAN_IMAGE, self._player)
            self._ai.append(ai)
        self._stats = Stats()
        self._movement = Vector(0,0)
        self._cooldown = 0
        self._reset_level = False

    def render(self, engine):
        engine.window.clear()
        glPushMatrix()
        self._background.render()
        glPopMatrix()

    def update(self, engine, dt):
        if self._cooldown <= 0 and self._movement.length2:
            event = self._background.try_move(self._player, self._movement)
            if self._player.position == self._goal.position:
                print self._stats
                self._reset_level = True
                return
            if event.is_obstacle_hit():
                return
            for ai in self._ai:
                ai.update()

            self._stats.increase_move()
            self._cooldown = MOVE_COOLDOWN
        elif self._cooldown <= 0 and self._reset_level:
            self.reset_level()
            self._cooldown = MOVE_COOLDOWN
        elif self._cooldown > 0:
            self._cooldown -= dt

    def handle_input(self, engine, keystate):
        self._movement = Vector(0,0)

        if keystate[key.UP]:
            self._movement.y += 1
        elif keystate[key.DOWN]:
            self._movement.y -= 1
        elif keystate[key.RIGHT]:
            self._movement.x += 1
        elif keystate[key.LEFT]:
            self._movement.x -= 1

    def reset_level(self):
        for ai in self._ai:
            ai.reset_level()
        self._background.move(self._player, self._start)
        self._stats.reset()
        self._reset_level = False