def __init__(self, *args, **kwargs): super(Window, self).__init__(*args, **kwargs) self.score = 0 self.difficulty = self.score + 50 self.lives = 3 self.time = 0.5 self.ships = pyglet.graphics.Batch() self.rocks = pyglet.graphics.Batch() self.missiles = pyglet.graphics.Batch() self.started = False self.rock_trigger = 0 # Images self.background = pyglet.image.load('static/images/nebula_blue.s2014.png') self.rock_img = pyglet.image.load('static/images/asteroid_blue.png') utils.center_image_anchor(self.rock_img) ship_sequence = pyglet.image.load('static/images/double_ship.png') self.ship_imgs = pyglet.image.ImageGrid(ship_sequence, 1, 2) utils.center_image_grid_anchors(self.ship_imgs) self.splash_img = pyglet.image.load('static/images/splash.png') # Sounds self.thruster_snd = pyglet.media.load('static/sounds/rocket.ogg', streaming=False) self.explosion_snd = pyglet.media.load('static/sounds/explosion.ogg', streaming=False) self.background_music = pyglet.media.load('static/sounds/space1.mp3', streaming=False) self.background_music.play() # Sprite Groups self.rock_group = set() self.missile_group = set() # Spites self.ship = PlayerSprite(self.ship_imgs, self.thruster_snd, 400, 250, 0, 0, 270, 35, self.ships, self.missiles) self.splash = Sprite(self.splash_img, 200, 125) # Screen Text self.text_lives = pyglet.text.Label('Lives=' + str(self.lives), font_name='Times New Roman', font_size=36, x=10, y=10) self.text_score = pyglet.text.Label('Score=' + str(self.score), font_name='Times New Roman', font_size=36, x=10, y=60) # Keymaps self.key_downs = {key.UP:self.accel, key.LEFT:self.left, key.RIGHT:self.right, key.SPACE:self.fire, key.ESCAPE:pyglet.app.exit} self.key_ups = {key.UP:self.decel, key.LEFT:self.right, key.RIGHT:self.left} pyglet.clock.schedule_interval(self.update, 1/60.0) # update at 60Hz
def __init__(self, name, game): self.name = name self.pos = [50, 50] self.do_blit = False self.game = game self.surf = game.SCREEN self.lastMove = 99999999999 self.velo_def = [0, 0] self.velo_x = 0 self.velo_y = 0 self.sprite = PlayerSprite(self) self.moving = [False, False, False, False]
class Player(object): def __init__(self, name, game): self.name = name self.pos = [50, 50] self.do_blit = False self.game = game self.surf = game.SCREEN self.lastMove = 99999999999 self.velo_def = [0, 0] self.velo_x = 0 self.velo_y = 0 self.sprite = PlayerSprite(self) self.moving = [False, False, False, False] def tick(self): if self.do_blit: self.game.reDraw = True self.sprite.display(self.surf.screen) #self.surface.screen.blit(self.image, self.pos) self.do_blit = False # print self.lastMove - time.time() if True in self.moving and abs(self.lastMove - time.time()) >= .08: self.lastMove = time.time() if self.moving[0]: self.move(x=-1) if self.moving[1]: self.move(x=1) #down if self.moving[2]: self.move(y=-1) #left if self.moving[3]: self.move(y=1) #right def move(self, x=0, y=0): self.pos[1] += x * 10 self.pos[0] += y * 10 self.do_blit = True if y < 0 and self.sprite.dir == 1: self.sprite.flip() elif y > 0 and self.sprite.dir == -1: self.sprite.flip()
class Player(object): def __init__(self, name, game): self.name = name self.pos = [50, 50] self.do_blit = False self.game = game self.surf = game.SCREEN self.lastMove = 99999999999 self.velo_def = [0, 0] self.velo_x = 0 self.velo_y = 0 self.sprite = PlayerSprite(self) self.moving = [False, False, False, False] def tick(self): if self.do_blit: self.game.reDraw = True self.sprite.display(self.surf.screen) #self.surface.screen.blit(self.image, self.pos) self.do_blit = False # print self.lastMove - time.time() if True in self.moving and abs(self.lastMove - time.time()) >= .08: self.lastMove = time.time() if self.moving[0]: self.move(x=-1) if self.moving[1]: self.move(x=1)#down if self.moving[2]: self.move(y=-1)#left if self.moving[3]: self.move(y=1)#right def move(self, x=0, y=0): self.pos[1]+=x*10 self.pos[0]+=y*10 self.do_blit = True if y < 0 and self.sprite.dir == 1: self.sprite.flip() elif y > 0 and self.sprite.dir == -1: self.sprite.flip()
player.y) sprites.add(bullet) bulletsEnemy.add(bullet) def new_enemy(): enemy = Enemy() sprites.add(enemy) enemies.add(enemy) ss = SpriteSheet('Lightning.png') player_imgs = [] player_imgs.append(ss.get_image(0, 0, 30, 30)) player_imgs.append(ss.get_image(32, 0, 30, 30)) player_imgs.append(ss.get_image(64, 0, 30, 30)) player_imgs.append(ss.get_image(96, 0, 30, 30)) ss1 = SpriteSheet('UFO.png') enemy_imgs = [] enemy_imgs.append(ss1.get_image(0, 0, 30, 30)) enemy_imgs.append(ss1.get_image(32, 0, 30, 30)) enemy_imgs.append(ss1.get_image(64, 0, 30, 30)) enemy_imgs.append(ss1.get_image(96, 0, 30, 30)) player = Player() for i in range(4): new_enemy() PlayerSprite.add(player) sprites.add(player)
StaticSprite(**child.settings) for child in LEVELS['l1'].children['static'] ] #Create Player character PC = PlayerSprite( 34, 64, i=controls.WIDTH / 2 - 20, j=controls.HEIGHT / 2 - 35, states={ "default": ["assets/images/Iandalara_base0{}.bmp".format(4)] * 3 + ["assets/images/Iandalara_base0{}.bmp".format(i) for i in range(3)], "default_up": ["assets/images/Iandalara_base_up0{}.bmp".format(4)] * 3 + ["assets/images/Iandalara_base_up0{}.bmp".format(i) for i in range(3)], "default_right": ["assets/images/Iandalara_right00.bmp"], "default_left": ["assets/images/Iandalara_left00.bmp"], "up": ["assets/images/Iandalara_up0{}.bmp".format(i) for i in range(4)], "down": ["assets/images/Iandalara_down0{}.bmp".format(i) for i in range(4)], "left": ["assets/images/Iandalara_left0{}.bmp".format(i) for i in range(4)], "right": ["assets/images/Iandalara_right0{}.bmp".format(i) for i in range(4)], }, ) LEVEL_SPRITES.append(PC) PC_PHYSICAL_GROUP.add(PC) # pylint: disable=expression-not-assigned
def game_reset(self): self.started = False self.rock_group = set() self.ship = PlayerSprite(self.ship_imgs, self.thruster_snd, 400, 250, 0, 0, 270, 35, self.ships, self.missiles) self.lives = 3 self.score = 0
class Window(pyglet.window.Window): def __init__(self, *args, **kwargs): super(Window, self).__init__(*args, **kwargs) self.score = 0 self.difficulty = self.score + 50 self.lives = 3 self.time = 0.5 self.ships = pyglet.graphics.Batch() self.rocks = pyglet.graphics.Batch() self.missiles = pyglet.graphics.Batch() self.started = False self.rock_trigger = 0 # Images self.background = pyglet.image.load('static/images/nebula_blue.s2014.png') self.rock_img = pyglet.image.load('static/images/asteroid_blue.png') utils.center_image_anchor(self.rock_img) ship_sequence = pyglet.image.load('static/images/double_ship.png') self.ship_imgs = pyglet.image.ImageGrid(ship_sequence, 1, 2) utils.center_image_grid_anchors(self.ship_imgs) self.splash_img = pyglet.image.load('static/images/splash.png') # Sounds self.thruster_snd = pyglet.media.load('static/sounds/rocket.ogg', streaming=False) self.explosion_snd = pyglet.media.load('static/sounds/explosion.ogg', streaming=False) self.background_music = pyglet.media.load('static/sounds/space1.mp3', streaming=False) self.background_music.play() # Sprite Groups self.rock_group = set() self.missile_group = set() # Spites self.ship = PlayerSprite(self.ship_imgs, self.thruster_snd, 400, 250, 0, 0, 270, 35, self.ships, self.missiles) self.splash = Sprite(self.splash_img, 200, 125) # Screen Text self.text_lives = pyglet.text.Label('Lives=' + str(self.lives), font_name='Times New Roman', font_size=36, x=10, y=10) self.text_score = pyglet.text.Label('Score=' + str(self.score), font_name='Times New Roman', font_size=36, x=10, y=60) # Keymaps self.key_downs = {key.UP:self.accel, key.LEFT:self.left, key.RIGHT:self.right, key.SPACE:self.fire, key.ESCAPE:pyglet.app.exit} self.key_ups = {key.UP:self.decel, key.LEFT:self.right, key.RIGHT:self.left} pyglet.clock.schedule_interval(self.update, 1/60.0) # update at 60Hz def game_reset(self): self.started = False self.rock_group = set() self.ship = PlayerSprite(self.ship_imgs, self.thruster_snd, 400, 250, 0, 0, 270, 35, self.ships, self.missiles) self.lives = 3 self.score = 0 # intro screen # self.splash.draw() def display_score(self): self.text_lives = pyglet.text.Label('Lives=' + str(self.lives), font_name='Times New Roman', font_size=36, x=10, y=10) self.text_score = pyglet.text.Label('Score=' + str(self.score), font_name='Times New Roman', font_size=36, x=10, y=60) def start_game(self): #Function to start game on initial mouse click self.splash.delete() self.started = True def accel(self): self.ship.thrusters = True def decel(self): self.ship.thrusters = False def left(self): self.ship.angle_vel -= 5 def right(self): self.ship.angle_vel += 5 def fire(self): self.ship.shoot(self.missile_group) def on_mouse_press(self, x, y, button, modifiers): self.start_game() def on_key_press(self, symbol, modifiers): for key in self.key_downs: if key == symbol: self.key_downs[symbol]() def on_key_release(self, symbol, modifiers): for key in self.key_ups: if key == symbol: self.key_ups[symbol]() def put_rock(self): rock_position = utils.random_position(WIDTH, HEIGHT) rock = MovingSprite (self.rock_img, rock_position[0], rock_position[1], sound=self.explosion_snd, diff=self.difficulty, radius=40, batch=self.rocks) self.rock_group.add(rock) def trigger_put_rock(self): self.rock_trigger += 1 if self.rock_trigger > 60 and len(self.rock_group) < 10: self.put_rock() self.rock_trigger = 0 # TODO Implement Sheilds def on_draw(self): self.clear() self.background.blit(0, 0) self.ships.draw() self.rocks.draw() self.missiles.draw() self.text_lives.draw() self.text_score.draw() if not self.started: self.splash = Sprite(self.splash_img, 200, 125) self.splash.draw() def update(self, dt): if self.started: self.trigger_put_rock() for rock in self.rock_group: rock.update(WIDTH, HEIGHT) self.ship.update(WIDTH, HEIGHT) local_missiles = set(self.missile_group) for missile in local_missiles: if not missile.update(WIDTH, HEIGHT): self.missile_group.remove(missile) missile.delete() if group_collide(self.rock_group, self.ship): self.lives -= 1 self.explosion_snd.play() if group_group_collide(self.missile_group, self.rock_group): self.score += 10 self.difficulty += self.score + 50 self.explosion_snd.play() self.display_score() if self.lives < 0: self.game_reset()