Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pygame
- import sys
- BLANCO = (255, 255, 255)
- ROJO = (255, 0, 0)
- X = 0
- Y = 1
- ABAJO = 1
- ARRIBA = -1
- MEDIDA_PANTALLA = (640, 480)
- def Pelota(pantalla, posicion):
- pygame.draw.circle(pantalla, ROJO, posicion, 50)
- def DibujarPantalla(pantalla, estado):
- Pelota(pantalla, estado["posicion"])
- '''La actualizacion del estado se torna un poco mas compleja dado que es preciso realizar la
- actualizacion de ambos elementos del estado: por un lado actualizar la direccion y por otro
- lado actualizar la posicion para que la figura avance en la direccion establecida.'''
- '''El primer paso en la actualizacion entonces sera evaluar si es necesario realizar el cambio
- de direccion. Hay dos momentos para hacerlo: cuando la figura entra en contacto con la
- parte inferior de la pantalla y cuando la figura vuelve a la posicion inicial. Fuera de estos dos
- casos, la direccion debe permanecer inmutable.'''
- def actualizarEstado(estado):
- if estado["posicion"][Y] >= 480 - 50: # Si llega al Borde de pantalla
- dir = ARRIBA
- elif estado["posicion"][Y] <= 240:
- # Si alcanza la posicion inicial
- dir = ABAJO
- else:
- # De lo contrario, continuamos en la misma direccion
- dir = estado["direccion"]
- pos = (estado["posicion"][X], estado["posicion"][Y] + dir)
- '''El valor 480 corresponde al alto de pantalla.
- Dado que la posicion establece el centro de la pelota,
- es necesario restarle el radio de la pelota (50)
- para que la pelota no traspase el borde inferior de la pantalla.
- El valor 240 es la mitad del valor de la altura de pantalla
- y tambien es la posicion inicial de la pelota en el eje y.
- El segundo paso sera aplicar la actualizacion de la posicion de acuerdo a la direccion de
- la pelota:'''
- '''Si la direccion es ABAJO, entonces hay que sumarle una unidad a la coordenada y de la
- posicion de la pelota. Caso contrario, si la direccion es ARRIBA,
- se debe restar una unidad a la coordenada y de la posicion de la pelota.
- Este ultimo codigo lo simplicaremos, aprovechando que las constantes ABAJO y ARRIBA
- son los numeros 1 y -1'''
- # Retorno el nuevo estado
- return {
- "posicion" : pos,
- "direccion" : dir
- }
- def EjecutarCiclo():
- estado = {
- "posicion": (320, 240),
- "direccion": ABAJO
- }
- pygame.init()
- pantalla = pygame.display.set_mode( MEDIDA_PANTALLA )
- reloj = pygame.time.Clock()
- while True:
- estado = actualizarEstado(estado)
- pantalla.fill(BLANCO)
- DibujarPantalla(pantalla, estado)
- pygame.display.flip()
- tick = reloj.tick(60)
- if __name__ == "__main__":
- EjecutarCiclo()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement