problema python e pygame

BY3R

Nuovo Utente
30
0
ciao recentemente mi sto appasionando al mondo python e stavo seguendo una guida su come creare un gioco con pygame
questo è il codice che ho scritto fino ad ora
Python:
import pygame
import random

pygame.init()

background = pygame.image.load('immagini/sfondo.png')
bird = pygame.image.load('immagini/uccello.png')
grass = pygame.image.load('immagini/base.png')
gameover = pygame.image.load('immagini/gameover.png')
pipe_down = pygame.image.load('immagini/tubo.png')
pipe_up = pygame.transform.flip(pipe_down, False, True)

display = pygame.display.set_mode((288, 512))
FPS = 50

def create_obj():
                display.blit(background, (0,0))
                display.blit(bird, (birdx,birdy))

def refresh ():
                pygame.display.update()
                pygame.time.Clock().tick(FPS)

def initialize():
                global birdx, birdy, bird_vely
                birdx, birdy = 60, 150
                ucello_vely = 0

initialize()

while True:
                bird_vely += 1
                birdy += bird_vely
              
                create_obj();
                refresh()
mi da questo errore

pygame 2.0.0 (SDL 2.0.12, python 3.9.0)
Hello from the pygame community. https://www.pygame.org/contribute.html
Traceback (most recent call last):
File "C:\Users\lugge\Desktop\PYGAME\new 1.py", line 36, in <module>
bird_vely += 1
NameError: name 'bird_vely' is not defined
 

clessidra

Utente Attivo
763
268
CPU
VIA C3
GPU
Ati Rage
OS
linux - Red Hat 1.1
Mi sembra che l'errore sia in bird_vely += 1, ovvero incrementi una variabile inesistente.
 

Reeaver

Utente Attivo
1,177
131
CPU
AMD RYZEN 5 1600
Dissipatore
NOCTUA NH-U12S
Scheda Madre
MSI B350 TOMAHAWK
HDD
SSD SAMSUNG 850 250 GB + WD CAVIAR BLUE 1TB
RAM
HYPER X 16GB 2400MHz DDR4 LP
GPU
ASUS ROG STRIX GTX1070 O8GB
Audio
INTEGRATA
Monitor
SAMSUNG C24F390
PSU
SEASONIC SSR-550M
Case
NZXT S340
Periferiche
MOUSE, TASTIERA, MANI
Net
FIBRA FTTH 1GB
OS
WINDOWS 10 PRO 64-BIT
Non hai dichiarato la variabile "bird_vely"
 

pabloski

Utente Èlite
2,566
695
Aggiungerei che global non fa quello che stai pensando, cioè non definisce una variabile globale.

Lo scopo di global è disabilitare lo shadowing dei nomi delle variabili nel contesto locale. Cioè ti permette di accedere, dall'interno di una funzione, ad una variabile globale, che però dev'essere dichiarata nel corpo principale del modulo, cioè nel contesto globale.
 

Entra

oppure Accedi utilizzando

Hot: PS5 VS XBOX X/S?

  • Playstation 5

    Voti: 297 63.5%
  • XBOX Series X/S

    Voti: 171 36.5%

Discussioni Simili