Day 14 项目 -外星人入侵 - 2
- 首先是归纳Day13学习到的有关pygame的知识,用流程图方式,绘图软件:https://www.draw.io/
screen = pygame.display.set_mode(width, height)
pygame.display.set_caption("Alien Invasion")
self.image = pygame.image.load('images/ship.bmp')
self.rect = self.image.get_rect()
self.screen_rect = screen.get_rect()
- pygame的Sprit类
from pygame.sprite import Sprite
from pygame.sprite import Group
- pygame.Sprit类,即‘精灵’,可将游戏中的相关元素编组,进而同时操作编组中的所有元素,类似于创建一个列表。
- 精灵,可以理解为会动的图片;
- 精灵的Group()函数,当有若干精灵时,可通过Group()函数创建一个列表。每次对组内的精灵进行绘制时,直接调用Group.update()即可,而不必考虑组内每个精灵的状态。
- 举例来说,定义一个外星人,是继承Sprite的类,创建了若干外星人后,在屏幕上一起显示,每个外星人的在屏幕上的位置都是随机的,并且要检测边界、检测冲突等等,如果不用Group,需要对每个外星人都做单独的计算更新等等:
for alien in aliens:
alien.update()
screen.blit(alien.image, alien.rect)
如果使用Group,在创建外星人的时候将这些外星人加入群组即可,以后每次只需要更新一次群组即可实现对所有外星人的更新,并且提供内置的冲突检测等功能。 for alien_number in range(number_aliens_x):
#创建一个外星人并将其加入当前行
alien = Alien(ai_settings, screen)
aliens.add(alien)
#直接调用群组的update
aliens.update()
- 响应用户输入(左右箭头移动飞船)