domingo, 10 de febrero de 2008

Controlar la velocidad del juego

Dentro del bucle principal el codigo se lee miles de veces por segundo, y si dibujamos al personaje dentro del bucle principal, el personaje se estaria dibujando miles de veces por segundo, mucho mas de lo que necesitamos, ademas el gasto de recursos de dibujar mil elementos cada segundo es monstruoso, y ya que estamos en la onda ecologica y gastar menos corriente electrica para disminuir el calentamiento global o bien si eso no te interesa y quieres asegurarte que tu juego corra a la misma velocidad independiente si es un pentium de 400 MHz o un pentium 4 de 2.0 GHz entonces debes agregar un reloj al juego, y esto se hace de la siguiente forma:

clock = pygame.time.Clock()

ahora que ya tienes un reloj, dentro del ciclo principal tienes que hacerlo marcar a la velocidad que quieres que corra tu juego, o sea si quieres que tu juego corra a 60 ciclos por segundo, o mejor dicho 60 cuadros por segundo, entonces escribes dentro del bucle principal

clock.tick(60)

y eso seria todo.

Retomando el ejemplo anterior donde dibujabamos un circulo en la pantalla, agregando un reloj el codigo quedaria asi:


#Codigo----
import pygame
from sys import exit

SCREEN = pygame.display.set_mode((800, 600))
clock = pygame.time.Clock()
posX = 400
posY = 300


while True:
clock.tick(60)
SCREEN.fill((0,0,0))
pygame.draw.circle(SCREEN, (255,255,255), (posX, posY), 50)
pygame.display.update()

for event in pygame.event.get():
if event.type == pygame.QUIT:
exit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
posX = posX - 10
elif event.key == pygame.K_RIGHT:
posX = posX + 10

#-------


Los dejo por hoy, que tengan buenas noches.

1 comentario:

DV dijo...

Hola, ¿sabes como se puede hacer eso mismo pero con pyopengl?

Por cierto, me gusta mucho tu blog