+10 投票
分类:学习问题 | 用户: 9 5 2 (750 分)
已关闭 用户:

以下为我在主程序中的代码,运行时没有报错,各模块也没有问题,就是会在窗口打开后不到一秒的时间里闪退,电脑已安装最新版pygame2.5.2,编辑器为vscode,求解答,谢谢好心人

import sys

import pygame

from settings import Settings

from ship import Ship

'''开始游戏'''

class AlienInvasion:

    def __init__(self):

        pygame.init()

        self.clock = pygame.time.Clock()

        self.settings = Settings()

        self.screen = pygame.display.set_mode((self.settings.screen_width,self.settings.screen_height))

        pygame.display.set_caption('Alien Invasion')

        self.ship = Ship(self)

       

    def run_game(self):

        while True:

            self._ckeck_events()

            self._update_screen()

            self.ship.update()

            self.clock.tick(60)

            pygame.display.flip()

           

    def _ckeck_events(self):

        for event in pygame.event.get():

                if event.type == pygame.QUIT:

                    sys.exit()

                elif event.type == pygame.KEYDOWN:

                    if event.key == pygame.K_RIGHT:

                        self.ship.moving_right = True

                    elif event.key == pygame.K_LEFT:

                        self.ship.moving_left = True

                elif event.type == pygame.KEYUP:

                    if event.key == pygame.K_RIGHT:

                        self.ship.moving_right = False

                    elif event.key == pygame.K_LEFT:

                        self.ship.moving_left = False

                   

    def _update_screen(self):

        self.screen.fill(self.settings.bg_color)

        self.ship.blitme()

if __name__=="__main__":

    ai =AlienInvasion()

    ai.run_game

           

问题关闭原因: 问题已解决

3 个回答

+1 投票
用户: 8 4 3 (1.1k 分)
采纳于 用户:
 
已采纳
run_game没括号
+1 投票
用户: 9 5 2 (750 分)

还有模块settings

'''设置'''

class Settings:

    def __init__(self):

        self.screen_width = 1200

        self.screen_height = 800

        self.bg_color = (230,230,230)

模块ships

import pygame

'''飞船'''

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

        self.moving_right = False

        self.moving_left = False

    def blitme(self):

        self.screen.blit(self.image,self.rect)

    def update(self):

        if self.moving_right:

            self.rect.x += 1

        if self.moving_left:

            self.rect.x -= 1

+2 投票
用户: 7 7 4 (1.0k 分)
最后一行run_game没加括号
用户: 9 5 2 (750 分)
我是sb
欢迎来到 在线问答系统 ,有什么不懂的可以尽管在这里提问,你将会收到社区其他成员的回答。
...