Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在外星人入侵游戏中,我发射子弹和装载外星人的代码不';运行后是否不显示输出?_Python_Python 3.x_Pygame - Fatal编程技术网

Python 在外星人入侵游戏中,我发射子弹和装载外星人的代码不';运行后是否不显示输出?

Python 在外星人入侵游戏中,我发射子弹和装载外星人的代码不';运行后是否不显示输出?,python,python-3.x,pygame,Python,Python 3.x,Pygame,这是游戏的输出 我参考了电子书《Python速成课程》,我使用Pycharm IDE,并在其中安装了Python和pygame,游戏一直运行良好,直到飞船左右移动。 另外,我还有一个关于在游戏中加载外星人图像的问题,我已经将图像保存在PYGAME目录的images文件夹中,作为位图图像,因为PYGAME很容易接受BMP图像。运行程序后,外星飞船似乎没有出现在游戏中。 我还添加了船的代码(不是外星船)。请帮我看看船上发射的子弹。 到目前为止,我已经使用了五个类,如ship.py、bullet.py

这是游戏的输出

我参考了电子书《Python速成课程》,我使用Pycharm IDE,并在其中安装了Python和pygame,游戏一直运行良好,直到飞船左右移动。 另外,我还有一个关于在游戏中加载外星人图像的问题,我已经将图像保存在PYGAME目录的images文件夹中,作为位图图像,因为PYGAME很容易接受BMP图像。运行程序后,外星飞船似乎没有出现在游戏中。 我还添加了船的代码(不是外星船)。请帮我看看船上发射的子弹。 到目前为止,我已经使用了五个类,如ship.py、bullet.py、alien.py、settings.py、game functions.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()