albertohilal

Clase 10 ejercicio-05-A

Dec 8th, 2017
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.30 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 Enter, Espacio, 1,2,3,4 de la parte superior del teclado'''
  7.  
  8. import pygame, sys
  9. VERDE = (0, 255, 0)
  10. AZUL = (0,0,205)
  11. BLANCO = (255, 255, 255)
  12. X=0
  13. Y=1
  14. def ScreenSize():
  15. return (800,600)
  16.  
  17. #aqui se define cual figura se dibuja
  18. #si el diccionario fig toma la clave "forma", dibuja un rectangulo
  19. #de lo contrario una elipse
  20. def Figura(pantalla, fig):
  21. if fig["forma"]:
  22. pygame.draw.rect(pantalla, AZUL,(fig["x"], fig["y"], fig["ancho"], fig["alto"]), 4)
  23. else:
  24. pygame.draw.ellipse(pantalla,VERDE,((fig["x"], fig["y"]), (fig["ancho"], fig["alto"])), 4)
  25.  
  26. #Definimos dibujar la figura, que recibe dos parametros, la pantalla y el estado
  27. # usa la funcion figura definida arriba que recibe por parametros la pantalla
  28. #y el estado de la figura actual definida por el valor del diccionario estado
  29. #entonces recorre un bucle for en el diccionario estado que se define en linea 76
  30. #y nos devuelve cada Figura ( rectangulo o elipse) impresa
  31. def DibujarFigura(pantalla, estado):
  32. Figura(pantalla, estado["figuraActual"])
  33. for figimpresa in estado["figurasImpresas"]:
  34. Figura(pantalla, figimpresa)
  35.  
  36.  
  37.  
  38.  
  39.  
  40. def ProcesarEventos(estado, pantalla):
  41. # Si no hay eventos, el nuevo estado sera igual al anterior
  42. figuraActual= estado["figuraActual"]
  43. figurasImpresas = estado["figurasImpresas"]
  44.  
  45.  
  46. for event in pygame.event.get():
  47. if event.type == pygame.QUIT or event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE:
  48. pygame.quit()
  49. sys.exit()
  50. if event.type == pygame.KEYDOWN and event.key == pygame.K_RIGHT:
  51. figuraActual = dict(figuraActual, x=figuraActual["x"] + 10)
  52. elif event.type == pygame.KEYDOWN and event.key == pygame.K_LEFT:
  53. figuraActual = dict(figuraActual, x=figuraActual["x"] - 10)
  54. elif event.type == pygame.KEYDOWN and event.key == pygame.K_DOWN:
  55. figuraActual = dict(figuraActual, y=figuraActual["y"] + 10)
  56. elif event.type == pygame.KEYDOWN and event.key == pygame.K_UP:
  57. figuraActual = dict(figuraActual, y=figuraActual["y"] - 10)
  58.  
  59. elif event.type == pygame.KEYDOWN and event.key == pygame.K_2:
  60. figuraActual = dict(figuraActual, ancho=figuraActual["ancho"]+10)
  61. elif event.type == pygame.KEYDOWN and event.key == pygame.K_1:
  62. figuraActual = dict(figuraActual, ancho=figuraActual["ancho"]-10)
  63. elif event.type == pygame.KEYDOWN and event.key == pygame.K_3:
  64. figuraActual = dict(figuraActual, alto=figuraActual["alto"]+10)
  65. elif event.type == pygame.KEYDOWN and event.key == pygame.K_4:
  66. figuraActual = dict(figuraActual, alto=figuraActual["alto"]-10)
  67. elif event.type == pygame.KEYDOWN and event.key == pygame.K_RETURN:
  68. figurasImpresas = figurasImpresas + [ dict(figuraActual) ]
  69. elif event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:
  70. # Invertir forma. Si circulo -> rectangulo. Si rectangulo -> circulo
  71. estado["figuraActual"]["forma"] = not estado["figuraActual"]["forma"]
  72.  
  73.  
  74. nuevoEstado = {
  75. "figuraActual" : figuraActual,
  76. "figurasImpresas" : figurasImpresas
  77. }
  78. return nuevoEstado
  79.  
  80. def Ejecutar():
  81. #estado esta definido por un dicionario que tiene por valores un diccionario y
  82. #una lista vacia que se ha de llenar
  83. estado = {
  84. "figuraActual":{"x": 80, "y":0,"ancho":240,"alto":240,"forma":False},
  85. "figurasImpresas":[]
  86. }
  87.  
  88. pygame.init()
  89. pantalla = pygame.display.set_mode(ScreenSize())
  90. clock = pygame.time.Clock()
  91. while True:
  92. estado = ProcesarEventos(estado,pantalla)
  93. pantalla.fill(BLANCO)
  94. DibujarFigura(pantalla,estado)
  95. pygame.display.flip()
  96. tick = clock.tick(60)
  97.  
  98.  
  99. if __name__ == "__main__":
  100. Ejecutar()
Add Comment
Please, Sign In to add comment