j'écris un jeu en python en utilisant pygame. Je fais quelques variables et une certaine dans ma boucle de jeu, puis une fonction dans ma boucle de jeuQuand je définis une variable dans une boucle de jeu et une fonction dans le gameloop après que
est ici la partie importante du code:
import pygame
import random
pygame.init()
white=(255,255,255)
black = (0,0,0)
red = (255,0,0)
green = (0,255,0)
blue = (0,0,255)
display_width=800
display_hieght=600
gameDisplay= pygame.display.set_mode((display_width,display_hieght))
pygame.display.set_caption('slither')
clock=pygame.time.Clock()
font=pygame.font.SysFont(None,25)
lead_x_change = 0
lead_y_change = 0
def message_to_screen(msg,colour,x,y):
screen_text = font.render(msg,True,colour)
gameDisplay.blit(screen_text,[x,y])
def gameloop():
gameExit = False
gameOver = False
lead_x = display_width/2
lead_y = display_hieght - 5
blocksize=int(10)
FPS = 100
score=0
def shoot(event):
pos = pygame.mouse.get_pos()
if pos >= (590, 400):
lead_x_change += 1
lead_y_change += 0.1
if pos >= (590, 400) and pos <= (580, 0):
lead_x_change += 1
lead_y_change += 0.2
while not gameExit:
pygame.display.update()
while gameOver == True:
gameDisplay.fill(white)
message_to_screen('Game over, press Y to play again or N to quit',red,display_width*0.25,display_hieght/2)
pygame.display.update()
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key== pygame.K_n:
gameExit = True
gameOver = False
for event in pygame.event.get():
if event.type==pygame.QUIT:
gameExit = True
if event.type==pygame.MOUSEBUTTONDOWN:
shoot(pygame.MOUSEBUTTONUP)
if lead_x >display_width -50:
lead_x=display_width - 50
elif lead_x <0:
lead_x=0
lead_x += lead_x_change
lead_y += lead_y_change
gameDisplay.fill(white)
block=pygame.draw.rect(gameDisplay,red,(lead_x,lead_y,50,5))
obj=pygame.draw.circle(gameDisplay,black,(425,595),blocksize)
pygame.Rect(block)
pygame.Rect(obj)
message_to_screen('score='+str(score),black,0,0)
pygame.display.update()
clock.tick(FPS)
pygame.quit()
quit()
gameloop()
dans ce code, il dit la variable lead_x_change
et lead_y_change
dans la fonction de tir n'est pas encore référencée.
S'il vous plaît nous montrer le code complet. Je ne recommanderais pas d'utiliser des variables globales sans raison et plutôt de passer les arguments nécessaires à la fonction. – skrx