- 870
- 140
- CPU
- Ryzen 3 1200
- Dissipatore
- Stock
- Scheda Madre
- A320m-k
- HDD
- SSD 240GB + HDD 2x500GB
- RAM
- 8gb DDR4
- PSU
- EVGA 500w
Stavo facendo pulizia dei primissimi script e ho aperto un giochino con pygame di circa un anno e mezzo fa con un problema che ancora non mi spiego:
Sostanzialmente alla pressione di barra spaziatrice crea un rettangolo nero che dovrebbe salire e scendere ma vedo che la sua velocità (che dovrebbe essere 10px per 1/25 di secondo) non è costante ma varia se premo o meno le freccette di direzione. Senza considerare che non inizia a cadere a 50px dal bordo ma fa niente.
Anche perché sennò dovrei sistemare tutto il codice (a partire dalla questione dell'indice che fa abbastanza schifo). Insomma volevo solo capire, perché ancora non mi spiego questo problema.
Codice:
import pygame
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
RED = (255, 0, 0)
GREEN = (0, 255, 0)
BLUE = (0, 0, 255)
FPS = 25
pygame.init()
display = pygame.display.set_mode((800, 600))
pygame.display.set_caption("Prova")
p_x = 400
p_y = 360
player_rect = pygame.Rect(p_x,p_y, 30, 40)
lead_x_change = 0
lead_y_change = 0
ascissa_colpo = 0
ordinata_colpo = 320
colpo_rett = pygame.Rect(ascissa_colpo, ordinata_colpo, 30, 40)
mov_colpo = 0
mostra_colpo = False
go_down = False
go_up = False
clock = pygame.time.Clock()
uscita = False
while uscita == False:
indice = 0
for event in pygame.event.get():
if event.type == pygame.QUIT:
uscita = True
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_q:
uscita = True
quit()
if event.key == pygame.K_RIGHT:
lead_x_change += 10
if event.key == pygame.K_LEFT:
lead_x_change += -10
if event.key == pygame.K_SPACE:
if mostra_colpo == False:
mostra_colpo = True
indice = 1
if event.type == pygame.KEYUP:
if event.key in (pygame.K_RIGHT, pygame.K_LEFT):
lead_x_change = 0
if event.key == pygame.K_SPACE:
mov_colpo = 0
if mostra_colpo:
if ordinata_colpo > 10:
mov_colpo -= 10
if ordinata_colpo < 50:
mov_colpo += 10
player_rect.x += lead_x_change
player_rect.y += lead_y_change
colpo_rett.y += mov_colpo
try:
if indice == 1:
colpo_rett.x = player_rect.x
except NameError:
pass
display.fill((86, 170, 239))
pygame.draw.rect(display, GREEN, [0, 400, 800, 800])
pygame.draw.rect(display, RED, player_rect)
if mostra_colpo:
pygame.draw.rect(display, BLACK, colpo_rett)
indice += 1
pygame.display.update()
clock.tick(FPS)
Sostanzialmente alla pressione di barra spaziatrice crea un rettangolo nero che dovrebbe salire e scendere ma vedo che la sua velocità (che dovrebbe essere 10px per 1/25 di secondo) non è costante ma varia se premo o meno le freccette di direzione. Senza considerare che non inizia a cadere a 50px dal bordo ma fa niente.
Anche perché sennò dovrei sistemare tutto il codice (a partire dalla questione dell'indice che fa abbastanza schifo). Insomma volevo solo capire, perché ancora non mi spiego questo problema.