albertohilal

Clase 10 ejercicio-05-B

Dec 8th, 2017
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.08 KB | None | 0 0
  1. '''Programa los procedimientos y funciones necesarios para permitir al usuario del programa
  2. cambiar de tipo de figura presionando la tecla \espacio".
  3. Para ello utiliza el evento pertinente
  4. y un nuevo atributo del estado que indique de que tipo es cada figura. Sugerencia:
  5. mantenganse en las figuras simples como el rectangulo y la ellipsis.
  6. Utiliza las teclas , Flechas,Enter, Espacio, 1,2,3,4 de la parte superior del teclado'''
  7.  
  8. import pygame
  9. import sys
  10.  
  11. BLANCO = (255,255,255)
  12. VERDE = (0,255,0)
  13. AZUL = (0,0,255)
  14.  
  15. MEDIDA_PANTALLA = (640,480)
  16.  
  17. X = 0
  18. Y = 1
  19.  
  20. def Pelota(pantalla, posicion, dimension):
  21. pygame.draw.ellipse (pantalla, VERDE, (posicion, dimension), 5)
  22.  
  23. def Rectangulo(pantalla, posicion, dimension):
  24. pygame.draw.rect (pantalla, AZUL, (posicion, dimension), 5)
  25.  
  26. def DibujarFigura(pantalla, posicion, dimension, forma):
  27.  
  28. if forma == "pelota":
  29. forma = Pelota(pantalla, posicion, dimension)
  30. else:
  31. forma = Rectangulo(pantalla, posicion, dimension)
  32.  
  33.  
  34. def DibujarPantalla(pantalla, estado):
  35. DibujarFigura(pantalla, estado ["figuraActual"]["posicion"],estado ["figuraActual"]["dimension"], estado ["figuraActual"]["forma"])
  36.  
  37. for figura in estado ["figurasImpresas"]:
  38. DibujarFigura (pantalla, figura ["posicion"], figura ["dimension"], figura["forma"])
  39.  
  40.  
  41. def actualizarEstado(estado):
  42.  
  43. figuraActual = estado["figuraActual"]
  44. figurasImpresas = estado ["figurasImpresas"]
  45. forma = ["forma"]
  46.  
  47. for evento in pygame.event.get():
  48. if evento.type == pygame.KEYDOWN:
  49.  
  50. #mover
  51. if evento.key == pygame.K_LEFT:
  52. figuraActual["posicion"] = (figuraActual["posicion"][X]-10, figuraActual["posicion"][Y])
  53. if evento.key == pygame.K_RIGHT:
  54. figuraActual ["posicion"] = (figuraActual["posicion"][X]+10, figuraActual["posicion"][Y])
  55. if evento.key == pygame.K_UP:
  56. figuraActual ["posicion"] = (figuraActual["posicion"][X], figuraActual["posicion"][Y]-10)
  57. if evento.key == pygame.K_DOWN:
  58. figuraActual ["posicion"] = (figuraActual["posicion"][X], figuraActual["posicion"][Y]+10)
  59.  
  60. # dimension
  61. if evento.key == pygame.K_1:
  62. figuraActual ["dimension"] = (figuraActual ["dimension"][X]-10, figuraActual ["dimension"][Y])
  63. if evento.key == pygame.K_2:
  64. figuraActual["dimension"] = (figuraActual ["dimension"][X]+10, figuraActual ["dimension"][Y])
  65. if evento.key == pygame.K_3:
  66. figuraActual ["dimension"] = (figuraActual ["dimension"][X], figuraActual ["dimension"][Y]-10)
  67. if evento.key == pygame.K_4:
  68. figuraActual ["dimension"] = (figuraActual ["dimension"][X], figuraActual ["dimension"][Y]+10)
  69.  
  70. # cambiar forma
  71. if evento.key == pygame.K_SPACE:
  72. if figuraActual ["forma"] == "pelota":
  73. figuraActual ["forma"] = "rectangulo"
  74.  
  75. else:
  76. figuraActual["forma"] = "pelota"
  77.  
  78.  
  79.  
  80. #imprimir
  81. if evento.key == pygame.K_RETURN:
  82. figurasImpresas = figurasImpresas + [dict(figuraActual)]
  83.  
  84. if evento.type == pygame.QUIT:
  85. pygame.quit()
  86.  
  87. nuevoEstado = {
  88. "figuraActual" : figuraActual,
  89. "figurasImpresas" : figurasImpresas,
  90. "forma" : forma
  91. }
  92.  
  93.  
  94. return nuevoEstado
  95.  
  96.  
  97. def EjecutarCiclo():
  98. estado = {
  99. "figuraActual" : {"posicion" : (80,0), "dimension" : (240,240), "forma" : "circulo"},
  100. "figurasImpresas" : []
  101.  
  102. }
  103.  
  104.  
  105. pygame.init()
  106. pantalla = pygame.display.set_mode(MEDIDA_PANTALLA)
  107. reloj = pygame.time.Clock()
  108. while True:
  109. pantalla.fill(BLANCO)
  110. DibujarPantalla(pantalla, estado)
  111.  
  112. estado = actualizarEstado(estado)
  113. pygame.display.flip()
  114. tick = reloj.tick(60)
  115.  
  116. if __name__ == "__main__":
  117. EjecutarCiclo()
Advertisement
Add Comment
Please, Sign In to add comment