Python 尝试使用函数获取Pygame的最大行数

Python 尝试使用函数获取Pygame的最大行数,python,function,pygame,Python,Function,Pygame,因此,主代码的工作原理如下: import sys, pygame from settings import Settings from ship import Ship from pygame.sprite import Group import game_function as gf def run_game(): #initialize game and create a screen object pygame.init() ai_settings = Sett

因此,主代码的工作原理如下:

import sys, pygame
from settings import Settings
from ship import Ship
from pygame.sprite import Group
import game_function as gf

def run_game():
    #initialize game and create a screen object
    pygame.init()
    ai_settings = Settings()
    screen = pygame.display.set_mode(
        (ai_settings.screen_width, ai_settings.screen_height))

    pygame.display.set_caption("Alien Invasion 2000")
    #Make ship
    ship = Ship(ai_settings, screen)
    #make a group to store bullets in
    bullets = Group()
    aliens = Group()
    #create the fleet of aliens
    gf.create_fleet(ai_settings, screen, aliens)

    #start the main loop for game
    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()
此外,我还有一个名为game_function.py的模块,但game_函数中唯一不起作用的部分是def(获取_编号、创建_外星人和创建_舰队)。返回错误。首先,我想我错过了阅读PythonCrashCourse一书中的一些内容,但是我已经多次阅读了新添加的代码,但都没有用。书中提到了一个名字“外星人号”,但我不知道该放在哪里

问题:有人知道哪里出了问题,需要在哪里插入“外来号码”,或者有人知道产生错误的原因吗?

它应该做什么:从另一个名为Alien(150x150px.png)的文件中获取图像,并尝试查看它可以在游戏中填充多少行:

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

def check_keydown_events(event, ai_settings, screen, ship, bullets):
    """Respond to keypresses"""
    if event.type == pygame.KEYDOWN:
            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_UP:
                ship.moving_up = True
            elif event.key == pygame.K_SPACE:
                fire_bullet(ai_settings, screen, ship, bullets)
            #lyckas inte stänga av spelet
            #elif event.key == pygame.K_q:
             #   sys.exit()

def check_keyup_events(event, ai_settings, screen, ship):
    """Respond to keyreleases"""
    if event.type == pygame.KEYUP:
            if event.key == pygame.K_RIGHT:
                ship.moving_right = False
            elif event.key == pygame.K_LEFT:
                ship.moving_left = False
            elif event.key == pygame.K_DOWN:
                ship.moving_left = False

def check_events(ai_settings, screen, ship, bullets):
    for event in pygame.event.get():
        #lyckas inte stänga av spelet
        if event.type == pygame.QUIT:
            sys.exit()
        elif event.type == pygame.KEYDOWN:
            check_keydown_events(event, ai_settings, screen, ship, bullets)

        elif event.type == pygame.KEYUP:
            check_keyup_events(event, ai_settings, screen, ship)


def update_screen(ai_settings, screen, ship, aliens, bullets):
    """Update images on the screen and flip to new screen."""
    screen.fill(ai_settings.bg_color)
    #redraw all bullets behind ship and aliens
    for bullet in bullets.sprites():
        bullet.draw_bullet()
    ship.blitme()
    aliens.draw(screen)
    #make the most recently drawn screen visible
    pygame.display.flip()

def update_bullets(bullets):
    """update position of bullets and get rid of old bullets"""
    #updates bullet position
    bullets.update()

    #get rid of bullets that have disappeared
    for bullet in bullets.copy():
        if bullet.rect.bottom <= 0:
            bullets.remove(bullet)

def fire_bullet(ai_settings, screen, ship, bullets):
    """Fire a bullet if limit not reached yet"""
    #Create a new bullet and add it to the bullet group
    if len(bullets) < ai_settings.bullets_allowed:
                    #create a new bullet and add it to the bullet group
                    new_bullet = Bullet(ai_settings, screen, ship)
                    bullets.add(new_bullet)

def get_number_aliens_x(ai_settings, alien_width):
    """Determine the number of aliens that can fit in a row"""
    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 create_alien(ai_settings, screen, aliens, aliens_number):
    """Create an alien and place it in the row"""
    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 create_fleet(ai_settings, screen, aliens):
    """Create a full fleet of aliens"""
    #create an alien and find ithe number of alien in a row
    alien = Alien(ai_settings, screen)
    number_aliens_x = get_number_aliens_x(ai_settings, alien.rect.width)


    #create the first row of alien
    for alien_number in range(number_aliens_x):
        create_alien(ai_settings, screen, aliens, alien_number)
导入系统,pygame
从bullet导入bullet
从外国人进口外国人
def check_keydown_事件(事件、ai_设置、屏幕、发货、项目符号):
“”“响应按键”“”
如果event.type==pygame.KEYDOWN:
如果event.key==pygame.K_RIGHT:
ship.moving_right=真
elif event.key==pygame.K_左:
ship.moving_left=真
elif event.key==pygame.K_UP:
ship.moving_up=真
elif event.key==pygame.K_空间:
发射子弹(ai设置、屏幕、飞船、子弹)
#莱卡斯国际圣恩加酒店
#elif event.key==pygame.K_q:
#sys.exit()
def check_keyup_事件(事件、ai_设置、屏幕、发货):
“”“响应密钥释放”“”
如果event.type==pygame.KEYUP:
如果event.key==pygame.K_RIGHT:
ship.moving_right=错误
elif event.key==pygame.K_左:
ship.moving_left=错误
elif event.key==pygame.K_向下:
ship.moving_left=错误
def检查事件(ai设置、屏幕、装运、项目符号):
对于pygame.event.get()中的事件:
#莱卡斯国际圣恩加酒店
如果event.type==pygame.QUIT:
sys.exit()
elif event.type==pygame.KEYDOWN:
检查按键事件(事件、ai设置、屏幕、发送、项目符号)
elif event.type==pygame.KEYUP:
检查按键事件(事件、ai设置、屏幕、发货)
def更新屏幕(ai设置、屏幕、飞船、外星人、子弹):
“”“更新屏幕上的图像并切换到新屏幕。”“”
屏幕。填充(ai_设置。bg_颜色)
#重画飞船和外星人后面的所有子弹
对于项目符号中的项目符号。精灵()
bullet.draw_bullet()
飞船。blitme()
外星人。绘制(屏幕)
#使最近绘制的屏幕可见
pygame.display.flip()
def更新项目符号(项目符号):
“”“更新项目符号的位置并清除旧项目符号”“”
#更新子弹位置
bullets.update()
#扔掉已经消失的子弹
用于项目符号中的项目符号。复制():

如果bullet.rect.bottom您的参数名为
异形编号
(复数),但您试图将其用作
异形编号
(单数)


你有问题吗?你到底有什么问题?哦,非常感谢,这就成功了。
Traceback (most recent call last):
  File "python\alien_invasion\alien_invasion.py", line 29, in <module>
    run_game()
  File "python\alien_invasion\alien_invasion.py", line 21, in run_game
    gf.create_fleet(ai_settings, screen, aliens)
  File "python\alien_invasion\game_function.py", line 94, in create_fleet
    create_alien(ai_settings, screen, aliens, alien_number)
  File "python\alien_invasion\game_function.py", line 81, in create_alien
    alien.x = alien_width + 2 * alien_width * alien_number
NameError: name 'alien_number' is not defined
def create_alien(ai_settings, screen, aliens, aliens_number):
    # ... 
    alien.x = alien_width + 2 * alien_width * alien_number