Skip to content

Commit

Permalink
Merge pull request rodrigets#7 from murilexbarbosa/develop-asteroid-r…
Browse files Browse the repository at this point in the history
…estartgame

adicionado funcao para reiniciar o jogo quando der game over
  • Loading branch information
rodrigets authored Oct 5, 2017
2 parents 00ac0e1 + 64c69a9 commit 442e1d5
Showing 1 changed file with 120 additions and 108 deletions.
228 changes: 120 additions & 108 deletions asteroides.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,144 +4,156 @@
from sys import exit
from random import randrange

pygame.init()
pygame.font.init()
pygame.mixer.pre_init(44100, 32, 2, 4096)
def main():
pygame.init()
pygame.font.init()
pygame.mixer.pre_init(44100, 32, 2, 4096)

font_name = pygame.font.get_default_font()
game_font = pygame.font.SysFont(font_name, 72)

screen = pygame.display.set_mode((956, 560), 0, 32)

background_filename = 'bg_big.png'
background = pygame.image.load(background_filename).convert()

ship = {
'surface': pygame.image.load('ship.png').convert_alpha(),
'position': [randrange(956), randrange(560)],
'speed': {
'x': 0,
'y': 0
}
}

font_name = pygame.font.get_default_font()
game_font = pygame.font.SysFont(font_name, 72)
exploded_ship = {
'surface': pygame.image.load('ship_exploded.png').convert_alpha(),
'position': [],
'speed': {
'x': 0,
'y': 0
},
'rect': Rect(0, 0, 48, 48)
}

screen = pygame.display.set_mode((956, 560), 0, 32)
explosion_sound = pygame.mixer.Sound('boom.wav')
explosion_played = False
pygame.display.set_caption('Asteroides')

background_filename = 'bg_big.png'
background = pygame.image.load(background_filename).convert()
clock = pygame.time.Clock()

ship = {
'surface': pygame.image.load('ship.png').convert_alpha(),
'position': [randrange(956), randrange(560)],
'speed': {
'x': 0,
'y': 0
}
}

exploded_ship = {
'surface': pygame.image.load('ship_exploded.png').convert_alpha(),
'position': [],
'speed': {
'x': 0,
'y': 0
},
'rect': Rect(0, 0, 48, 48)
}

explosion_sound = pygame.mixer.Sound('boom.wav')
explosion_played = False
pygame.display.set_caption('Asteroides')

clock = pygame.time.Clock()


def create_asteroid():
return {
'surface': pygame.image.load('asteroid.png').convert_alpha(),
'position': [randrange(892), -64],
'speed': randrange(1, 11)
}

ticks_to_asteroid = 90
asteroids = []
def create_asteroid():
return {
'surface': pygame.image.load('asteroid.png').convert_alpha(),
'position': [randrange(892), -64],
'speed': randrange(1, 11)
}

ticks_to_asteroid = 90
asteroids = []

def move_asteroids():
for asteroid in asteroids:
asteroid['position'][1] += asteroid['speed']

def move_asteroids():
for asteroid in asteroids:
asteroid['position'][1] += asteroid['speed']

def remove_used_asteroids():
for asteroid in asteroids:
if asteroid['position'][1] > 560:
asteroids.remove(asteroid)

def remove_used_asteroids():
for asteroid in asteroids:
if asteroid['position'][1] > 560:
asteroids.remove(asteroid)

def get_rect(obj):
return Rect(obj['position'][0],
obj['position'][1],
obj['surface'].get_width(),
obj['surface'].get_height())

def get_rect(obj):
return Rect(obj['position'][0],
obj['position'][1],
obj['surface'].get_width(),
obj['surface'].get_height())

def ship_collided():
ship_rect = get_rect(ship)
for asteroid in asteroids:
if ship_rect.colliderect(get_rect(asteroid)):
return True
return False

collided = False
collision_animation_counter = 0
def ship_collided():
ship_rect = get_rect(ship)
for asteroid in asteroids:
if ship_rect.colliderect(get_rect(asteroid)):
return True
return False

while True:
collided = False
collision_animation_counter = 0

if not ticks_to_asteroid:
ticks_to_asteroid = 90
asteroids.append(create_asteroid())
else:
ticks_to_asteroid -= 1
while True:

ship['speed'] = {
'x': 0,
'y': 0
}
if not ticks_to_asteroid:
ticks_to_asteroid = 90
asteroids.append(create_asteroid())
else:
ticks_to_asteroid -= 1

for event in pygame.event.get():
if event.type == QUIT:
exit()
ship['speed'] = {
'x': 0,
'y': 0
}

pressed_keys = pygame.key.get_pressed()
for event in pygame.event.get():
if event.type == QUIT:
exit()

if pressed_keys[K_UP]:
ship['speed']['y'] = -5
elif pressed_keys[K_DOWN]:
ship['speed']['y'] = 5
pressed_keys = pygame.key.get_pressed()

if pressed_keys[K_LEFT]:
ship['speed']['x'] = -5
elif pressed_keys[K_RIGHT]:
ship['speed']['x'] = 5
if pressed_keys[K_UP]:
ship['speed']['y'] = -5
elif pressed_keys[K_DOWN]:
ship['speed']['y'] = 5

screen.blit(background, (0, 0))
if pressed_keys[K_LEFT]:
ship['speed']['x'] = -5
elif pressed_keys[K_RIGHT]:
ship['speed']['x'] = 5

move_asteroids()
screen.blit(background, (0, 0))

for asteroid in asteroids:
screen.blit(asteroid['surface'], asteroid['position'])
move_asteroids()

if not collided:
collided = ship_collided()
ship['position'][0] += ship['speed']['x']
ship['position'][1] += ship['speed']['y']
for asteroid in asteroids:
screen.blit(asteroid['surface'], asteroid['position'])

screen.blit(ship['surface'], ship['position'])
else:
if not explosion_played:
explosion_played = True
explosion_sound.play()
if not collided:
collided = ship_collided()
ship['position'][0] += ship['speed']['x']
ship['position'][1] += ship['speed']['y']

screen.blit(ship['surface'], ship['position'])
elif collision_animation_counter == 3:
text = game_font.render('GAME OVER', 1, (255, 0, 0))
screen.blit(text, (335, 250))
else:
exploded_ship['rect'].x = collision_animation_counter * 48
exploded_ship['position'] = ship['position']
screen.blit(exploded_ship['surface'], exploded_ship['position'],
exploded_ship['rect'])
collision_animation_counter += 1
if not explosion_played:
explosion_played = True
explosion_sound.play()
ship['position'][0] += ship['speed']['x']
ship['position'][1] += ship['speed']['y']

screen.blit(ship['surface'], ship['position'])
elif collision_animation_counter == 3:
text = game_font.render('GAME OVER', 1, (255, 0, 0))
screen.blit(text, (335, 250))

playagain = game_font.render('Press R to Play Again', 13, (255, 0, 0))
screen.blit(playagain, (220, 350))

pressed_keys = pygame.key.get_pressed()

if pressed_keys[K_r]:
main()

else:
exploded_ship['rect'].x = collision_animation_counter * 48
exploded_ship['position'] = ship['position']
screen.blit(exploded_ship['surface'], exploded_ship['position'],
exploded_ship['rect'])
collision_animation_counter += 1

pygame.display.update()
time_passed = clock.tick(30)

pygame.display.update()
time_passed = clock.tick(30)
remove_used_asteroids()

remove_used_asteroids()
main()

0 comments on commit 442e1d5

Please sign in to comment.