當我運行我的代碼時,出現錯誤:「NameError:name'distantCity'未定義」,我不確定它爲什麼沒有定義,因爲我認爲我在加載函數中定義Loading.py。在不同文件中使用函數
mainGame.py:
import pygame
from settings import *
from Loading import *
from characters import *
pygame.init()
class game():
def __init__(self):
self.gameRunning = True
self.gameWindow = pygame.display.set_mode((gameWindowWidth, gameWindowHeight))
pygame.display.set_caption(title)
self.clock = pygame.time.Clock()
self.playerSpeed = speed
load()
def update(self):
self.gameWindow.blit(distantCity, (0,0))
for layer in gameMap.visible_layers:
for x, y, gid, in layer:
tile = gameMap.get_tile_image_by_gid(gid)
self.gameWindow.blit(tile, (x * gameMap.tilewidth, y * gameMap.tileheight))
self.gameWindow.blit(ninjaIdle01, (player1.playerX, player1.playerY))
pygame.display.update()
def gameLoop(self):
self.clock.tick(FPS)
self.event()
self.update()
def event(self):
for event in pygame.event.get():
if event.type == pygame.QUIT:
self.gameRunning = False
if event.type == pygame.KEYDOWN and event.key == pygame.K_RIGHT:
self.playerSpeed = 5
if event.type == pygame.KEYDOWN and event.key == pygame.K_LEFT:
self.playerSpeed = -5
if event.type == pygame.KEYUP and event.key == pygame.K_RIGHT:
self.playerSpeed = 0
if event.type == pygame.KEYUP and event.key == pygame.K_LEFT:
self.playerSpeed = 0
player1.playerX = player1.playerX + self.playerSpeed
playGame = game()
player1 = player()
while playGame.gameRunning == True:
playGame.gameLoop()
pygame.quit()
quit()
Loading.py
import pygame
import pytmx
pygame.init()
def load():
ninjaIdle01 = pygame.image.load("gameImages\s_ninjaIdle_01.png")
ninjaIdle02 = pygame.image.load("gameImages\s_ninjaIdle_02.png")
ninjaIdle03 = pygame.image.load("gameImages\s_ninjaIdle_03.png")
ninjaIdle04 = pygame.image.load("gameImages\s_ninjaIdle_04.png")
ninjaIdle05 = pygame.image.load("gameImages\s_ninjaIdle_05.png")
ninjaIdle06 = pygame.image.load("gameImages\s_ninjaIdle_06.png")
ninjaIdle07 = pygame.image.load("gameImages\s_ninjaIdle_07.png")
ninjaIdle08 = pygame.image.load("gameImages\s_ninjaIdle_08.png")
ninjaIdle09 = pygame.image.load("gameImages\s_ninjaIdle_09.png")
ninjaIdle10 = pygame.image.load("gameImages\s_ninjaIdle_10.png")
ninjaJump01 = pygame.image.load("gameImages\s_ninjaJump_01.png")
ninjaJump02 = pygame.image.load("gameImages\s_ninjaJump_02.png")
ninjaJump03 = pygame.image.load("gameImages\s_ninjaJump_03.png")
ninjaJump04 = pygame.image.load("gameImages\s_ninjaJump_04.png")
ninjaJump05 = pygame.image.load("gameImages\s_ninjaJump_05.png")
ninjaJump06 = pygame.image.load("gameImages\s_ninjaJump_06.png")
ninjaJump07 = pygame.image.load("gameImages\s_ninjaJump_07.png")
ninjaJump08 = pygame.image.load("gameImages\s_ninjaJump_08.png")
ninjaJump09 = pygame.image.load("gameImages\s_ninjaJump_09.png")
ninjaJump10 = pygame.image.load("gameImages\s_ninjaJump_10.png")
ninjaRun01 = pygame.image.load("gameImages\s_ninjaRun_01.png")
ninjaRun02 = pygame.image.load("gameImages\s_ninjaRun_02.png")
ninjaRun03 = pygame.image.load("gameImages\s_ninjaRun_03.png")
ninjaRun04 = pygame.image.load("gameImages\s_ninjaRun_04.png")
ninjaRun05 = pygame.image.load("gameImages\s_ninjaRun_05.png")
ninjaRun06 = pygame.image.load("gameImages\s_ninjaRun_06.png")
ninjaRun07 = pygame.image.load("gameImages\s_ninjaRun_07.png")
ninjaRun08 = pygame.image.load("gameImages\s_ninjaRun_08.png")
ninjaRun09 = pygame.image.load("gameImages\s_ninjaRun_09.png")
ninjaRun10 = pygame.image.load("gameImages\s_ninjaRun_10.png")
distantCity = pygame.image.load("gameImages\s_distantCity.png")
gameMap = pytmx.load_pygame("gameMap.tmx", pixelalpha = True)
你的函數不返回任何東西。當函數結束/返回時,函數中的變量超出範圍。 – wwii
請張貼最小的例子 - http://stackoverflow.com/help/mcve – wwii
我相信閱讀關於變量作用域[這裏](http://python-textbok.readthedocs.io/en/latest/Variables_and_Scope.html)或[這裏](http://www.saltycrane.com/blog/2008/01/python-variable-scope-notes/)將有所幫助。 –