外星人群创建失败

新手上路,请多包涵

创建### 问题描述
按照书上的,在刚刚成功创建第一排外星人群之后,创建更多外星人时失败,还是只显示刚刚创建的那排外星人,无报错,求热心人帮忙瞅瞅

问题出现的环境背景及自己尝试过哪些方法

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

请输入代码

alien_invasion.py

import sys

import pygame

from settings import Settings
from ship import Ship

from alien import Alien

import game_functions as gf
from pygame.sprite import Group

def run_game():


# 初始化游戏并创建一个屏幕对象
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()

#设置背景色
#bg_color = (0,0,0)

#创建一个外星人
#alien = Alien(ai_settings,screen)
#创建外星人群
gf.create_fleet(ai_settings,screen,ship,aliens)


#开始游戏的主循环
while True:

    #监视键盘和鼠标事件
    gf.check_events(ai_settings,screen,ship,bullets)
    ship.update()
    #bullets.update()
    

    #删除已消失的子弹
    gf.update_bullets(bullets)
    gf.update_aliens(ai_settings,aliens)
    gf.update_screen(ai_settings,screen,ship,aliens,bullets)
    #每次循环时都重绘屏幕
    #screen.fill(ai_settings.bg_color)
    #ship.blitme()
    #让最近绘制的屏幕可见
    #pygame.display.flip()

run_game()

game_functions.py

import sys
import pygame
from bullet import Bullet
from alien import Alien

def check_keydown_events(event,ai_settings,screen,ship,bullets):

if event.key == pygame.K_RIGHT:
     #向右移动飞船
    ship.moving_right = True
elif event.key == pygame.K_LEFT:
    ship.moving_left = True
elif event.key == pygame.K_SPACE:
    fire_bullet(ai_settings,screen,ship,bullets)
elif event.key == pygame.K_q:
    pygame.quit( )
    sys.exit( )

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.rect.y = alien.rect.height + 2 * alien.rect.height * row_number
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)


你期待的结果是什么?实际看到的错误信息又是什么?

阅读 2.4k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题