def __init__(self, *args, **kwargs): super(GameWindow, self).__init__(*args, **kwargs) self.main_batch = pyglet.graphics.Batch() self.player = load.create_player(self.main_batch) self.player_lives = load.player_lives(3, self.main_batch) self.aliens = load.aliens(self.main_batch) self.game_objects = [self.player] + self.aliens self.score_label = score.Score(text = "Score: 0", x = 10, y = 10, batch=self.main_batch) self.game_over_text = pyglet.text.Label( text = "Game Over!", font_size = 26, x = 100, y = self.height / 2) self.game_over_restart_text = pyglet.text.Label( text = "Press space to restart", font_size = 26, x = 100, y = (self.height / 2) - 50) self.start_text = pyglet.text.Label(text = "Press space to start", font_size = 26, x = 100, y = self.height / 2) self.is_paused = True self.is_game_over = False
def reset_level(num_lives=2): global player_ship, player_lives, game_objects, event_stack_size # Clear the event stack of any remaining handlers from other levels while event_stack_size > 0: game_window.pop_handlers() event_stack_size -= 1 for life in player_lives: life.delete() # Initialize the player sprite player_ship = player.Player(x=400, y=300, batch=main_batch) # Make three sprites to represent remaining lives player_lives = load.player_lives(num_lives, main_batch) # Make some asteroids so we have something to shoot at asteroids = load.asteroids(num_asteroids, player_ship.position, main_batch) # Store all objects that update each frame in a list game_objects = [player_ship] + asteroids # Add any specified event handlers to the event handler stack for obj in game_objects: for handler in obj.event_handlers: game_window.push_handlers(handler) event_stack_size += 1
def reset_level(num_lives=3): global player_ship, player_lives, game_objects, event_stack_size, level_reached # Clear the event stack of any remaining handlers from other levels while event_stack_size > 0: game_window.pop_handlers() event_stack_size -= 1 for life in player_lives: life.delete() player_ship = Player(x=resources.WIDTH / 2, y=resources.HEIGHT / 2, batch=main_batch) player_lives = load.player_lives(num_lives, batch=main_batch) asteroids = load.asteroids(num_asteroids, player_ship.position, batch=main_batch, speed=40 + level_reached * 5) level_label.text = f'Level {level_reached + 1}' game_objects = [player_ship] + asteroids for o in game_objects: for handler in o.event_handlers: # Player is an event handler so we need to push it onto the event stack game_window.push_handlers(handler) event_stack_size += 1
def reset_level(num_lives=2): global player_ship, player_lives, game_objects, event_stack_size # 清除事件栈 while event_stack_size > 0: game_window.pop_handlers() event_stack_size -= 1 for life in player_lives: life.delete() # 初始化飞船 player_ship = player.Player(x=400, y=300, batch=main_batch) # 初始化飞船生命 player_lives = load.player_lives(num_lives, batch=main_batch) # 初始化小行星 asteroids = load.asteroids(num_asteroids, player_ship.position, batch=main_batch) # 保存所有对象 game_objects = [player_ship] + asteroids # 添加所有对象的事件到游戏事件栈中 for obj in game_objects: for handler in obj.event_handlers: game_window.push_handlers(handler) event_stack_size += 1
def reset_level(num_lives=2): global player_ship, player_lives, game_objects, event_stack_size # 清空事件栈 while event_stack_size > 0: game_window.pop_handlers() event_stack_size -= 1 for life in player_lives: life.delete() # 创建Player的实例 player_ship = player.Player(x=400, y=300, batch=main_batch) # 加载小飞船图标 player_lives = load.player_lives(num_lives, main_batch) # 加载多个小行星 asteroids = load.asteroids(num_asteroids, player_ship.position, main_batch) # 加载多个陨石 meteorites = load.meteorites(num_meteorites, player_ship.position, main_batch) # 为了调用每一个物体的update函数,需要一个列表来存放这些物体。 game_objects = [player_ship] + asteroids + meteorites ''' 告诉pyglet 哪些实例是事件句柄(event handler) 用game_window.push_handlers()函数把它压入事件栈中 ''' for obj in game_objects: for handler in obj.event_handlers: game_window.push_handlers(handler) event_stack_size += 1
def reset_level(num_lives=parameters.num_lives): global player_ship, player_lives, game_objects, event_stack_size, level, num_asteroids # Clear the event stack of any remaining handlers from other levels while event_stack_size > 0: game_window.pop_handlers() event_stack_size -= 1 # Initialize the player sprite player_ship = player.Player(x=parameters.half_width, y=parameters.half_height, batch=main_batch) # Make a number of sprites to represent remaining lives player_lives = load.player_lives(num_lives, batch=main_batch) # Make some asteroids so we have something to shoot at asteroids = load.asteroids(num_asteroids, player_ship.position, batch=main_batch) # Store all objects that update each frame in a list game_objects = [player_ship] + asteroids # Add any specified event handlers to the event handler stack for obj in game_objects: for handler in obj.event_handlers: game_window.push_handlers(handler) event_stack_size += 1 level_label.text = f"Level: {level}"
def init(): global objects, score, lives, player_lives, level score = 0 level = 1 lives = max_lives asteroids = load.asteroids(n_asteroids, player_position, window.width, window.height, main_batch) player_lives = load.player_lives(lives, width, height, main_batch) objects = asteroids menu()
def refresh(keep_values): """ Refreshes the game when either the player has lost or the level is completed. This is illustrated by all asteroids having been destroyed. The *args are used to transfer characteristics of the last player_ship onto the new one, such as the lives remaining and the player's score. Inputs ====================================================================================== *args Boolean; qualities to move over to the new character. Currently only player_lives and player_score are supported. Outputs ====================================================================================== None """ global asteroids, game_objects, player_ship, lives game_objects.clear() # All characteristics of the player_ship player_ship.visible = True player_ship.dead = False player_ship.x = 1000 / 2 player_ship.velocity_x = 0 player_ship.y = 800 / 2 player_ship.velocity_y = 0 if keep_values: pass else: player_ship.lives = 3 player_ship.score = 0 player_ship.level = 1 # Redrawing the various indicators lives.clear() lives = load.player_lives(player_ship.lives, main_batch) score_label.text = 'Score: %d' % player_ship.score level_label.text = 'Level: %d' % player_ship.level # Respawning the asteroids asteroids = load.asteroids(max(player_ship.level, 3), player_ship.position, main_batch) # Re-establishin the new game_objects game_objects = [player_ship] + asteroids
from game import resources from game import load from game.player import Player game_window = pyglet.window.Window(800, 600, resizable=True) UI_batch = pyglet.graphics.Batch() main_batch = pyglet.graphics.Batch() score_label = pyglet.text.Label("Score: 0", x=10, y=575, batch=UI_batch) level_label = pyglet.text.Label("Learning Pyglet :D", x=400, y=575, anchor_x='center', batch=UI_batch) player_ship = Player( img=resources.player_image, x=400, y=300, batch=main_batch) player_lives = load.player_lives(3, UI_batch) asteroids = load.asteroids(3, player_ship.position, main_batch) game_objects = [player_ship] + asteroids def update(dt): to_add = [] for obj in game_objects: obj.update(dt) to_add.extend(obj.new_objects) obj.new_objects = [] if obj.dead:
y=5, batch=main_batch) level_label = pyglet.text.Label(text="Lucky Bird", bold=True, x=conf.windows_width / 2, y=conf.windows_height - 20, anchor_x='center', batch=main_batch) player_ship = player.Player(x=conf.windows_width / 2, y=conf.windows_height / 2, batch=main_batch) angrybirds = load.angrybirds(conf.bird_num, player_ship.position, main_batch) eggs = load.eggs(1, player_ship.position, main_batch) player_lives = load.player_lives(conf.player_life_num, main_batch) mywin.push_handlers(player_ship.key_handler) mywin.push_handlers(player_ship) @mywin.event def on_draw(): mywin.clear() main_batch.draw() def update(dt): global isdead, angrybirds, eggs, get_egg_num if isdead: return
window_width = 800 window_height = 600 main_batch = pyglet.graphics.Batch() player_ship = player.Player(x=400, y=300, batch=main_batch) game_window = pyglet.window.Window(window_width, window_height) score_label = pyglet.text.Label(text="Score: "+str(player_ship.current_score), x=10, y=575, batch=main_batch) level_label = pyglet.text.Label(text="Midma's Asteroid Fun", x=400, y=575, anchor_x='center', batch=main_batch) lives = load.player_lives(5, batch=main_batch) asteroids = load.asteroids(3, player_ship.position, main_batch) game_objects = [player_ship] + asteroids game_window.push_handlers(player_ship.key_handler) @game_window.event def on_draw(): game_window.clear() main_batch.draw() score_label.draw()
main_batch.draw() def update(dt): for obj in game_objects: obj.update(dt) main_batch = pyglet.graphics.Batch() score_lbl = pyglet.text.Label(text="Score: 0", x=10, y=game_window.height - 20, batch=main_batch) level_lbl = pyglet.text.Label(text="My Amazing Game", x=game_window.width // 2, y=game_window.height // 2, anchor_x="center", batch=main_batch) player = player.Player(x=400, y=300, batch=main_batch) game_window.push_handlers(player) asteroids = load.astroids(5, player.position, batch=main_batch) lives = load.player_lives(3, batch=main_batch) game_objects = [player] + asteroids if __name__ == "__main__": pyglet.clock.schedule_interval(update, 1 / 120.0) pyglet.app.run()
pyglet.resource.reindex() # Creating batch for all objects in the game main_batch = pyglet.graphics.Batch() # Creating the player's ship player_ship = player.Player(x=1000 / 2, y=800 / 2, batch=main_batch) # Defining the game_window and enabling support for keyboard inputs in the main.py file game_window = pyglet.window.Window(1000, 800) keys = pyglet.window.key.KeyStateHandler() game_window.push_handlers(player_ship.key_handler) game_window.push_handlers(keys) # Creating other objects within the game lives = load.player_lives(player_ship.lives, main_batch) score_label = pyglet.text.Label(text='Score: {}'.format(player_ship.score), x=10, y=800 - 25, batch=main_batch) level_label = pyglet.text.Label(text='Level: {}'.format(player_ship.level), x=1000 - 40, y=800 - 25, anchor_x='center', batch=main_batch) death_label = pyglet.text.Label( text= 'You have been killed. You have {} lives remaining. Press Enter to continue.' .format(player_ship.lives), x=game_window.width / 2, y=game_window.height / 2 - 200,
game_window = pyglet.window.Window(800, 600, "Asteroids") #Batch Draw main_batch = pyglet.graphics.Batch() #Set Labels score_label = pyglet.text.Label(text="Score: 0", x=10, y=460, batch=main_batch) player_ship = player.Player(x=400, y=300, batch=main_batch) game_window.push_handlers(player_ship.key_handler) game_window.push_handlers(player_ship.on_key_press) asteroids = load.asteroids(3, player_ship.position, batch=main_batch) lives = load.player_lives(player.lives, batch=main_batch) game_objects = [player_ship] + asteroids def update(dt): for i in range(len(game_objects)): to_add = [] for j in range(i + 1, len(game_objects)): obj_1 = game_objects[i] obj_2 = game_objects[j] #Collision if not obj_1.dead and not obj_2.dead: if obj_1.collides_with(obj_2): obj_1.handle_collision_with(obj_2)
main_batch = pyglet.graphics.Batch() score_label = pyglet.text.Label(text="Time: 0", bold=True, x=2, y=5, batch=main_batch) egg_num_label = pyglet.text.Label(text="Egg: 0", bold=True, x=100, y=5, batch=main_batch) level_label = pyglet.text.Label(text="Lucky Bird",bold=True, x=conf.windows_width/2, y=conf.windows_height-20, anchor_x='center', batch=main_batch) player_ship = player.Player(x=conf.windows_width/2, y=conf.windows_height/2, batch=main_batch) angrybirds = load.angrybirds(conf.bird_num, player_ship.position, main_batch) eggs = load.eggs(1, player_ship.position, main_batch) player_lives = load.player_lives(conf.player_life_num, main_batch) mywin.push_handlers(player_ship.key_handler) mywin.push_handlers(player_ship) @mywin.event def on_draw(): mywin.clear() main_batch.draw() def update(dt): global isdead, angrybirds, eggs, get_egg_num if isdead:
from game import load, player, resources # Set up a window game_window = pyglet.window.Window(800, 600) main_batch = pyglet.graphics.Batch() # Set up the two top labels score_label = pyglet.text.Label(text="Score: 0", x=10, y=575, batch=main_batch) level_label = pyglet.text.Label(text="Version 2: Basic Motion", x=400, y=575, anchor_x="center", batch=main_batch) # Initialize the player sprite player_ship = player.Player(x=400, y=300, batch=main_batch) # Make three sprites to represent remaining lives player_lives = load.player_lives(2, main_batch) # Make three asteroids so we have something to shoot at asteroids = load.asteroids(3, player_ship.position, main_batch) # Store all objects that update each frame in a list game_objects = [player_ship] + asteroids # Tell the main window that the player object responds to events game_window.push_handlers(player_ship) @game_window.event def on_draw(): game_window.clear() main_batch.draw()
main_batch = pyglet.graphics.Batch() # Set up the two top labels score_label = pyglet.text.Label(text="Score: 0", x=10, y=575, batch=main_batch) level_label = pyglet.text.Label(text="Version 3: Basic Collision", x=400, y=575, anchor_x='center', batch=main_batch) # Initialize the player sprite player_ship = player.Player(x=400, y=300, batch=main_batch) # Make three sprites to represent remaining lives player_lives = load.player_lives(2, main_batch) # Make three asteroids so we have something to shoot at asteroids = load.asteroids(3, player_ship.position, main_batch) # Store all objects that update each frame in a list game_objects = [player_ship] + asteroids # Tell the main window that the player object responds to events game_window.push_handlers(player_ship.key_handler) @game_window.event def on_draw(): game_window.clear() main_batch.draw()
# Label score and name of game score_label = pyglet.text.Label(text="Score: 0", x=10, y=575, batch=main_batch) level_label = pyglet.text.Label(text="Asteroid Game", x=400, y=575, anchor_x='center', batch=main_batch) # Instantiate player ship object, Load lives, and asteroids player_ship = player.Player(x=400, y=300, batch=main_batch) player_lives = load.player_lives(player_ship.lives, main_batch) asteroids = load.asteroids(3, player_ship.position, main_batch) # Create list of object in game for update() every frame game_objects = [player_ship] + asteroids #game_window.push_handlers(player_ship.key_handler) for obj in game_objects: for handler in obj.event_handlers: game_window.push_handlers(handler) @game_window.event def on_draw(): """ Clear window and draw all of batch """ game_window.clear() main_batch.draw()