Advertisement
juaniisuar

Laberinto racket parte1

May 24th, 2016
368
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Racket 6.11 KB | None | 0 0
  1. ;; Integrantes: ... (Nombre y Num. Legajo).
  2.  
  3. (require "extras.rkt")
  4. (require 2htdp/image)
  5. (require 2htdp/universe)
  6.  
  7. ;; Definiciones principales:
  8. ;; ========================
  9.  
  10. (define LABERINTO (bitmap "laberinto.png")) ;...
  11. (define FANTASMA (bitmap "fantasma.png"))
  12. (define JUGADOR (circle 10 "solid" "blue"))
  13. (define OBJETIVO (star 15 "solid" "yellow"))
  14. (define ALTO (image-height LABERINTO))
  15. (define ANCHO (image-width LABERINTO))
  16. (define CENTRO (make-posn (/ ANCHO 2) (/ ALTO 2)))
  17. (define POS-INICIAL (make-posn 15 35))
  18. (define POS-OBJETIVO (make-posn 930 460))
  19. (define COLOR-FONDO "red")
  20. (define DELTA-MOV 10)
  21. (define TIMER-INICIAL 5000)
  22. (define VIDAS-INICIAL 3)
  23.  
  24.  
  25. ;; Estado global del programa:
  26. ;; ==========================
  27. (define-struct estado [Posj Posf Vidas Timer])
  28. ; estado es (make-estado posn posn Image)
  29. ; Posj es un posn que representa la posición en el plano del jugador
  30. ; Posf es un posn que representa la posición del fantasma
  31. ; Vidas es la cantidad de intentos que tiene el jugador antes de perder
  32. ; Timer es el tiempo que falta antes de que el jugador pierda
  33.  
  34.  
  35. ;; actualizar-timer : Number Estado -> Estado
  36. ;; ..................................
  37.  
  38. ;; actualizar-vidas : Number Estado -> Estado
  39. ;; ..................................
  40.  
  41. ;; actualizar-fantasma : Posn Estado -> Estado
  42. ;; ..................................
  43.  
  44. ;; actualizar-jugador : Posn Estado -> Estado
  45. ;; ..................................
  46.  
  47. ;; Imprimir en la pantalla:
  48. ;; =======================
  49. ;; dibujar-imagen : Imagen Posn Imagen -> Imagen
  50. ; ...
  51. (define (dibujar-imagen Im1 Pos Im2) (place-image Im1 (posn-x Pos) (posn-y Pos) Im2))
  52.  
  53. ;; dibujar-laberinto : Imagen -> Imagen
  54. ; ...
  55. (define (dibujar-laberinto Im1) (dibujar-imagen LABERINTO CENTRO Im1))
  56.  
  57. ;; dibujar-jugador : Estado Imagen -> Imagen
  58. ;; ..................................
  59. (define (dibujar-jugador S Im1) (dibujar-imagen JUGADOR (estado-Posj S) Im1))
  60.  
  61. ;; dibujar-objetivo : Imagen -> Imagen
  62. ;; ..................................
  63. (define (dibujar-objetivo Im1) (dibujar-imagen OBJETIVO POS-OBJETIVO Im1))
  64.  
  65. ;; dibujar-timer : Estado Imagen -> Imagen
  66. ;; ..................................
  67.  
  68. ;; dibujar-vidas : Estado Imagen -> Imagen
  69. ;; ..................................
  70.  
  71. ;; dibujar-texto : String Imagen -> Imagen
  72. ;; ..................................
  73.  
  74. ;; dibujar-fantasma : Estado Imagen -> Imagen
  75. ;; ..................................
  76. (define (dibujar-fantasma S Im1) (dibujar-imagen FANTASMA (estado-Posf S) Im1))
  77.  
  78. ;; fondo : Color -> Imagen
  79. ;; ..................................
  80. (define (fondo C) (empty-scene ANCHO ALTO C))
  81.  
  82. ;; imprimir : Estado Color -> Imagen
  83. ;; ..................................
  84. (define (imprimir S C) (dibujar-jugador S (dibujar-objetivo (dibujar-laberinto (fondo C) ) ) ) )
  85.  
  86. ;; grafica : Estado -> Imagen
  87. ;; ..................................
  88. (define (grafica S) (imprimir S COLOR-FONDO) )
  89.  
  90. ;; Mover objetos:
  91. ;; =============
  92. ;; move-up : Posn Number -> Posn
  93. ;; ..................................
  94. (define (move-up Pos N) (make-posn (posn-x Pos) (- (posn-y Pos) N)))
  95.  
  96. ;; move-down : Posn Number -> Posn
  97. ;; ..................................
  98. (define (move-down Pos N) (make-posn (posn-x Pos) (+ (posn-y Pos) N)))
  99.  
  100. ;; move-left : Posn Number -> Posn
  101. ;; ..................................
  102. (define (move-left Pos N) (make-posn (- (posn-x Pos) N) (posn-y Pos) ))
  103.  
  104. ;; move-right : Posn Number -> Posn
  105. ;; ..................................
  106. (define (move-right Pos N) (make-posn (+ (posn-x Pos) N) (posn-y Pos) ))
  107.  
  108. ;; mover-fantasma : Posn -> Posn
  109. ;; ..................................
  110.  
  111. ;; Posiciones:
  112. ;; ==========
  113. ;; dentro-escena? : Posn Imagen -> Boolean
  114. ;; ..................................
  115. (define (dentro-escena? Pos Im1) (cond [(< (- (posn-x Pos) (/ (image-width Im1) 2)) 0) #f]
  116.                                        [(> (+ (posn-x Pos) (/ (image-width Im1) 2)) ANCHO) #f]
  117.                                        [(< (- (posn-y Pos) (/ (image-height Im1) 2)) 0) #f]
  118.                                        [(> (+ (posn-y Pos) (/ (image-height Im1) 2)) ALTO) #f]
  119.                                        [else #t]) )
  120.  
  121. ;; posible-pos? : Posn Imagen -> Boolean
  122. ;; ..................................
  123. (define (posible-pos? Pos Im1) ( if (and (dentro-escena? Pos Im1) (not (interseca? Pos Im1 CENTRO LABERINTO))) #t #f ) )
  124.  
  125. ;; Eventos del teclado:
  126. ;; ===================
  127. ;; manejador-tecla : Estado Tecla -> Estado
  128. ;; ..................................
  129. (define (manejador-tecla S Key) (cond [(string=? Key "left") (if (posible-pos? (move-left (estado-Posj S) DELTA-MOV) JUGADOR) (make-estado (move-left (estado-Posj S) DELTA-MOV) (estado-Posf S) (estado-Vidas S) (estado-Timer S)) S)]
  130.                                       [(string=? Key "right") (if (posible-pos? (move-right (estado-Posj S) DELTA-MOV) JUGADOR) (make-estado (move-right (estado-Posj S) DELTA-MOV) (estado-Posf S) (estado-Vidas S) (estado-Timer S)) S)]
  131.                                       [(string=? Key "up") (if (posible-pos? (move-up (estado-Posj S) DELTA-MOV) JUGADOR) (make-estado (move-up (estado-Posj S) DELTA-MOV) (estado-Posf S) (estado-Vidas S) (estado-Timer S)) S)]
  132.                                       [(string=? Key "down") (if (posible-pos? (move-down (estado-Posj S) DELTA-MOV) JUGADOR) (make-estado (move-down (estado-Posj S) DELTA-MOV) (estado-Posf S) (estado-Vidas S) (estado-Timer S)) S)]
  133.                                       [else S]) )
  134.  
  135. ;; Otros handlers:
  136. ;; ==============
  137. ;; manejador-tick : Estado -> Estado
  138. ;; ..................................
  139.  
  140. ;; Condiciones de Terminación:
  141. ;; ==========================
  142. ;; interseca-fantasma? : Estado -> Boolean
  143. ;; ..................................
  144.  
  145. ;; objetivo? : Estado -> Boolean
  146. ;; ..................................
  147.  
  148. ;; fin? : Estado -> Boolean
  149. ;; ..................................
  150.  
  151.  
  152. ;; estado-inicial : Estado
  153. ;; ..................................
  154. (define estado-inicial (make-estado POS-INICIAL (make-posn 50 50) VIDAS-INICIAL TIMER-INICIAL))
  155.  
  156.  (big-bang estado-inicial
  157.      [to-draw grafica]
  158.      [on-key manejador-tecla]
  159. ;;     [on-tick manejador-tick]
  160. ;;     [stop-when fin?]
  161.      )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement