Python 在外星人入侵游戏中,我发射子弹和装载外星人的代码不';运行后是否不显示输出?
这是游戏的输出 我参考了电子书《Python速成课程》,我使用Pycharm IDE,并在其中安装了Python和pygame,游戏一直运行良好,直到飞船左右移动。 另外,我还有一个关于在游戏中加载外星人图像的问题,我已经将图像保存在PYGAME目录的images文件夹中,作为位图图像,因为PYGAME很容易接受BMP图像。运行程序后,外星飞船似乎没有出现在游戏中。 我还添加了船的代码(不是外星船)。请帮我看看船上发射的子弹。 到目前为止,我已经使用了五个类,如ship.py、bullet.py、alien.py、settings.py、game functions.py 这是射击子弹类的代码Python 在外星人入侵游戏中,我发射子弹和装载外星人的代码不';运行后是否不显示输出?,python,python-3.x,pygame,Python,Python 3.x,Pygame,这是游戏的输出 我参考了电子书《Python速成课程》,我使用Pycharm IDE,并在其中安装了Python和pygame,游戏一直运行良好,直到飞船左右移动。 另外,我还有一个关于在游戏中加载外星人图像的问题,我已经将图像保存在PYGAME目录的images文件夹中,作为位图图像,因为PYGAME很容易接受BMP图像。运行程序后,外星飞船似乎没有出现在游戏中。 我还添加了船的代码(不是外星船)。请帮我看看船上发射的子弹。 到目前为止,我已经使用了五个类,如ship.py、bullet.py
import pygame as pg
from pygame.sprite import Sprite
class Bullet(Sprite):
def __init__(self, ai_settings, screen, ship):
super(Bullet, self).__init__()
self.screen = screen
self.rect = pg.Rect(0, 0, ai_settings.bullet_width, ai_settings.bullet_height)
self.rect.centerx = ship.rect.centerx
self.rect.top = ship.rect.top
self.y = float(self.rect.y)
self.color = ai_settings.bullet_color
self.speed_factor = ai_settings.bullet_speed_factor
def update(self):
self.y -= self.speed_factor
self.rect.y = self.y
def draw_bullet(self):
pg.draw.rect(self.screen, self.color, self.rect)
这是外星人等级的代码
import pygame as pg
from pygame.sprite import Sprite
class Alien(Sprite):
def __init__(self, ai_settings, screen):
super(Alien, self).__init__()
self.screen = screen
self.ai_settings = ai_settings
self.image = pg.image.load('images/alien.bmp')
self.rect = self.image.get_rect()
self.rect.x = self.rect.width
self.rect.y = self.rect.height
self.x = float(self.rect.x)
def blitme(self):
self.screen.blit(self.image, self.rect)
这是ship.py类代码
import pygame
class Ship:
def __init__(self, ai_settings, screen):
self.screen = screen
self.ai_settings = ai_settings
self.image = pygame.image.load('images/ship.bmp')
self.rect = self.image.get_rect()
self.screen_rect = screen.get_rect()
self.rect.centerx = self.screen_rect.centerx
self.rect.bottom = self.screen_rect.bottom
self.center = float(self.rect.centerx)
self.moving_right = False
self.moving_left = False
def update(self):
if self.moving_right:
if self.moving_right and self.rect.right < self.screen_rect.right:
self.center += self.ai_settings.ship_speed_factor
self.rect.centerx += 1
if self.moving_left:
if self.moving_left and self.rect.left > 0:
self.center -= self.ai_settings.ship_speed_factor
self.rect.centerx -= 1
self.rect.centerx = self.center
def blitme(self):
self.screen.blit(self.image, self.rect)
您是否收到任何错误消息?如果是这样的话,你应该包括它们。我没有发现
load()
和图像和rect
的设置在Alien
类\uuuu init\uuu()
中有任何明显的错误,您正在实例化它。显然,我们不能告诉任何关于Alien
的绘图的事情,因为我们看不到绘制该绘图的代码。它没有出现在屏幕上。一个问题是Alien
图像的大小,因为这会影响您设置其位置的方式。要帮助您调试此操作,请尝试打印出alien.rect
,查看坐标是否合理。尝试使用png而不是bmp。我没有看到飞船的代码,因此无法判断左/右问题是什么。我没有收到任何错误消息。实际上,格伦先生,问题是我认为外星人的形象没有出现在游戏的输出上。我有一个问题,外星图像的大小真的对输出中不显示外星图像很重要吗?
import pygame as pg
from pygame.sprite import Group
import game_functions as gf
from alien import Alien
from settings import Settings
from ship import Ship
def run_game():
pg.init()
ai_settings = Settings()
screen = pg.display.set_mode((ai_settings.scree_width, ai_settings.screen_height))
pg.display.set_caption('Alien Invasion')
ship = Ship(ai_settings, screen)
bullets = Group()
alien = Alien(ai_settings, screen)
while True:
gf.check_events(ai_settings, screen, ship, bullets)
ship.update()
gf.update_bullets(bullets)
gf.update_screen(ai_settings, screen, ship, alien, bullets)
run_game()