tomasfdel

Racket Práctica 2.2

Apr 21st, 2016
291
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Racket 7.47 KB | None | 0 0
  1. EJ 2)
  2.  
  3. (define (dist-origen n) (sqrt (+ (expt (posn-x n) 2) (expt (posn-y n) 2) )) )
  4.  
  5. EJ 3)
  6.  
  7. (define ANCHO 400)
  8. (define ALTO 200)
  9. (define RADIO 20)
  10. (define DELTA 10)
  11.  
  12. (define INICIAL (make-posn (/ ANCHO 2) (/ ALTO 2) ) )
  13.  
  14. (define (pantalla n) (place-image (circle RADIO "solid" "magenta") (posn-x n) (posn-y n) (empty-scene ANCHO ALTO)) )
  15.  
  16. (define (mover n tecla) (cond
  17.                           [(and (key=? tecla "up") (>= (posn-y n) (+ RADIO DELTA)) ) (make-posn (posn-x n) (- (posn-y n) DELTA) )]
  18.                           [(and (key=? tecla "down") (<= (posn-y n) (- ALTO (+ RADIO DELTA))) ) (make-posn (posn-x n) (+ (posn-y n) DELTA) )]
  19.                           [(and (key=? tecla "left") (>= (posn-x n) (+ RADIO DELTA)) ) (make-posn (- (posn-x n) DELTA) (posn-y n))]
  20.                           [(and (key=? tecla "right") (<= (posn-x n) (- ANCHO (+ RADIO DELTA))) ) (make-posn (+ (posn-x n) DELTA) (posn-y n))]
  21.                           [(key=? tecla " ") INICIAL]
  22.                           [else n]))
  23.  
  24. (define (mouse-handler n x y event) (cond [(string=? event "button-down") (make-posn x y)]
  25.                                           [else n]))
  26.  
  27.  
  28. (big-bang INICIAL
  29.           [to-draw pantalla]
  30.           [on-key mover]
  31.           [on-mouse mouse-handler]
  32. )
  33.  
  34. EJ 4)
  35.  
  36. (define ANCHO 700)
  37. (define ALTO 350)
  38. (define MOSCA .)
  39. (define TEXTO (text "MOSCA  ATRAPADA" 60 "red") )
  40. (define ALTO_MOSCA (/ (image-height MOSCA) 2))
  41. (define ANCHO_MOSCA (/ (image-width MOSCA) 2))
  42. (define DELTA 20)
  43. (define GAMMA 50)
  44. (define INICIAL (make-posn (/ ANCHO 2) (/ ALTO 2) ) )
  45. (define FINAL (make-posn -1 -1) )
  46.  
  47.  
  48.  
  49. (define (elegir-random a b) (if (= (random 2) 1) a b))
  50.  
  51. (define (distancia_click n click) (sqrt (+ (expt (- (posn-x n) (posn-x click)) 2) (expt (- (posn-y n) (posn-y click) ) 2) )))
  52.  
  53. (define (pantalla n) (if (= (posn-x n) -1) (place-image TEXTO (/ ANCHO 2) (/ ALTO 2) (empty-scene ANCHO ALTO)) (place-image MOSCA (posn-x n) (posn-y n) (empty-scene ANCHO ALTO)) ))
  54.  
  55.  
  56. (define (LIMITAR_X x) (cond [(< x ANCHO_MOSCA) ANCHO_MOSCA]
  57.                             [(> x (- ANCHO ANCHO_MOSCA)) (- ANCHO ANCHO_MOSCA)]
  58.                             [else x]) )
  59.  
  60. (define (LIMITAR_Y y) (cond [(< y ALTO_MOSCA) ALTO_MOSCA]
  61.                             [(> y (- ALTO ALTO_MOSCA)) (- ALTO ALTO_MOSCA)]
  62.                             [else y]) )
  63.  
  64.  
  65. (define (MOVERSE_EN_X n) (if (string=? (elegir-random "Izquierda" "Derecha") "Izquierda") (LIMITAR_X (- (posn-x n) DELTA)) (LIMITAR_X (+ (posn-x n) DELTA)) ) )
  66. (define (MOVERSE_EN_Y n) (if (string=? (elegir-random "Arriba" "Abajo") "Arriba") (LIMITAR_Y (- (posn-y n) DELTA)) (LIMITAR_Y (+ (posn-y n) DELTA)) ) )
  67.  
  68.  
  69.  
  70. (define (moverse n) (let ([EleccionX (elegir-random "Quedarse" "Moverse")]
  71.                           [EleccionY (elegir-random "Quedarse" "Moverse")])
  72.  
  73.                      (cond
  74.                       [(and (string=? EleccionX "Moverse") (string=? EleccionY "Moverse") ) (make-posn (MOVERSE_EN_X n) (MOVERSE_EN_Y n))]
  75.                       [(and (string=? EleccionX "Moverse") (string=? EleccionY "Quedarse") ) (make-posn (MOVERSE_EN_X n) (posn-y n))]
  76.                       [(and (string=? EleccionX "Quedarse") (string=? EleccionY "Moverse") ) (make-posn (posn-x n) (MOVERSE_EN_Y n))]
  77.                       [else n]
  78.                       ) ) )
  79.  
  80.  
  81. (define (clickear n x y event) (if (and (string=? event "button-down") (<= (distancia_click n (make-posn x y)) GAMMA )) FINAL n))
  82.  
  83.  
  84. (define (terminar n) (if (= (posn-x n) -1) #t #f))
  85.  
  86.  
  87. (big-bang INICIAL
  88.           [to-draw pantalla]
  89.           [on-mouse clickear]
  90.           [on-tick moverse]
  91.           [stop-when terminar]
  92.           )
  93.  
  94.  
  95. EJ 5)
  96.  
  97. (define AUTO .);Puntito porque Pastebin es choto
  98. (define LARGO_AUTO (/ (image-width AUTO) 2))
  99. (define DIST_MIN (+ LARGO_AUTO 5) )
  100. (define VEL_INICIAL 3)
  101. (define-struct auto [hpos vel])
  102. (define INICIAL (make-auto DIST_MIN VEL_INICIAL))
  103. (define LARGO 600)
  104. (define ALTO 100)
  105. (define ESCENA_BLANCA (empty-scene LARGO ALTO))
  106.  
  107.  
  108. (define (pantalla n) (place-image AUTO (auto-hpos n) (/ ALTO 2) ESCENA_BLANCA) )
  109.  
  110. (define (incrementar n) (if(<= (auto-hpos n) (- LARGO DIST_MIN (auto-vel n) )) (make-auto (+ (auto-hpos n) (auto-vel n)) (auto-vel n) ) n ) )
  111.  
  112. (define (teclado n tecla) (cond [(key=? tecla " ") INICIAL]
  113.                                 [(and (key=? tecla "right") (< (auto-hpos n) (- LARGO DIST_MIN)) ) (make-auto (+ (auto-hpos n) 20) (auto-vel n) ) ]
  114.                                 [(and (key=? tecla "left") (> (auto-hpos n) (+ 20 DIST_MIN)) ) (make-auto (- (auto-hpos n) 20) (auto-vel n) )]
  115.                                 [(key=? tecla "up") (make-auto (auto-hpos n) (+ (auto-vel n) 1) )]
  116.                                 [(and (key=? tecla "down") (> (auto-vel n) 0)) (make-auto (auto-hpos n) (- (auto-vel n) 1) )]
  117.                                 [else n] ) )
  118.  
  119. (define (clickear n x y evento) (cond [(and (string=? evento "button-down") (> x DIST_MIN) (< x (- LARGO DIST_MIN) ) ) (make-auto x (auto-vel n))]
  120.                                           [else n]))
  121.  
  122.  
  123. (big-bang INICIAL
  124.         [to-draw pantalla]
  125.         [on-tick incrementar]
  126.         [on-key teclado]
  127.         [on-mouse clickear]
  128. )
  129.  
  130. EJ 6)
  131.  
  132. (define ANCHO 800)
  133. (define ALTO 60)
  134. (define FONDO (empty-scene ANCHO ALTO) )
  135. (define-struct texto [s color tam])
  136. (define COLOR1 "indigo")
  137. (define COLOR2 "blue")
  138. (define COLOR3 "red")
  139. (define COLOR4 "green")
  140. (define COLOR5 "orange")
  141. (define COLOR6 "black")
  142. (define TAM_INICIAL 20)
  143. (define INICIAL (make-texto "" COLOR1 TAM_INICIAL) )
  144.  
  145. (define (mostrar_texto n) (place-image/align (text (texto-s n) (texto-tam n) (texto-color n)) 0 0 "left" "top" FONDO ) )
  146.  
  147. (define (Agregar n tecla) (make-texto (string-append (texto-s n) tecla) (texto-color n) (texto-tam n) ))
  148.  
  149. (define (Quitar_Uno n) (make-texto (substring (texto-s n) 0 (- (string-length (texto-s n)) 1) ) (texto-color n) (texto-tam n)) )
  150.  
  151. (define (Cambiar_Color n color) (make-texto (texto-s n) color (texto-tam n) ) )
  152.  
  153. (define (Agrandar n) (make-texto (texto-s n) (texto-color n) (+ (texto-tam n) 1) ) )
  154.  
  155. (define (Achicar n) (make-texto (texto-s n) (texto-color n) (- (texto-tam n) 1) ) )
  156.  
  157.  
  158. (define (agregar_caracter n tecla) (cond
  159.                                      [(key=? tecla " ") (Agregar n tecla)]
  160.                                      [(and (char-alphabetic? (string-ref tecla 0)) (= (string-length tecla) 1)) (Agregar n tecla)]
  161.                                      [(and (char-numeric? (string-ref tecla 0)) (= (string-length tecla) 1)) (Agregar n tecla)]
  162.                                      [(and (key=? tecla "\b") (> (string-length (texto-s n)) 0) ) (Quitar_Uno n) ]
  163.                                      [(key=? tecla "f1") (Cambiar_Color n COLOR1)]
  164.                                      [(key=? tecla "f2") (Cambiar_Color n COLOR2)]
  165.                                      [(key=? tecla "f3") (Cambiar_Color n COLOR3)]
  166.                                      [(key=? tecla "f4") (Cambiar_Color n COLOR4)]
  167.                                      [(key=? tecla "f5") (Cambiar_Color n COLOR5)]
  168.                                      [(key=? tecla "f6") (Cambiar_Color n COLOR6)]
  169.                                      [(and (key=? tecla "up") (< (texto-tam n) 60 ) ) (Agrandar n)]
  170.                                      [(and (key=? tecla "down") (> (texto-tam n) 1 ) ) (Achicar n)]
  171.                                      [else n]) )
  172.  
  173. (big-bang INICIAL
  174.           [to-draw mostrar_texto]
  175.           [on-key agregar_caracter]
  176. )
  177. ;   #YouCantSeeMe #MyTimeIsNow
Add Comment
Please, Sign In to add comment