sys.exit()和pygame.quit()通常对我有用。我目前正在尝试使用类和类属性。我的猜测是,由于在类中如何创建屏幕对象,因此无法关闭屏幕对象?
我不会打印打印语句-我检查了它是否正在注册quit事件。
请帮助!
import pygame
import os, sys, random, math
class Game():
active = True
cell_size = 20
max_cell_number = 30
welcome = True
def __init__(self):
pygame.init()
self.screen = pygame.display.set_mode(size = (Game.cell_size*Game.max_cell_number, Game.cell_size*Game.max_cell_number))
self.clock = pygame.time.Clock()
class Background():
def __init__(self):
image1 = pygame.image.load('/assets/image1.png').convert()
image2 = pygame.image.load('/assets/image2.png').convert()
image3 = pygame.image.load('/assets/image3.png').convert()
image4 = pygame.image.load('/assets/image4.png').convert()
image5 = pygame.image.load('/assets/image5.png').convert()
self.images = [image1, image2, image3, image4, image5]
def generate_background(self):
image_number = random.randint(0,4)
image = self.images[image_number]
return image
class Cards():
def __init__(self):
pass
def show(self, welcome):
if welcome:
self.WelcomeScreen()
else:
self.EndScreen()
class WelcomeScreen():
def __init__(self):
image = self.Background()
image = image.generate_background
self.screen.blit(image,(0,0))
game = Game()
while True:
if game.active:
for event in pygame.event.get():
if event == pygame.QUIT:
print("quit")
pygame.quit()
sys.exit(0)
else:
for event in pygame.event.get():
if event == pygame.QUIT:
pygame.quit()
sys.exit()
game.Cards.show(Game.welcome)
game.clock.tick(120)
pygame.display.update()
答案 0 :(得分:0)
您需要将事件的类型与pygame.QUIT
进行比较,因为原始事件将始终只是Event
类的一个实例。
已更正的while
循环:
while True:
if game.active:
for event in pygame.event.get():
if event.type == pygame.QUIT:
print("quit")
pygame.quit()
sys.exit(0)
else:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
game.Cards.show(Game.welcome)
game.clock.tick(120)
pygame.display.update()