Lisp Animate Fonksiyonu Örnekleri

Merhaba arkadaşlar, bu yazımda DrRacket’in animasyonlar yapmamıza olanak sağlayan animate fonksiyonuna bakacağız.

Öncelikle aşağıdaki iki kütüphaneyi eklememiz gerekiyor.

(require 2htdp/image)
(require 2htdp/universe)

Bu kütüphaneler görsel çizdirmek ve animasyon vermek için kullanılacaktır.

Öncelikle aşağı doğru düşen bir top animasyonu yapalım..

(require 2htdp/image)
(require 2htdp/universe)
(define (topDüşür kareNo)
    (place-image 
        (circle 5 "solid" "red")
        50 kareNo
        (empty-scene 100 100)))
(animate topDüşür)

Ekran çıktısı aşağıdaki gibi olacaktır.

animate fonksiyonu top düşürme

Geometrik şekillerin oluşturulmasını buradaki yazımda anlatmıştım.

Top Sektirme

Yukarıda topu düşürdük şimdi de yukarı aşağı seken top yapalım.

(require 2htdp/image)
(require 2htdp/universe)

(define (sekme no sınır)
  (cond
    ((even? (floor (/ no sınır))) (modulo no sınır))
    (else (- sınır (modulo no sınır)))))

(define (topSektir kareNo)
  (place-image
   (circle 10 "solid" "red")
   100 (sekme kareNo 190)
   (empty-scene 200 200)))

(animate topSektir)

Burada sekme fonksiyonu oluşturulan alanın sonuna geldiğini anlamak için yaptık.

topSektir fonksiyonu içindeki (sekme kareNo 190)’ı 10 eksik yazma sebebimiz ise tam alt sınıra değdiğinde yukarı çıkmasını sağlamak içindir. Videosu aşağıda verilmiştir.

İki Boyutta Seken Top

Yukarıda sadece yukarıdan aşağı seken topu yaptık. Bir de iki boyutta seken topu yapalım. Bunun için yapmamız gereken sekme fonksiyonuna gönderdiğimiz kareNo yu iki kere yollamak gibi düşünebilirsiniz.

(require 2htdp/image)
(require 2htdp/universe)

(define (sekme no sınır)
    (cond
         ((even? (floor (/ no sınır))) (modulo no sınır))
         (else (- sınır (modulo no sınır)))
    )
)

(define (topSektir kareNo)
 (place-image
    (circle 10 "solid" "blue")
    (sekme kareNo 290) (sekme kareNo 190)
    (empty-scene 300 200)
 )
)


(animate topSektir)

Çıktısı aşağıdaki gibi olacaktır.

Umarım faydalı olmuştur…

Bunlara Göz Atmak İsteyebilirsiniz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir