如何解决在外星人入侵游戏中,我发射子弹和加载外星人的代码在运行后没有显示输出?
这是游戏的输出。
我正在参考电子书“ Python Crash Course”,我使用Pycharm IDE,并且还安装了python和pygame,游戏运行良好,直到飞船向左移动为止。 另外,我还有另一个关于在游戏中加载外星人图像的问题,因为pygame容易接受BMP图像,因此将图像保存在images文件夹内的PYGAME目录中作为位图图像。运行该程序后,外星飞船似乎没有出现在游戏中。 我还添加了船(而不是外星人船)的代码。请帮我从船上发射子弹。 到目前为止,我已经使用了五个类,例如 ship.py,bullet.py,alien.py,settings.py,游戏函数.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,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,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,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)
这是主程序Alien Invasion.py中的类实现。
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,ship,bullets)
ship.update()
gf.update_bullets(bullets)
gf.update_screen(ai_settings,alien,bullets)
run_game()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。