Пример #1
0
    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
Пример #2
0
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
Пример #4
0
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
Пример #5
0
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
Пример #6
0
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
Пример #7
0
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}"
Пример #8
0
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()
Пример #9
0
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
Пример #10
0
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:
Пример #11
0
                                  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
Пример #12
0
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()
Пример #13
0
    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()
Пример #14
0
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,
Пример #15
0
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)
Пример #16
0
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:
Пример #17
0
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()
Пример #18
0
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()
Пример #19
0
# 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()