Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

116
Views
Problema con la desaceleración de la pelota en el juego de pong

He estado haciendo pong con pygame y conseguí que la pelota rebotara alrededor de la pantalla y en las paletas. Sin embargo, la velocidad es demasiado alta y quiero disminuirla. Así es como se ve el código para el objeto Ball:

 import pygame as pg BLACK = (0, 0, 0) class Ball(pg.sprite.Sprite): def __init__(self, color, width, height, radius): super().__init__() self.x_vel = 1 self.y_vel = 1 self.image = pg.Surface([width * 2, height * 2]) self.image.fill(BLACK) self.image.set_colorkey(BLACK) pg.draw.circle(self.image, color, center=[width, height], radius=radius) self.rect = self.image.get_rect() def update_ball(self): self.rect.x += self.x_vel self.rect.y += self.y_vel

Si trato de establecer la velocidad como un flotador, detiene la pelota por completo. ¿Alguien me puede ayudar?

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Usa pygame.time.Clock para controlar los fotogramas por segundo y, por lo tanto, la velocidad del juego.

El método tick() de un objeto pygame.time.Clock retrasa el juego de tal manera que cada iteración del ciclo consume el mismo período de tiempo. Ver pygame.time.Clock.tick() :

Este método debe llamarse una vez por cuadro.

Eso significa que el bucle:

 clock = pygame.time.Clock() run = True while run: clock.tick(100)

corre 100 veces por segundo.


Dado que se supone que pygame.Rect representa un área en la pantalla, un objeto pygame.Rect solo puede almacenar datos integrales.

Las coordenadas de los objetos Rect son todos enteros. [...]

La parte fraccionaria de las coordenadas se pierde cuando el movimiento del objeto se asigna al objeto Rect .

Si desea almacenar posiciones de objetos con precisión de punto flotante, debe almacenar la ubicación del objeto en variables separadas, respectivamente, atributos y sincronizar el objeto pygame.Rect . round las coordenadas y asígnalas a la ubicación del rectángulo:

 class Ball(pg.sprite.Sprite): def __init__(self, color, width, height, radius): # [...] self.rect = self.image.get_rect() self.x = self.rect.x self.y = self.rect.y def update_ball(self): self.x += self.x_vel self.y += self.y_vel self.rect.x = round(self.x) self.rect.y = round(self.y)
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!