Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

117
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda