python - 如何限制pygame中的精灵列表
问题描述
我只是在学习 pygame,但遇到了问题。我的程序创建了一支你必须消灭的外星人舰队。我想在完全移除后立即生成整个舰队,但是当你摧毁另一艘船时,我的程序会立即生成一艘船。
我尝试使用 while len < 48 来限制列表,但它没有用。这是一次生成外星人的程序(我也在主循环之前插入了它):
def create_fleet(custom_settings, screen, spaceship, aliens):
alien = Alien(custom_settings, screen)
number_aliens_x = get_number_aliens_x(custom_settings, alien.rect.width)
number_rows = get_number_rows(custom_settings, spaceship.rect.height, alien.rect.height) #!!!
for row_number in range(number_rows):
for alien_number in range(number_aliens_x):
if len(aliens) < 48:
create_alien(custom_settings, screen, aliens, alien_number, row_number)
解决方案
我想在完全移除后生成整个舰队 [...]
所以你必须开始创建外星人舰队,一旦外星人的数量为 0 ( len(aliens) == 0`) 例如:
def create_fleet(custom_settings, screen, spaceship, aliens):
if len(aliens) == 0:
alien = Alien(custom_settings, screen)
number_aliens_x = get_number_aliens_x(custom_settings,alien.rect.width)
number_rows = get_number_rows(custom_settings,spaceship.rect.height,alien.rect.height)
for row_number in range(number_rows):
for alien_number in range(number_aliens_x):
if len(aliens) < 48:
create_alien(custom_settings, screen, aliens, alien_number, row_number)
推荐阅读
- python - 尝试使用 datetime 让 Python 程序在特定时间执行任务但它不工作,没有错误输出
- c++ - 通用 lambdas 和二进制大小/代码膨胀
- ios - 无效的 WatchKit 支持 - Xcode 10 - iOS 12
- python - 匹配和删除文件中的字符串
- c# - 数据库中单行数据值的条件语句
- python - 从特定标签的 gmail 中获取所有电子邮件
- hugo - 为什么我的 blogdown/hugo 博客上会出现 0001 年?
- c++ - 延迟后的C ++优化器调用函数
- java - Java - Android 如何将一个类的列表返回到多个类?
- python - 黑条覆盖了我的 matplotlib 图的 x 标签?