python编程_day14_chap13_游戏项目_外星人

Olivia ·
更新时间:2024-09-21
· 576 次阅读

1.创建alien类

alien.py

import pygame from pygame.sprite import Sprite class Alien(Sprite): """表示单个外星人的类""" def __init__(self,ai_settings,screen): super(Alien,self).__init__() self.screen=screen self.ai_settings=ai_settings #加载外星人图像并设置rect属性 self.image=pygame.image.load('images/alien.bmp') self.rect=self.image.get_rect() #每个外星人最初都在屏幕左上角附近 self.rect.x=self.rect.width self.rect.y=self.rect.height #存储外星人的准确位置 self.x=float(self.rect.x) def blitme(self): self.screen.blit(self.image,self.rect) 2.创建alien实例

alien_invasion.py

--snip-- from ship import Ship from alien import Alien import game_functions as gf def run_game(): --snip-- #创建一个外星人 alien=Alien(ai_settings,screen) #开始游戏主循环 while True: --snip-- gf.update_screen(ai_settings,screen,ship,alien,bullets) run_game() 3.让外星人出现在屏幕

在update_screen() 中调用其方法blitme() :
game_functions.py

def update_screen(ai_settings,screen,ship,alien,bullets): #更新屏幕上的图像,并切换到新屏幕 screen.fill(ai_settings.bg_color) #在飞船和外星人后面重绘所有子弹 for bullet in bullets.sprites(): bullet.draw_bullet() ship.blitme() alien.blitme() #让最近绘制的屏幕可见 pygame.display.flip() 13.2.创建一群外星人

1.创建一行卫星人

#外星人可占的空间 available_space_x=ai_settings.screen_width-(2*alien_width) #外星人的数量 number_aliens_x=available_space_x/(2*alien_width)

2.创建多行外星人
为创建一行外星人,首先在alien_invasion.py中创建一个名为aliens 的空编组,用于存储全部外星人,再调用game_functions.py中创建外星人群的函数:
alien_invasion.py

#创建一群外星人 aliens=Group() gf.creat_fleet(ai_settings,screen,aliens) #开始游戏主循环 while True: gf.check_events(ai_settings,screen,ship,bullets) ship.update() gf.update_bullets(bullets) gf.update_screen(ai_settings,screen,ship,aliens,bullets)

game_functions.py

import sys import pygame from bullet import Bullet from alien import Alien --snip-- def update_screen(ai_settings,screen,ship,aliens,bullets): #更新屏幕上的图像,并切换到新屏幕 screen.fill(ai_settings.bg_color) #在飞船和外星人后面重绘所有子弹 for bullet in bullets.sprites(): bullet.draw_bullet() ship.blitme() aliens.draw(screen) #让最近绘制的屏幕可见 pygame.display.flip() def creat_fleet(ai_settings,screen,aliens): """创建外星人群 """ #创建一个外星人,并计算一行可以容纳多少个外星人 #外星人间距为外星人宽度 alien=Alien(ai_settings,screen) alien_width=alien.rect.width available_space_x=ai_settings.screen_width-2*alien_width number_aliens_x=int(available_space_x/(2*alien_width)) #创建第一行外星人 for alien_number in range(number_aliens_x): #创建一个外星人并将其加入当前行 alien=Alien(ai_settings,screen) alien.x=alien_width+2*alien_width*alien_number alien.rect.x=alien.x aliens.add(alien) 4.重构creat_fleet() def get_number_aliens_x(ai_settings,alien_width): available_space_x=ai_settings.screen_width-2*alien_width number_aliens_x=int(available_space_x/(2*alien_width)) return number_aliens_x def creat_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) def creat_fleet(ai_settings,screen,aliens): """创建外星人群 """ #创建一个外星人,并计算一行可以容纳多少个外星人 #外星人间距为外星人宽度 alien=Alien(ai_settings,screen) number_aliens_x=get_number_aliens_x(ai_settings,alien.rect.width) #创建第一行外星人 for alien_number in range(number_aliens_x): creat_alien(ai_settings,screen,aliens,alien_number)

5.添加行
计算公式:
将屏幕高度减去第一行外星人 的上边距(外星人高度)、飞船的高度以及最初外星人群与飞船的距离(外星人高度的两倍):

available_space_y = ai_settings.screen_height – 3 * alien_height – ship_height number_rows = available_height_y / (2 * alien_height)
作者:-Wave



外星人 游戏项目 Python

需要 登录 后方可回复, 如果你还没有账号请 注册新账号