问题描述
我正在学习了解 pygame 的教程。在这个游戏中,我只设置背景颜色,并绘制船舶图像并处理事件以管理船舶(图像)的位置。我的代码在静态屏幕大小下正常工作,但当我尝试以全屏模式打开时会出现空白屏幕。这是 AlienInvasion 类的正常工作代码
class AlienInvasion:
def __init__(self):
pg.init()
self.settings = Settings()
self.screen = pg.display.set_mode((self.settings.width,self.settings.height))
# width and height are static value 1366 and 768
pg.display.set_caption('Pygame')
self.ship = Ship(self)
self.x = float(self.ship.rect.x)
self.move_right = False
self.move_left = False
def run_game(self):
while True:
self._check_events()
self.update()
self._update_screen()
# Function to manage events
def _check_events(self):
for event in pg.event.get():
if(event.type == pg.QUIT):
sys.exit()
elif(event.type == pg.KEYDOWN):
self._check_keydown_events(event)
elif(event.type == pg.KEYUP):
self._check_keyup_events(event)
# manage key down events
def _check_keydown_events(self,event):
if(event.key == pg.K_RIGHT):
self.move_right = True
elif(event.key == pg.K_LEFT):
self.move_left = True
elif(event.key == pg.K_q):
sys.exit()
# manage key up enevts
def _check_keyup_events(self,event):
if(event.key == pg.K_RIGHT):
self.move_right = False
elif(event.key == pg.K_LEFT):
self.move_left = False
# Update position of image object
def update(self):
if(self.move_right and self.ship.rect.right < self.ship.screen_rect.right):
self.x += self.settings.ship_speed
elif(self.move_left and self.ship.rect.left > 0):
self.x -= self.settings.ship_speed
self.ship.rect.x = self.x
# Actual Function that set background and display image object
def _update_screen(self):
self.screen.fill(self.settings.bg_color)
self.ship.blitme()
pg.display.flip()
if __name__ == '__main__':
ai = AlienInvasion()
ai.run_game()
设置类代码
class Settings:
def __init__(self):
self.width = 1366
self.height = 768
self.bg_color = (230,230,230)
self.ship_speed = 1.5
船级代码
class Ship:
def __init__(self,ai_game):
self.screen = ai_game.screen
self.screen_rect = ai_game.screen.get_rect()
self.image = pygame.image.load('images/ship.bmp')
self.rect = self.image.get_rect()
self.rect.midbottom = self.screen_rect.midbottom
def blitme(self):
a = self.screen.blit(self.image,(self.rect[0],self.rect[1] - 70))
这是 AlienInvasion 的更新代码。init 函数以全屏模式打开
def __init__(self):
pg.init()
self.settings = Settings()
# Updated lines start
self.screen = pg.display.set_mode((0,0),pg.FULLSCREEN)
self.settings.width = self.screen.get_rect().width
self.settings.height = self.screen.get_rect().height
# End Update Lines
pg.display.set_caption('Pygame')
self.ship = Ship(self)
self.x = float(self.ship.rect.x)
self.move_right = False
self.move_left = False
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)