显示生命值

This commit is contained in:
Your Name 2021-06-16 11:40:53 +08:00
commit 7a54265a5f
4 changed files with 29 additions and 12 deletions

View File

@ -25,12 +25,12 @@ def run_game():
while True:
gf.check_events(ai_settings, screen, stats, sb, play_button, ship,
aliens, bullets)
if stats.game_active:
ship.update()
gf.update_bullets(ai_settings, screen, stats, sb, ship, aliens,
bullets)
gf.update_aliens(ai_settings, stats, screen, ship, aliens, bullets)
bullets)
gf.update_aliens(ai_settings, screen, stats, sb, ship, aliens,
bullets)
gf.update_screen(ai_settings, screen, stats, sb, ship, aliens,
bullets, play_button)

View File

@ -112,14 +112,12 @@ def get_number_rows(ai_settings, ship_height, alien_height):
(3 * alien_height) - ship_height)
number_rows = int(available_space_y / (2 * alien_height))
return number_rows
def update_aliens(ai_settings, stats, screen, ship, aliens, bullets):
def update_aliens(ai_settings, screen, stats, sb, ship, aliens, bullets):
check_fleet_edges(ai_settings, aliens)
aliens.update()
if pygame.sprite.spritecollideany(ship, aliens):
print("Ship hit!!!")
if pygame.sprite.spritecollideany(ship, aliens):
ship_hit(ai_settings, stats, screen, ship, aliens, bullets)
check_aliens_bottom(ai_settings, stats, screen, ship, aliens, bullets)
ship_hit(ai_settings, screen, stats, sb, ship, aliens, bullets)
check_aliens_bottom(ai_settings, screen, stats, sb, ship, aliens, bullets)
def check_fleet_edges(ai_settings, aliens):
for alien in aliens.sprites():
@ -130,9 +128,12 @@ def change_fleet_direction(ai_settings, aliens):
for alien in aliens.sprites():
alien.rect.y += ai_settings.fleet_drop_speed
ai_settings.fleet_direction *= -1
def ship_hit(ai_settings, stats, screen, ship, aliens, bullets):
def ship_hit(ai_settings, screen, stats, sb, ship, aliens, bullets):
if stats.ships_left > 0:
stats.ships_left -= 1
sb.prep_ships()
aliens.empty()
bullets.empty()
create_fleet(ai_settings, screen, ship, aliens)
@ -142,11 +143,12 @@ def ship_hit(ai_settings, stats, screen, ship, aliens, bullets):
stats.game_active = False
pygame.mouse.set_visible(True)
def check_aliens_bottom(ai_settings, stats, screen, ship, aliens, bullets):
def check_aliens_bottom(ai_settings, screen, stats, sb, ship, aliens,
bullets):
screen_rect = screen.get_rect()
for alien in aliens.sprites():
if alien.rect.bottom >= screen_rect.bottom:
ship_hit(ai_settings, stats, screen, ship, aliens, bullets)
ship_hit(ai_settings, screen, stats, sb, ship, aliens, bullets)
break
def check_play_button(ai_settings, screen, stats, sb, play_button, ship,
@ -160,6 +162,7 @@ aliens, bullets, mouse_x, mouse_y):
sb.prep_score()
sb.prep_high_score()
sb.prep_level()
sb.prep_ships()
aliens.empty()
bullets.empty()
create_fleet(ai_settings, screen, ship, aliens)

View File

@ -1,4 +1,6 @@
import pygame.font
from pygame.sprite import Group
from ship import Ship
class Scoreboard():
def __init__(self, ai_settings, screen, stats):
@ -11,6 +13,7 @@ class Scoreboard():
self.prep_score()
self.prep_high_score()
self.prep_level()
self.prep_ships()
def prep_score(self):
rounded_score = int(round(self.stats.score, -1))
@ -36,9 +39,18 @@ self.ai_settings.bg_color)
self.screen.blit(self.score_image, self.score_rect)
self.screen.blit(self.high_score_image, self.high_score_rect)
self.screen.blit(self.level_image, self.level_rect)
self.ships.draw(self.screen)
def prep_level(self):
self.level_image = self.font.render(str(self.stats.level), True,self.text_color, self.ai_settings.bg_color)
self.level_rect = self.level_image.get_rect()
self.level_rect.right = self.score_rect.right
self.level_rect.top = self.score_rect.bottom + 10
def prep_ships(self):
self.ships = Group()
for ship_number in range(self.stats.ships_left):
ship = Ship(self.ai_settings,self.screen)
ship.rect.x = 10 + ship_number * ship.rect.width
ship.rect.y = 10
self.ships.add(ship)

View File

@ -1,7 +1,9 @@
import pygame
from settings import Settings
class Ship():
from pygame.sprite import Sprite
class Ship(Sprite):
def __init__(self, ai_settings, screen):
super(Ship, self).__init__()
self.screen = screen
self.ai_settings = ai_settings
self.image = pygame.image.load('20210614231753.bmp')