Я делаю игру в стиле аркады, где, если игрок спрайт сталкивается с врагом, он должен закрыть игровой экран и выполнить игру поверх screen.py файла, который является скриптом для игры поверх экрана, как название предполагает. Мой код, который я использовал, чтобы попытаться сделать это следующим образом:Открыть новое окно с pygame
def sprite_collide():
global p_rect
global e_rect
if p_rect.colliderect(e_rect):
execfile('Game Over Screen.py')
Я только начал делать игру на экране, так что код выглядит следующим образом:
import pygame, sys, time, random
from pygame.locals import *
pygame.init() #initializes pygame window
pygame.display.set_caption('KeyCast') #titlebar caption
GOSURF=pygame.display.set_mode((900,600),0,32) #sets main surface
gobackground = pygame.image.load('Game Over.png') #background image for game
"""--------------------------------------------------------------------------"""
while True:
def quitgame():
"""exits programme without any errors"""
for event in pygame.event.get(): #quitting process
if event.type==QUIT: #if player selects 'exit button' on window
pygame.quit() #pygame quit
sys.exit() #system quit
quitgame()
def Surface():
GOSURF.blit(gobackground,(0,0)) #background image
Surface()
pygame.display.update()
Однако всякий раз, когда sprite сталкивается с врагом. Я получаю сообщение об ошибке «NameError: глобальное имя« GOSURF »не определено« "". Не уверен, что делать здесь.
Примечание: Я использовал другое название для поверхности пигмейка в игре по экрану, которая является GOSURF, тогда как исходная поверхность в скрипте игры является только SURF.
Просто сработал, что делать, и не нужно было закрыть последнее окно и открыть новый. Но это была довольно простая настройка, которую мне пришлось сделать haha – gruntapocalypse
@gruntapocalypse Хорошо, что вы нашли решение. Можете ли вы опубликовать свое решение, чтобы другие могли извлечь из этого выгоду, пожалуйста? – salomonderossi
Конечно, отправил ответ ниже – gruntapocalypse