所以主代码是这样工作的:
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()
此外,我有一个模块称为游戏_函数.py,但游戏功能中唯一不起作用的部分是def的最后几个部分(获取外星人号,创建外星人和舰队)。返回错误。首先,我认为我错过了一些阅读Python Crashcourse一书的内容,但是我已经阅读了很多次新添加的代码,但都没有结果。这本书提到了一个名字“外星人号码”,但我不知道该放在哪里
问题:有人知道哪里出了问题,哪里需要插入“外星号码”,或者有人知道为什么会产生错误吗?
它应该做什么:从另一个名为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)
---
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
路径开头已删除,无任何关系。你知道吗
您的参数名为
aliens_number
(复数),但您试图将其用作alien_number
(单数)。你知道吗相关问题 更多 >
编程相关推荐