模块(火箭游戏):
def run_game():
pygame.init()
ai_settings = Shezhi()
#游戏窗口设置
screen = pygame.display.set_mode((ai_settings.screen_width, ai_settings.screen_height))
#游戏名称设置
pygame.display.set_caption('火箭')
ship = Ship(screen)
#创建一艘飞船、一个子弹编组和一个外星人编组
#设置一个编组用来储存子弹
bullets = Group()
#创建一个外星人编组
aliens = Group()
#创建一个外星人
alien = Alien(ai_settings, screen)
#游戏主循环程序
while True:
Xy.events(ship, bullets, ai_settings, screen)
#飞船移动条件和速度
ship.update(ai_settings)
#创建外星人群
ship.create_fleet(ai_settings, aliens)
bullets.update()
#绘制屏幕和让最近绘制的屏幕可见
ship.update_screen(ai_settings, alien, bullets, ship)
run_game()
模块(矩形坐标位置与图片导入绘制):
coding=utf-8
ai_settings = Shezhi()
self.up = False
self.down = False
self.left = False
self.right = False
self.x = float(self.rect.centerx)
self.y = float(self.rect.centery)
def blitme(self):
self.screen.blit(self.image, self.rect)
def update(self, ai_settings):
if self.up and self.rect.top > 0:
self.y -= ai_settings.speed
if self.down and self.rect.bottom < self.screen_rect.bottom:
self.y += ai_settings.speed
if self.left and self.rect.left > 0:
self.x -= ai_settings.speed
if self.right and self.rect.right < self.screen_rect.right:
self.x += ai_settings.speed
self.rect.centerx = self.x
self.rect.centery = self.y
def update_screen(self, ai_settings, alien, bullets, ship):
self.screen.fill(ai_settings.color)
for bullet in bullets.sprites():
bullet.draw_zd()
ship.blitme()
alien.blitme()
aliens.draw(screen)
pygame.display.flip()
def get_number_aliens_x(ai_settings, alien_width):
"""计算每行可以容纳多少个外星人"""
available_space_x = ai_settings.screen_width - 2 * alien_width
number_alien_x = int(available_space_x / (2 * alien_width))
return number_alien_x
def create_fleet(ai_settings, screen, aliens):
"""创建外星人群"""
#创建一个外星人,并计算一行可容纳多少个外星人
#外星人间距为外星人宽度
alien = Alien(ai_settings, screen)
alien_width = alien.rect.width
number_aliens_x = get_number_aliens_x(ai_settings, alien_width)
number_rows = get_number_rows(ai_settings, ship.rect.height,
alien.rect.height)
return alien
#创建第一行外星人
for row_number in range(number_rows):
for alien_number in range(number_alien_x):
create_alien(ai_settings, screen, aliens, alien_number, row_number)
#创建第一行外星人并将其加入当前行
alien = Alien(ai_settings, screen)
alien.x = alien_width + 2 * alien_width * alien_number
alien.rect.x = alien.x
aliens.add(alien)
#全是名称(get_number_aliens_x)未定义头都搞大了哪位支个招吧救救我啊.......
def create_alien(ai_settings, screen, aliens, alien_number):
"""创建一个外星人将其放在当前行"""
alien = Alien(ai_settings, screen)
alien_width = alien.rect.width
alien.x = alien_width + 2 * alien_width * alien_number
alien.rect.x = alien.x
aliens.add(alien)