albertohilal

Clase 10 ejercicio-04

Oct 30th, 2017
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.71 KB | None | 0 0
  1.  
  2. import pygame
  3. import sys
  4.  
  5. BLANCO = (255, 255, 255)
  6. ROJO = (255, 0, 0)
  7.  
  8. MEDIDA_PANTALLA = (640, 480)
  9. X = 0
  10. Y = 1
  11. ANCHO = 0
  12. ALTO = 1
  13.  
  14. def Pelota(pantalla, posicion,dimension):
  15. pygame.draw.ellipse(pantalla, ROJO, (posicion,dimension), 5)
  16.  
  17. def DibujarFigura(pantalla, figura):
  18.  
  19. # Va a dibujar distintas figuras
  20. # dependiendo del estado de la posicion y dimension.
  21. Pelota(pantalla, figura["posicion"],figura["dimension"])
  22.  
  23. def DibujarPantalla(pantalla, estado):
  24.  
  25. # Dibuja la figura actual y cada figura de la lista
  26. # de figuras que ya han sido impresas
  27. DibujarFigura(pantalla, estado["figuraActual"])
  28. for figura in estado["figurasImpresas"]:
  29. DibujarFigura(pantalla, figura)
  30.  
  31. def actualizarEstado(estado):
  32. figuraActual = estado["figuraActual"]
  33. figurasImpresas = estado["figurasImpresas"]
  34.  
  35. imprimir = False
  36. Pos = figuraActual["posicion"] # Creamos una variable y le asignamos una clave del diccionario estado
  37. Dim = figuraActual["dimension"]
  38.  
  39. for evento in pygame.event.get():
  40. if evento.type == pygame.KEYDOWN:
  41.  
  42.  
  43. #mover
  44. if evento.key == pygame.K_LEFT:
  45. Pos = (figuraActual["posicion"][X]-10, figuraActual["posicion"][Y])
  46. if evento.key == pygame.K_RIGHT:
  47. Pos = (figuraActual["posicion"][X]+10, figuraActual["posicion"][Y])
  48. if evento.key == pygame.K_UP:
  49. Pos = (figuraActual["posicion"][X], figuraActual["posicion"][Y]-10)
  50. if evento.key == pygame.K_DOWN:
  51. Pos = (figuraActual["posicion"][X], figuraActual["posicion"][Y]+10)
  52.  
  53. #dimension
  54. if evento.key == pygame.K_KP2:
  55. Dim = (figuraActual ["dimension"][ANCHO], figuraActual ["dimension"][ALTO]+10)
  56. if evento.key == pygame.K_KP8:
  57. Dim = (figuraActual ["dimension"][ANCHO], figuraActual ["dimension"][ALTO]-10)
  58. if evento.key == pygame.K_KP6:
  59. Dim = (figuraActual ["dimension"][ANCHO]+10, figuraActual ["dimension"][ALTO])
  60. if evento.key == pygame.K_KP4:
  61. Dim = (figuraActual ["dimension"][ANCHO]-10, figuraActual ["dimension"][ALTO])
  62.  
  63. # Imprime
  64. if evento.key == pygame.K_RETURN: # Enter
  65. imprimir = True
  66.  
  67. if evento.type == pygame.QUIT:
  68. pygame.quit()
  69.  
  70. if imprimir:
  71. nuevaFiguraActual = { "posicion": (80, 0), "dimension": (240, 240) } #se almacena en un diccionario
  72. nuevaFiguraImpresa = { "posicion": Pos, "dimension": Dim } #se almacena en un diccionario
  73.  
  74. nuevoEstado = {
  75. "figuraActual" : nuevaFiguraActual,
  76. "figurasImpresas": figurasImpresas + [nuevaFiguraImpresa]
  77. }
  78. else:
  79. nuevaFiguraActual = { "posicion": Pos, "dimension": Dim }
  80. nuevoEstado = {
  81. "figuraActual": nuevaFiguraActual,
  82. "figurasImpresas": figurasImpresas
  83. }
  84.  
  85. return nuevoEstado
  86.  
  87.  
  88. #El programa primero llena la pantalla
  89. #luego dibuja la pantalla, en el estado que tiene el programa
  90. #el estado depende de la "figuraActual" y de
  91. #las "figurasImpresas" si las hubiera'''
  92.  
  93. def EjecutarCiclo():
  94.  
  95. estado = {
  96. "figuraActual": { "posicion" : (80,0), "dimension" : (240,240) },
  97. "figurasImpresas" : []
  98. }
  99.  
  100. pygame.init()
  101. pantalla = pygame.display.set_mode(MEDIDA_PANTALLA)
  102. reloj = pygame.time.Clock()
  103. while True:
  104. pantalla.fill(BLANCO)
  105. DibujarPantalla(pantalla, estado)
  106. estado = actualizarEstado(estado)
  107. pygame.display.flip()
  108. tick = reloj.tick(60)
  109.  
  110. if __name__ == "__main__":
  111. EjecutarCiclo()
Advertisement
Add Comment
Please, Sign In to add comment