pycharm实现飞机大战的过程中,出现了闪退现象
错误代码为Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)
import sys
import pygame
sys.setrecursionlimit(10000)
from plane_sprites import *
pygame.init()
screen = pygame.display.set_mode((480, 700))
background = pygame.image.load("./images/background.png")
screen.blit(background, (0, 0))
hero = pygame.image.load("./images/me1.png")
screen.blit(hero, (200, 500))
pygame.display.update()
clock = pygame.time.Clock()
hero_rect = pygame.Rect(200, 500, 102, 126)
enemy = GameSprite("./images/enemy1.png")
enemy1=GameSprite("./images/enemy1.png",2)
enemy_group=pygame.sprite.Group(enemy,enemy1)
while True:
clock.tick(60)
for event in pygame.event.get():
if event.type==pygame.QUIT:
print("game over")
pygame.quit()
exit()
hero_rect.y -= 5
if hero_rect.y <= -126:
hero_rect.y = 700
screen.blit(background, (0, 0))
screen.blit(hero, hero_rect)
enemy_group.update()
enemy_group.draw(screen)
pygame.display.update()
pygame.quit()
副
import pygame
class GameSprite(pygame.sprite.Sprite):
def int(self, image_name, speed=1):
super().init()
self.image = pygame.image.load(image_name)
self.rect = self.image.get_rect()
self.speed = speed
def update(self, *args, **kwargs):
self.rect.y += self.speed
Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)
因为虚拟机的,改了一下内存储存,看了一些类似贴感觉都不大对,没怎么敢改
可以正常运行程序,不闪退
SIGSEGV 信号指示"分段违规"或"段错误".或多或少,这相当于读取或写入未在进程中映射的内存地址.
这表明您的程序中存在错误.在 Python 程序中,这要么是解释器中的错误,要么是正在使用的扩展模块中的错误(后者是最常见的原因).
要解决此问题,您有多种选择.一种选择是生成一个最小的、独立的、完整的示例来复制问题,然后将其作为错误报告提交给它使用的扩展模块的维护者.
另一种选择是尝试自己找出原因.gdb 是一个有价值的工具,Python 的调试版本和所有正在使用的扩展模块.
安装 gdb 后,您可以使用它来运行您的 Python 程序:
gdb --args python
然后使用 gdb 命令来追踪问题.如果您使用 run,那么您的程序将一直运行,直到它崩溃,您将有机会使用其他 gdb 命令检查状态.