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
766
272
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,188
134
CPU
AMD RYZEN 5 1600
Dissipatore
NOCTUA NH-U12S
Scheda Madre
MSI B350 TOMAHAWK
HDD
SSD SAMSUNG 860 EVO 500 GB + CRUCIAL MX 1TB
RAM
HYPER X 16GB 2400MHz DDR4 LP
GPU
ASUS ROG STRIX GTX1070 O8GB
Audio
SOUNDBLASTER AUDIGY FX
Monitor
LG ULTRAGEAR 2K
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,868
916
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
Discord Ufficiale Entra ora!