Basic ile animasyon yapma örnekleri

Başlatan ekremsenturk, 21 Nisan 2015 - 18:56:18

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

ekremsenturk

Buraya eklediğim Animasyon'lar sdlBasic için yazılmış. SdlBasic'i Ubuntu ve Mint'te, Yazılım Merkezi'nden indirebilirsiniz. Kod'ların işlevlerini sdlBasic yardım bölümünden inceleyebilirsiniz. Yardım bölümünün yeterli ve açıklayıcı olduğunu düşündüğüm için, işlemleri açıklamaya gerek duymadım. Böyle bir girişim çok vakit alıcı oluyor ve de okuyucu için de ince detaylar okumak, yorucu ve caydırıcı olabilir.


Dikkat edilmesi gerekenler:

Dosyaları kayıt ederken, dosya isimlerinde Türkçe karakterler kullanmayın. Ve de dosya adına ".sdlbas" uzantısını ekleyin. (Örnek= ciceksiparisi.sdlbas)

Uygulama içinde Türkçe karakterler içeren metin kullanılıyorsa, dosyayı kayıt ederken, önce "File / Encoding / UTF-8 Cookie" seçin. Türkçe karakterler, sdlBasic editöründe yine de farklı karakterler olarak görünecektir. Ancak kayıt edilmiş dosyada doğru olarak görünür ve de uygulama çalışırken de düzgün olarak çıkar.


merhaba.sdlbas

'   merhaba.sdlbas


for x = 1 to 300
   ink(rgb(16+(x/1.5),x/1.5,0))
   text(300-x*2.3,100+x,10+x,"MERHABA")
   wait(60)
next

wait(6000)



golgeleme.sdlbas  (Encoding / UTF-8 Cookie seçerek kayıt edin)

'   golgeleme.sdlbas
'   Encoding UTF-8 Cookie   seçerek kayıt edin


ink(rgb(255,255,255))
setDefaults(800,600,32,1)
rectangle(0,0,800,600,1)
ink(rgb(0,0,255))
rectangle(10,10,780,580,1)

for a = 0 to 255

   ink(rgb(196,0,a))

   for x = 10 to 790 step 4
     line(400,300,x,10)
   next

   for x = 10 to 600 step 4
     line(400,300,790,x)
   next

   for x = 790 to 10 step -4
     line(400,300,x,590)
   next

   for x = 590 to 10 step -4
     line(400,300,10,x)
   next
   wait(12)

next

for a = 0 to 196

   ink(rgb(196,a,255))

   for x = 10 to 790 step 4
     line(400,300,x,10)
   next

   for x = 10 to 600 step 4
     line(400,300,790,x)
   next

   for x = 790 to 10 step -4
     line(400,300,x,590)
   next

   for x = 590 to 10 step -4
     line(400,300,10,x)
   next
   wait(12)

next

for a = 196 to 32 step -1

   ink(rgb(a,a,255))

   for x = 10 to 790 step 4
     line(400,300,x,10)
   next

   for x = 10 to 600 step 4
     line(400,300,790,x)
   next

   for x = 790 to 10 step -4
     line(400,300,x,590)
   next

   for x = 590 to 10 step -4
     line(400,300,10,x)
   next
   wait(12)

next

for a = 255 to 0 step -1

   ink(rgb(32,32,a))

   for x = 10 to 790 step 4
     line(400,300,x,10)
   next

   for x = 10 to 600 step 4
     line(400,300,790,x)
   next

   for x = 790 to 10 step -4
     line(400,300,x,590)
   next

   for x = 590 to 10 step -4
     line(400,300,10,x)
   next
   wait(12)

next

for a = 32 to 255

   ink(rgb(32,a,0))

   for x = 10 to 790 step 4
     line(400,300,x,10)
   next

   for x = 10 to 600 step 4
     line(400,300,790,x)
   next

   for x = 790 to 10 step -4
     line(400,300,x,590)
   next

   for x = 590 to 10 step -4
     line(400,300,10,x)
   next
   wait(12)

next

for a = 0 to 255

   ink(rgb(32,255,a))

   for x = 10 to 790 step 4
     line(400,300,x,10)
   next

   for x = 10 to 600 step 4
     line(400,300,790,x)
   next

   for x = 790 to 10 step -4
     line(400,300,x,590)
   next

   for x = 590 to 10 step -4
     line(400,300,10,x)
   next
   wait(12)

next

for a = 32 to 255

   ink(rgb(a,255,255))

   for x = 10 to 790 step 4
     line(400,300,x,10)
   next

   for x = 10 to 600 step 4
     line(400,300,790,x)
   next

   for x = 790 to 10 step -4
     line(400,300,x,590)
   next

   for x = 590 to 10 step -4
     line(400,300,10,x)
   next
   wait(12)

next

for a = 255 to 0 step -1

   ink(rgb(255,a,255))

   for x = 10 to 790 step 4
     line(400,300,x,10)
   next

   for x = 10 to 600 step 4
     line(400,300,790,x)
   next

   for x = 790 to 10 step -4
     line(400,300,x,590)
   next

   for x = 590 to 10 step -4
     line(400,300,10,x)
   next
   wait(12)

next

for a = 255 to 0 step -1

   ink(rgb(255,0,a))

   for x = 10 to 790 step 4
     line(400,300,x,10)
   next

   for x = 10 to 600 step 4
     line(400,300,790,x)
   next

   for x = 790 to 10 step -4
     line(400,300,x,590)
   next

   for x = 590 to 10 step -4
     line(400,300,10,x)
   next
   wait(12)

next

ink(rgb(255,0,127))
text(280,500,32,"Kapatabilirsiniz",1)
ink(rgb(255,255,0))
text(250,550,24,"(Herhangi bir tuşa basınız)",2)

waitkey()



renkler.sdlbas

'    renkler.sdlbas

setDefaults(800,600,32,0)

dim renk[7]
renk[1] = rgb(255,0,255)
renk[2] = rgb(255,255,0)
renk[3] = rgb(255,0,0)
renk[4] = rgb(0,255,255)
renk[5] = rgb(0,255,0)
renk[6] = rgb(0,0,255)
renk[7] = rgb(255,255,255)

for a = 1 to 7

   ink(renk[a])
   for x = 0 to 800
      line(400,300,x,0)
  wait(12)
next
for x = 0 to 600
   line(400,300,800,x)
   wait(12)
next
for x = 800 to 0 step -1
   line(400,300,x,600)
   wait(12)
next
for x = 600 to 0 step -1
   line(400,300,0,x)
   wait(12)
next

next



boyakutusu.sdlbas

'   boyakutusu.sdlbas

for a = 1 to 10

   for x =  1 to 649
      ink(rgb(255/a,a*15,a*15))
  line(320,240,x,0)
  ink(rgb(a*15,a*15,255/a))
  line(320,240,640,(x/32)*24)
  ink(rgb(255/a,255/a,a*15))
  line(320,240,(x+640)-x*2,480)
  ink(rgb(a*15,255/a,a*15))
  line(320,240,0,(((x+640)-x*2)/32)*24)
  wait(12)
next

next

wait(6000)


ekremsenturk




naber.sdlbas
'   gezgin.sdlbas


dim naber[100]
dim renk[100]
dim yatay[100]
dim dikey[100]
dim boy[100]

for a = 1 to 100
   renk[a] = rgb(rnd(255),rnd(255),rnd(255))
   naber[a] = "NABER ?"
   yatay[a] = rnd(50)*25
   dikey[a] = rnd(480)
   boy[a] = 10+rnd(20)
next


for x = 640 to -1300 step -5
   cls
   for y = 1 to 20
      ink(renk[y])
      text(x+yatay[y], dikey[y], boy[y], naber[y])
next
    wait(6)
next

for x = 600 to -1260 step -5
    cls
for y = 21 to 40
      ink(renk[y])
      text(x+yatay[y], dikey[y], boy[y], naber[y])
next
wait(6)
next

for x = 600 to -1260 step -5
    cls
for y = 41 to 60
      ink(renk[y])
      text(x+yatay[y], dikey[y], boy[y], naber[y])
next
wait(6)
next

for x = 600 to -1260 step -5
    cls
for y = 61 to 80
      ink(renk[y])
      text(x+yatay[y], dikey[y], boy[y], naber[y])
next
wait(6)
next

for x = 600 to -1260 step -5
    cls
for y = 81 to 100
      ink(renk[y])
      text(x+yatay[y], dikey[y], boy[y], naber[y])
next
wait(6)
next

cls

wait(3000)



desenler.sdlbas
'   desenler.sdlbas


setDefaults(800,600,32,1)
ink(rgb(255,255,255))
rectangle(0,0,800,600,1)
ink(rgb(0,32,255))
rectangle(200,100,400,400,1)

for x = 2 to 14 step 6
   for a = 1 to 400 step 2
      ink(rgb(a/x,0,a/x))
      line(200+a,100,600-a,500)
      ink(rgb(0,a/x,0))
      line(600,100+a,200,500-a)
      wait(60)
   next
next

for x = 2 to 14 step 6
   for a = 1 to 400 step 2
      ink(rgb(a/x,a/x,0))
      line(200+a,100,600-a,500)
      ink(rgb(a/x,0,0))
      line(600,100+a,200,500-a)
      wait(60)
   next
next


waitkey()



gezgin.sdlbas
'   gexgin.sdlbas


setDefaults(800,600,32,1)
ink(rgb(255,255,255))
rectangle(0,0,800,600,1)


   ink(rgb(255,255,0))
   rectangle(0,100,400,400,1)
   ink(rgb(255,255,255))
   rectangle(50,150,300,300)
   rectangle(100,200,200,200)


   for a = 1 to 400 step 2
      ink(rgb(a/2,0,a/2))
      line(400+a,100,800-a,500)
      ink(rgb(0,a/2,0))
      line(800,100+a,400,500-a)
   next

   wait(600)

for x = 0 to 400
   cls

   ink(rgb(255,255,255))
   rectangle(0,0,800,600,1)

   ink(rgb(255,255,0))
   rectangle(x,100,x+400-x,400,1)
   ink(rgb(255,255,255))
   rectangle(x+50,150,x+300-x,300)
   rectangle(x+100,200,x+200-x,200)


   for a = 1 to 400 step 2
      ink(rgb(a/2,0,a/2))
      line(400+a-x,100,(800-a)-x,500)
      ink(rgb(0,a/2,0))
      line(800-x,100+a,400-x,500-a)
next
wait(12)

next

   wait(600)


for x = 400 to 0 step -1
   cls

   ink(rgb(255,255,255))
   rectangle(0,0,800,600,1)

   for a = 1 to 400 step 2
      ink(rgb(a/2,0,a/2))
      line(400+a-x,100,(800-a)-x,500)
      ink(rgb(0,a/2,0))
      line(800-x,100+a,400-x,500-a)
next

ink(rgb(255,255,0))
    rectangle(x,100,x+400-x,400,1)
    ink(rgb(255,255,255))
    rectangle(x+50,150,x+300-x,300)
    rectangle(x+100,200,x+200-x,200)
wait(12)

next


waitkey()



evimiz.sdlbas
' evimiz.sdlbas


setDefaults(800,600,32,1)
ink(rgb(255,0,0))
rectangle(0,0,800,600,1)

renk = rgb(255,255,0)

for a = 1 to 200
   plot(100,500-a,renk)
   wait(12)
next

for a = 1 to 100
   plot(100+a,300-a,renk)
   wait(12)
next

for a = 1 to 100
   plot(200+a,200+a,renk)
   wait(12)
next

for a = 300 to 100 step -1
   plot(a,300,renk)
   wait(12)
next

for a = 1 to 200
   plot(100+a,300+a,renk)
   wait(12)
next

for a = 1 to 200
   plot(300,500-a,renk)
   wait(12)
next

for a = 1 to 200
   plot(300-a,300+a,renk)
   wait(12)
next

for a = 1 to 200
   plot(100+a,500,renk)
   wait(12)
next

fprints("  Hayalimdeki Ev Budur")


waitkey()

ekremsenturk





mavitop.sdlbas
'   mavitop.sdlbas


   ink(rgb(0,0,255))

   while not inkey()

   b = 1
   for a = 600 to 320 step -2
      cls
  b = b + 1
      fillcircle(a,300+b,40)
      wait(15)
  b = b
next

b = 1
    for a = 320 to 40 step -2
      cls
  b = b + 2
      fillcircle(a,440-b,40)
      wait(15)
  b = b
next

b = 1
    for a = 40 to 290 step 2
      cls
  b = b + 1
      fillcircle(a,160-b,40)
      wait(15)
  b = b
next

b = 1
    for a = 300 to 600 step 2
      cls
  b = b + 1.7
      fillcircle(a,40+b,40)
      wait(15)
  b = b
next

    wend




doner.sdlbas
'   doner.sdlbas

   while not inkey()

   for a = 0 to 200 step 2
      ink(rgb(0,0,255))
  fillellipse(326-(a/40),240,a,200)
      ink(rgb(255,0,0))
      fillellipse(320,240,a,200)
  wait(24)
   next

   for a = 200 to 8 step -2
      cls
  ink(rgb(0,0,255))
  fillellipse(314+(a/40),240,a,200)
  ink(rgb(255,0,0))
      fillellipse(320,240,a,200)
  wait(24)
   next


   for a = 0 to 200 step 2
      ink(rgb(0,0,255))
  fillellipse(326-(a/40),240,a,200)
  ink(rgb(255,255,0))
      fillellipse(320,240,a,200)
  wait(24)
   next

   for a = 200 to 8 step -2
      cls
  ink(rgb(0,0,255))
  fillellipse(314+(a/40),240,a,200)
  ink(rgb(255,255,0))
      fillellipse(320,240,a,200)
  wait(24)
   next

   wend





silindir.sdlbas
'   silindir.sdlbas

while not inkey()

'   sola donus

   for b = 5 to 200

      cls
      for a = 120+b to 520-b
     ink(rgb(0,0,a/2-b/4))
     ellipse(a,240,10+(b/3.2),50+(a/32))
  next

      ink(rgb(0,64,191))
  fillellipse(a,240,10+(b/3.2),50+(a/32))

  wait(30)

  next

'   sola devam

for b = 200 to 5 step -1

      cls
      for a = 520-b to 120+b step -1
     ink(rgb(0,0,a/2-b/4))
     ellipse(a,240,10+(b/3.2),60)
  next

      ink(rgb(0,64,191))
  fillellipse(a,240,10+(b/3.2),60)

  wait(30)

    next

'   ikinci tur

for b = 10 to 200

      cls
      for a = 120+b to 520-b
     ink(rgb(0,0,a/2-b/4))
     ellipse(a,240,10+(b/3.2),50+(a/32))
  next

      ink(rgb(0,64,191))
  fillellipse(a,240,10+(b/3.2),50+(a/32))

  wait(30)

  next

'   yukai donus

   for b = 200 to 5 step -1

      cls
      for a = 440-b to 40+b step -1
     ink(rgb(0,0,a/2-b/4))
     ellipse(320,a,60,10+(b/3.2))
  next

      ink(rgb(0,64,191))
  fillellipse(320,a,60,10+(b/3.2))

  wait(30)

    next

'  asag donus

   for b = 10 to 200

      cls
      for a = 40+b to 440-b
     ink(rgb(0,0,a/2-b/4))
     ellipse(320,a,50+(a/32),10+(b/3.2))
  next

      ink(rgb(0,64,191))
  fillellipse(320,a,50+(a/32),10+(b/3.2))

  wait(30)

  next

'   sola yeniden devam

   for b = 200 to 5 step -1

      cls
      for a = 520-b to 120+b step -1
     ink(rgb(0,0,a/2-b/4))
     ellipse(a,240,10+(b/3.2),60)
  next

      ink(rgb(0,64,191))
  fillellipse(a,240,10+(b/3.2),60)

  wait(30)

    next

wend




ekremsenturk

Bu bölümdeki Animasyon'larda fare imleç'iini sol tıklama ile kullanıyoruz.

imlec.sdlbas
'   imlec.sdlbas

while not key(k_esc)
   cls
   ink(rgb(255,0,0))
   fillcircle(320,240,50 + mousex/4)
   wait(60)
wend



imlec2.sdlbas
'   imlec2.sdlbas

while not key(k_esc)
   cls
   ink(rgb(0,255,0))
   fillellipse(320,240,50 + mousex/4, 50 + mousey/4)
   wait(60)
wend



kaydir.sdlbas
'   kaydir.sdlbas
'   UTF-8 Cookie seçerek kayıt edin

text(10,100,24,"Topu kaydırabimek için, fareyi sol tıklayın ve tutun.")
wait(6000)

ink(rgb(0,255,0))

x = 320
y = 240

while not key(k_esc)
   cls
   fillcircle(x,y,50)
   if mousebutton = 1 then
      x = mousex
  y = mousey
end if
waitvbl
wend



cizdir.sdlbas
'   cizdir.sdlbas
'   UTF-8 Cookie seçerek kayıt edin

ink(rgb(255,255,0))

text(40,100,20,"İmleci istediiniz noktaya yerleştirin ve Çizime balşayn.")
wait(4000)
cls

ink(rgb(255,0,255))

x = mousex
y = mousey

while not key(k_esc)
   fillcircle(x,y,5)
   if mousebutton = 1 then
      x = mousex
  y = mousey
end if
waitvbl
wend

ekremsenturk

Editör Ayarları

Yardım bölümü varsayılan tarayıcı ile açılıyor. Bunu  değiştirmek mümkün. SdlBasic editörü ile doğrudan ayar dosyalarına erişebilirsiniz.
Dosya yolu : Options/Edit Properties/SdlBasic.properties
Düzenlenecek satır : 655 numaralı satırda "BROWSER = " sonuna, SdlBasic yardım bölümü için kullanmak istediğiniz tarayıcının adını yazabilirsiniz.
Varsayılan olarak "Default Browser" yazıyor ve Yazılım depolarında SdlBasic varsayılan olarak bulunmayan dağıtımlarda, bu seçenek, yardım bölümüne ulaşılabilinmesine engel oluyor.

Hızlı (veya kısaltılmış) yardım bölümüne erişim de, yine sourceforge.net'ten kurulum yapıldığında, bir hata'dan ötürü erişilemiyor. Düzeltebilmek için biraz uğraşmak gerekiyor. Puppy Linux'a kurduğum SdlBasic için düzelttiğim ayarlarım aşağıdaki gibidir.
654 SDLBRT=$(ARTSDSP) $(BASEDIR)/bin/sdlBrt
655 BROWSER=links -g
656 command.go.*.sdlbas=$(SDLBRT) "$(FilePath)"
657 command.help.*=$(BROWSER) "file:$(BASEDIR)/share/doc/sdlBasic/english/QuickHelp.html"

Firefox bende biraz yavaş açıldığı için burada bulabildiğim en hafif tarayıcıyı ekledim. Siz kendi sebeplerinize göre kendi tercihinizi ekleyebilirsiniz.

Editörde yazılan karakterlerin boyutunu düzenlemek için. /Options/Global Options ile erişebileceğiniz ayarlarda 301 numaralı satırın sonundaki rakamı değiştirebilirsiniz. Bana yazılar çok küçük geldikleri için, "18" olarak düzelttim. Bu benim tercihim tabii'ki.

SdlBasic'i sourceforge.net'ten kurmak zorunda kaldığınız durumlarda gereken kurulum dosyaları, Linux için SdlBasic.tar.gz, SdlBrt.tar.gz, ve kurulu değilseler, (Bunlar genelde yazılım depolarında mevcut olurlar) libsdl, (veya sdl.xxx) ve libsmpeg (veya smpeg.xxx)

Diğer Programlama dillerinden bilinen konsol (Terminal ) programları SdlBasic'te varsayılan olarak çalışmazlar. Bir tek "print" komutu desteklenir ve hata bildirimlerinin alındığı çıktı panelinde bildiri verir.

heartsmagic

Bu konudaki azmini ve istikrarını takdir ediyorum @ekremsenturk. Bir işe başlamak kolay ama gerisini getirmek, istikrarı sağlamak cidden zor.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

ekremsenturk

Teşekkür ederim @heartsmagic

Her girişim başlangıçta eğlenceli ve istekli oluyor. Ancak bir süre sonra, yine her girişim sıkıcı olmaya başlıyor. Ve ilk mola'dan sonra gerisi gelemeyebiliyor. Uzun bir mola'dan sonra da insan ilk başlarda kullandığı anlatım dilini tutturamayabiliyor. Bir yazının bütünlüğü için bu önemli bir durum. Yazı dili, görsel ifadeler içermediğinden, insanı bazen doğru ifadeler kullanabilme konusunda zorlayabilir. Bir de yeterince vakit ayırabilmek herkes için mümkün olmayabilir. Ben artık bir kaç senedir emekli olduğum için daha şanslıyım.

heartsmagic

Vakit ayırabilmek elbette önemli bir kriter burada ancak emin ol vakit olsa da devam edemeyenler var :) Sen hem üzerine koyuyor hem de bunu anlatıyorsun, eline sağlık.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

ekremsenturk

#8
Mutlu Yıllar (Dağıtılabilir animasyon)

32 bit dosyaları:
http://s7.dosya.tc/server/qov78w/Mutlu_Yillar.zip.html
64 bit (Linux) dosyaları:
http://www.mediafire.com/file/6tydkkii0ualsh1/Mutlu_Y%C4%B1llar.tar.gz

Not Sürüm veya dağıtım farkları bazen sorun olabilir. (Fedora ve diğer Redhat türevlerinde çalışmayacak)