2016-04-28 19 views
0

私はアーケードスタイルのゲームを作っています。プレーヤーのスプライトが敵と衝突した場合、ゲーム画面を閉じて、Game Over Screenのスクリプトであるgame over 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() 

しかし、いつでもスプライトが敵と衝突します。エラーメッセージ "NameError:グローバル名 'GOSURF'が定義されていません。 ここで何をするか分かりません。

注:私はGOSURFであるスクリーン上のゲームのパイゲームの表面に別の名前を使用しましたが、ゲームスクリプトの元のサーフェスはSURFです。

答えて

1

複数のウィンドウを同時に作成する場合は、あなたはそれをすることはできません。これはSDL(基本となるCライブラリ)の限界です。

場合によっては、GOSURFをグローバルで宣言して、関数から呼び出す必要があります。

+0

ちょうど何をすべきか分かりましたし、最後のウィンドウを閉じて新しいウィンドウを開くこともできませんでした。しかし、それは私がハハを作る必要があった非常に簡単な調整だった – gruntapocalypse

+0

@ gruntapocalypseあなたが解決策を見つけたことをお読みください。あなたはあなたのソリューションを投稿できますか? – salomonderossi

+0

もちろん、以下の回答を掲載しました。 – gruntapocalypse

0

ゲーム画面スクリプト内の新しい変数がスクリプト内でグローバルとして宣言され、現在は機能します。ここで私は付加ビットだ、完全なコードのための元の質問を参照してください。

gobackground = pygame.image.load('Game Over.png') #background image for game 

global GOSURF 
global gobackground 

"""--------------------------------------------------------------------------""" 
while True: 

はちょうど私がスクリプトに追加して、変数をグローバルにしていきます。

関連する問題