我正在制作街机风格游戏,如果玩家精灵与敌人发生碰撞,它应该关闭游戏画面并执行Game over screen.py文件,这是游戏结束屏幕的脚本,顾名思义。 我以前尝试过的代码如下:
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()
然而,每当精灵与敌人发生碰撞时,我都会收到错误消息" NameError:全球名称' GOSURF'未定义"""。 不知道该怎么做。
注意:我在GOSURF游戏屏幕上使用了不同的名称作为pygame表面,而游戏脚本中的原始表面只是SURF。
答案 0 :(得分:1)
如果您的意思是同时制作多个窗口。你不能这样做。它是SDL(底层C库)的限制。
在您的情况下,您必须声明GOSURF
全局来从您的函数中获取它。
def Surface():
global GOSURF
GOSURF.blit(gobackground,(0,0)) #background image
答案 1 :(得分:0)
将游戏画面脚本中的任何新变量声明为脚本中的全局变量,现在可以正常工作了!这是我添加的位,请参阅完整代码的原始问题:
gobackground = pygame.image.load('Game Over.png') #background image for game
global GOSURF
global gobackground
"""--------------------------------------------------------------------------"""
while True:
当我将变量添加到脚本中时,它会继续使变量变为全局变量。