tomasfdel

Racket Práctica 2.1

Apr 21st, 2016
307
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Racket 4.86 KB | None | 0 0
  1. NOTA: A los profesores les copa más que ponga todas las condiciones del cond juntas en vez de un if adentro del cond. Me enteré de eso a partir del ejercicio 4.
  2.  
  3. Preguntas: Qué pasa si aumentamos el crecimiento de n? Crece más rápido
  4. Qué pasa si metemos dos on-tick? Tira error
  5. Qué pasa si sacamos la condición en decrementar? Tira error al llegar a n negativo.
  6.  
  7.  
  8. EJERCICIO 1:
  9.  
  10. (define (pantalla n) (cond [(<= n 50) (place-image (circle n "solid" "yellow") 150 150 (empty-scene 300 300))]
  11.                            [(<= n 100) (place-image (circle n "solid" "red") 150 150 (empty-scene 300 300))]
  12.                            [else (place-image (circle n "solid" "green") 150 150 (empty-scene 300 300))]))
  13.  
  14. (define (incrementar n) (if (= n 150) 0 (+ n 1)))
  15.  
  16. (define (decrementar n) (if (= n 0) 100 (- n 1)))
  17.  
  18. (define (radio n tecla) (cond
  19.                           [(char-numeric? (string-ref tecla 0)) (* (string->number tecla) 10)]
  20.                           [else n]))
  21.  
  22.  
  23. (big-bang 100                 ; estado inicial del sistema
  24.           [to-draw pantalla]
  25.           [on-tick incrementar]
  26.           [on-key radio]
  27.           )
  28.  
  29.  
  30.  
  31.  
  32. EJERCICIO 2:
  33.  
  34. (define ANCHO 400)
  35. (define ALTO 200)
  36. (define RADIO 20)
  37. (define DELTA 20)
  38.  
  39. (define (pantalla n) (place-image (circle RADIO "solid" "magenta") (/ ANCHO 2) n (empty-scene ANCHO ALTO)) )
  40.  
  41. (define (mover n tecla) (cond
  42.                           [(key=? tecla "up")    (if (>= n (* 2 RADIO)) (- n DELTA) n)]
  43.                           [(key=? tecla "down")  (if (<= n (- ALTO (* 2 RADIO))) (+ n DELTA) n)]
  44.                           [(key=? tecla " ") (/ ALTO 2)]
  45.                           [else n]))
  46.  
  47. (define (mouse-handler n x y event) (cond [(string=? event "button-down") y]
  48.                                           [else n]))
  49.  
  50.  
  51. (big-bang (/ ALTO 2)
  52.           [to-draw pantalla]
  53.           [on-key mover]
  54.           [on-mouse mouse-handler]
  55. )
  56.  
  57.  
  58.  
  59.  
  60.  
  61. EJERCICIO 3:
  62.  
  63. (place-image/align (text "Arriba a la izquierda" 20 "indigo") 0 0 "left" "top" (empty-scene 800 60))
  64.  
  65. (define (mostrar_texto n) (place-image/align (text n 20 "indigo") 0 0 "left" "top" (empty-scene 800 60)) )
  66.  
  67. (define (agregar_caracter n tecla) (cond
  68.                                      [(key=? tecla " ") (string-append n tecla)]
  69.                                      [(and (char-alphabetic? (string-ref tecla 0)) (= (string-length tecla) 1)) (string-append n tecla)]
  70.                                      [(and (char-numeric? (string-ref tecla 0)) (= (string-length tecla) 1)) (string-append n tecla)]
  71.                                      [(and (key=? tecla "\b") (> (string-length n) 0) ) (substring n 0 (- (string-length n) 1) )]
  72.                                      [else n]) )
  73.  
  74. (big-bang ""
  75.           [to-draw mostrar_texto]
  76.           [on-key agregar_caracter]
  77. )
  78.  
  79.  
  80. EJERCICIO 4:
  81.  
  82. (define AUTO .);Pastebin no acepta la imagen que va en esta linea.
  83. (define LARGO_AUTO (image-width AUTO))
  84. (define DIST_MIN (+ (/ LARGO_AUTO 2) 5) )
  85. (define LARGO 450)
  86. (define ALTO 100)
  87.  
  88.  
  89.  
  90. (define (pantalla n) (place-image AUTO n (/ ALTO 2) (empty-scene LARGO ALTO)) )
  91.  
  92. (define (incrementar n) (if(<= n (- LARGO DIST_MIN) ) (+ n 3) n ) )
  93.  
  94. (define (teclado n tecla) (cond [(key=? tecla " ") DIST_MIN]
  95.                                 [(and (key=? tecla "right") (< n (- LARGO DIST_MIN)) ) (+ n 20) ]
  96.                                 [(and (key=? tecla "left") (> n (+ 20 DIST_MIN)) ) (- n 20)]
  97.                                 [else n] ) )
  98.  
  99. (define (clickear n x y evento) (cond [(string=? evento "button-down") x]
  100.                                           [else n]))
  101.  
  102.  
  103. (big-bang DIST_MIN
  104.     [to-draw pantalla]
  105.         [on-tick incrementar]
  106.         [on-key teclado]
  107.         [on-mouse clickear]
  108. )
  109.  
  110.  
  111. EJERCICIO 5:
  112.  
  113. ;No apto para seres humanos
  114. (define LARGO 600)
  115. (define ALTO 600)
  116. (define COLOR_CIELO "black")
  117. (define FONDO (rectangle LARGO ALTO "solid" COLOR_CIELO) )
  118. (define TAMANO_ESTRELLA 20)
  119. (define COLOR_ESTRELLA "white")
  120. (define ESTRELLA (star TAMANO_ESTRELLA "solid" COLOR_ESTRELLA) )
  121.  
  122.  
  123. (define (pantalla n) (place-image n (/ LARGO 2) (/ ALTO 2) (empty-scene LARGO ALTO)) )
  124.  
  125. (define (agregar_estrella n x y event) (cond [(and (string=? event "button-down") (> y (/ (image-height (scale (+ 1 (* 4 (/ x LARGO))) ESTRELLA)) 2) ) (< y (- LARGO (/ (image-height (scale (+ 1 (* 4 (/ x LARGO))) ESTRELLA)) 2) )) (> x (/ (image-width (scale (+ 1 (* 4 (/ x LARGO))) ESTRELLA)) 2) ) (< x (- LARGO (/ (image-width (scale (+ 1 (* 4 (/ x LARGO))) ESTRELLA)) 2) )) ) (place-image (scale (+ 1 (* 4 (/ x LARGO))) ESTRELLA) x y n)]
  126.                                              [else n]) )
  127.  
  128.  
  129. (define (resetear n tecla) (cond [(key=? tecla " ") FONDO]
  130.                                  [else n]) )
  131.  
  132.  
  133.  
  134. (big-bang FONDO
  135.           [to-draw pantalla]
  136.           [on-mouse agregar_estrella]
  137.           [on-key resetear]
  138. )
Add Comment
Please, Sign In to add comment