J'ai suivi le tutoriel Pygame par Meloonatic Melons sur youtube (j'ai changé une partie du code mais ça a fonctionné pour le mieux jusqu'à présent), et j'ai couru dans un problème. J'ai fait 2 fichiers supplémentaires à implémenter appelés globals et textureLoader. L'erreur est ici:Erreurs Chargement de l'image Python 3.6.2, Pygame 1.9.3
import pygame, sys, time, random
from scripts.textureLoader import *
from scripts.globals import *
pygame.init()
#Important Stuff
#Variables
clock = pygame.time.Clock()
FPS = 120
tileSize = 32
#Colours
white = (0, 0, 0)
black = (255, 255, 255)
red = (255, 0, 0)
green = (0, 255, 0)
blue = (0, 0, 255)
orange = (255, 165, 0)
#Fonts
fpsFont = pygame.font.Font("C:\\Windows\\Fonts\\Verdana.ttf", 20)
#Display
def display():
global displayHeight, displayWidth, gameDisplay, gameCaption
displayHeight, displayWidth = 600, 800
gameDisplay = pygame.display.set_mode((displayWidth, displayHeight),
pygame.HWSURFACE | pygame.DOUBLEBUF)
gameCaption = pygame.display.set_caption("Testy RPG")
run = True
while run:
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_UP:
Globals.cameraMove = 1
elif event.key == pygame.K_DOWN:
Globals.cameraMove = 2
elif event.key == pygame.K_LEFT:
Globals.cameraMove = 3
elif event.key == pygame.K_RIGHT:
Globals.cameraMove = 4
elif event.type == pygame.KEYUP:
Globals.cameraMove = 0
#Logic
# - FPS Counter
FPSColour = black
cFPS = int(clock.get_fps())
if cFPS < 10:
FPSColour = red
elif cFPS > 10 and cFPS < 60:
FPSColour = orange
else:
FPSColour = green
# - Camera
if Globals.cameraMove == 1:
Globals.cameraY -= 1
elif Globals.cameraMove == 2:
Globals.cameraY += 1
elif Globals.cameraMove == 3:
Globals.cameraX -= 1
elif Globals.cameraMove == 4:
Globals.cameraX += 1
# - Player
#Render Graphics
gameDisplay.blit(Background.NightSky, (0, 0)) #this is where the error is
# - Render Tiles
for x in range(0, 640, tileSize):
for y in range(0, 480, tileSize):
gameDisplay.blit(Tiles.Grass, (x + Globals.cameraX, y +
Globals.cameraY))
gameDisplay.blit(fpsFont.render("FPS: " + str(cFPS), True, FPSColour),
(0, 0))
gameDisplay.blit(PlayerFrontBack.PlayerFront, (0, 0))
pygame.display.update()
clock.tick(120)
pygame.quit()
sys.exit()
Ceci est mon fichier TextureLoader:
import pygame
pygame.init()
class Tiles:
global Size
Size = 32
def loadTexture(file, size):
bitmap = pygame.image.load(file)
bitmap = pygame.transform.scale(bitmap, (Size, Size))
surface = pygame.Surface((Size, Size), pygame.HWSURFACE | pygame.SRCALPHA)
surface.blit(bitmap, (0, 0))
return surface
Grass = loadTexture("Graphics\\grass.png", Size)
Stone = loadTexture("Graphics\\stone.png", Size)
Water = loadTexture("Graphics\\water.png", Size)
class Background:
global backgroundWidth, backgroundHeight
backgroundWidth = 800
backgroundHeight = 600
def loadBackground(file, size):
backgroundImg = pygame.image.load(file)
backgroundImg = pygame.transform.scale(backgroundImg, (backgroundWidth, backgroundHeight))
backgroundSurf = pygame.Surface((backgroundWidth, backgroundHeight), pygame.HWSURFACE | pygame.SRCALPHA)
backgroundSurf.blit(backgroundImg, (0, 0))
return backgroundSurf
NightSky = loadBackground("Graphics\\sky.png", (backgroundWidth, backgroundHeight))
class PlayerFrontBack:
global playerWidth, playerHeight
playerWidth = 19
playerHeight = 55
def loadPlayerFrontBack(file, size):
playerImg = pygame.image.load(file)
playerImg = pygame.transform.scale(playerImg, (playerWidth, playerHeight))
playerSurf = pygame.Surface((playerWidth, playerHeight), pygame.HWSURFACE | pygame.SRCALPHA)
playerSurf.blit(playerImg, (0, 0))
return playerSurf
PlayerFront = loadPlayerFrontBack("Graphics\\manStill.png", (19, 55))
class PlayerLeftRight:
global playerWidth2
playerWidth2 = 15
def loadPlayerLeftRight(file, size):
playerImg = pygame.image.load(file)
playerImg = pygame.transform.scale(playerImg, (playerWidth2, playerHeight))
playerSurf = pygame.Surface((playerWidth2, playerHeight), pygame.HWSURFACE | pygame.SRCALPHA)
playerSurf.blit(playerImg, (0, 0))
return playerSurf
Et voici mon fichier globals:
class Globals:
cameraX = 0
cameraY = 0
cameraMove = 0
Le retraçage est:
"D:\Programming\Python\Python 3.6.2\python.exe"
D:/Programming/Python/Assets/Projects/Games/rpg.py
Traceback (most recent call last):
File "D:/Programming/Python/Assets/Projects/Games/rpg.py", line 81, in
<module>
gameDisplay.blit(Background.NightSky, (0, 0))
NameError: name 'gameDisplay' is not defined
Merci d'avoir révisé mon code et je vous souhaite la bonne chance de trouver une solution!
Vous n'avez pas dit ce qu'est l'erreur. Quelle est l'erreur complète avec la trace de la pile? Et quel débogage as-tu fait? – Carcigenicate
@Carcigenicate J'ai inclus la traceback maintenant et j'ai regardé à travers ce forum pour quelque chose sur ma situation et n'ai rien trouvé. Comme pour le débogage, j'ai utilisé le débogueur intégré PyGame –
Les erreurs assez claires, lisez la dernière ligne. Où déclarez-vous 'gameDisplay'? – Carcigenicate