问题遇到的现象和发生背景
请问为什么在项目alien invasion中我的外星人始终只显示一行呢?
用代码块功能插入代码,请勿粘贴截图
game_functions.py
import sys
import pygame
from bullet import Bullet
from alien import Alien
——snip——
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 get_number_rows(ai_settings,ship_height,alien_height):
"""""计算屏幕可容纳多少行外星人"""
available_space_y = (ai_settings.screen_height - (3*alien_height) - ship_height)
number_rows = int(available_space_y / (2*alien_height))
return number_rows
def create_alien(ai_settings,screen,aliens,alien_number,row_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
alien.y = alien.rect.height+2*alien.rect.height*row_number
alien.rect.y = alien.y
aliens.add(alien)
def create_fleet(ai_settings,screen,ship,aliens):
"""创建一整页外星人"""
#创建一个外星人并计算一行中外星人的数量和行数
alien = Alien(ai_settings, screen)
number_aliens_x = get_number_aliens_x(ai_settings, alien.rect.width)
number_rows = get_number_rows(ai_settings,ship.rect.height,alien.rect.height)
#创建一整页外星人
for row_number in range(number_rows):
for alien_number in range(number_aliens_x):
create_alien(ai_settings, screen, aliens, alien_number,row_number)
alien_invasion.py
import pygame
from settings import Settings
from ship import Ship
from pygame.sprite import Group
import game_functions as gf
def run_game():
#初始化pygame、设置和玩家
pygame.init()
ai_settings = Settings()
screen = pygame.display.set_mode(
(ai_settings.screen_width,ai_settings.screen_height))
pygame.display.set_caption("Alien Invasion")
#创建一艘飞船、一个子弹编组、一个外星人编组
ship = Ship(ai_settings,screen)
bullets = Group()
aliens = Group()
#创建外星人群
gf.create_fleet(ai_settings, screen, ship, 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)
run_game()
运行结果及报错内容
我的解答思路和尝试过的方法
我重点检查了 gf.create_fleet(ai_settings, screen, ship, aliens)部分代码,并没有发现错误;也尝试浏览csdn和谷歌上其他帖子,发现错误类型并不一样,请问我的错误出在哪里呢?