🛡️ Forum Yetkilisi💖 Forum Destekçisi🏆 Forum Efsanesi🌟 Forum Fenomeni🧭 Forum Keşifçisi🚀 Yükselen Yıldız💎 Kıymetli Üye👑 Konu Kralı📅 Kıdemli Üye💼 Çalışkan Üye👍 Beğenilen Üye✅ Güvenilir Üye❤️ Beğeni Meraklısı
switch numara
case 1
print "Elma"
break
case 2
print "Armut"
break
case 3
print "Ayva"
break
case 4
print "Erik"
break
case 5
print "Muz"
break
default
print numara," seçenekler arasında yok"
end switch
"switch" sizden (önceden) alınan bir değeri "case" ile saklanan verilere yönlendiriyor.
"case" seçenekleri aşılırsa "default" ile belirlenen veriye yönlendiriyor.
Blok (Kalıp) "end switch" ile kapanıyor.
"break" kullanılmadığı durumda program ilk seçim ve tüm arkasından gelenleri çalıştırıyor.
"if","elsif","else"
Kod:
system("chcp 65001")
for numara = 1 to 15
if numara = 5 then
print "Beş"
elsif numara = 10 then
print "On"
elsif numara = 15 then
print "Onbeş"
else
print numara
endif
next numara
"if" ile belirlenen koşul oluşmuşsa belirlenen işlem gerçekleşir. Aksi durumda "if" bloğu atlanır
ve programa devam edilir.
"elsif" ek koşullar sunma olanağı tanır.
"else" istenilen hiç bir koşul gerçekleşmemiş olma durumunda bir varsayılan çıkış yolu gösterir.
"if" dışındaki koşullalar opsionel (isteğe bağlı).
"endif" bloğu sonlandırır.
"if" kalıbı genelde seçim öncesi yazılır. Önce kuşulların belirlenmesi ve sonra seçimin gelmesi
duruma ve işleyişe göre daha mantıklı.
🛡️ Forum Yetkilisi💖 Forum Destekçisi🏆 Forum Efsanesi🌟 Forum Fenomeni🧭 Forum Keşifçisi🚀 Yükselen Yıldız💎 Kıymetli Üye👑 Konu Kralı📅 Kıdemli Üye💼 Çalışkan Üye👍 Beğenilen Üye✅ Güvenilir Üye❤️ Beğeni Meraklısı
open window 800,600
backcolor 0,200,200
clear window
// Karlı zemin
color 200,200,200
fill rectangle 0,400, 800,450
color 210,210,210
fill rectangle 0,450, 800,500
color 220,220,220
fill rectangle 0,500, 800,600
// Kardan adam
// Alt gövde
color 225,225,225
fill circle 400,400,100
color 230,230,230
fill circle 400,400,85
color 235,235,235
fill circle 400,400,60
// Üst gövde
color 225,225,225
fill circle 400,280,70
color 230,230,230
fill circle 400,280,55
color 235,235,235
fill circle 400,280,40
// Kafa
color 225,225,225
fill circle 400,180,60
color 230,230,230
fill circle 400,180,55
color 235,235,235
fill circle 400,180,45
// Sol kol
color 225,225,225
fill circle 330,250,30
color 230,230,230
fill circle 330,250,25
color 235,235,235
fill circle 330,250,20
// Sağ kol
color 225,225,225
fill circle 470,250,30
color 230,230,230
fill circle 470,250,25
color 235,235,235
fill circle 470,250,20
// Şapka
color 50,50,50
fill triangle 300,160, 380,120, 500,130
fill triangle 350,140, 370,70, 420,80
fill triangle 445,130, 366,80, 415,70
fill rectangle 370,100, 430,130 rem Yama
// Band
color 60,30,0
fill rectangle 353,118, 442,129
// Gözler
color 0,0,0
fill rectangle 380,160, 385,165
fill rectangle 420,160, 425,165
// Ağız
fill rectangle 370,200, 375,205
fill rectangle 430,200, 435,205
fill rectangle 390,210, 395,215
fill rectangle 410,210, 415,215
// Düğmeler
fill rectangle 400,260, 405,265
fill rectangle 400,290, 405,295
fill rectangle 400,370, 405,375
fill rectangle 400,400, 405,405
// Sol parmaklar
for parmaklar = 10 to 30 step 10
for parmak = 1 to 5
line 300,parmaklar+210+parmak, 315,parmaklar+220+parmak
next parmak
next parmaklar
// Sağ parmaklar
for parmaklar = 10 to 30 step 10
for parmak = 1 to 5
line 485,parmaklar+220+parmak, 500,parmaklar+210+parmak
next parmak
next parmaklar
// Burun
color 100,0,0
fill triangle 400,175, 400, 190, 455,185
🛡️ Forum Yetkilisi💖 Forum Destekçisi🏆 Forum Efsanesi🌟 Forum Fenomeni🧭 Forum Keşifçisi🚀 Yükselen Yıldız💎 Kıymetli Üye👑 Konu Kralı📅 Kıdemli Üye💼 Çalışkan Üye👍 Beğenilen Üye✅ Güvenilir Üye❤️ Beğeni Meraklısı
Geleneksel Basic programları üst'ten aşağı bir şekilde bir liste halinde işlenir ve çalıştırılır.
"goto" yapısı bu işleyiş içinde farklı konuma atlamaya olanak tanır.
Kod:
system("chcp 65001")
input "Lütfen adını yaz : " isim$
if len(isim$) < 6 then
goto kisa
else
goto uzun
endif
label kisa
print "Adın kısaymış."
end
label uzun
print "Adın uzunmuş."
end
Bu örneğimizde kod işleyişi "label" ile tanımlanmış iki bölümden birine yönlendiriyor.
Bu yönlendirme için ölçek olarak kullanılan "len()" fonksiyonu, Yabasic'te bilinen bir dizi
metin işleme fonksiyonlarından birisi. "len()" bir karakter dizisi içinde bulunan bir karakterlerin
boyutunu ölçer. Bu örnekte, karakter veya harf sayısı altı'dan az olan isimler için "kisa" isimli
bölüme yönlendirilir.
"goto" ile yönlendirilen kod kümeleri bir "end" ile sonlandırıldılar. Aynı zamanda "end" tüm programı sonlandırıyor.
"goto"nun belli bir yazılış düzeni yok. Tanımlanan her yere atlayabilir. Düzeni sağlamak programcıya
düşer.
Kardeşi "gosub" bir düzene sahip ve sık kullanılan aynı kod düzenini tekrarlamayı önlemeyi amaçlar.
Bir kere yazarsınız ve programın farklı bölümlerinden her gereksinim duyduğunuzda "gosub"
sayesinde tekrar erişirsiniz.
Bu örneğimizde iki farklı giriş sonunda tekrar aynı "label"a erişilyor ve farklı sonuçlar alınıyor.
"gosub" ile yönlendirilen bölümler "return" ile sonlandırılır. "return" bir geri dönüş komutu.
"label" içindeki kodlar işlemi gerçekleştirdiklerinde, tekrar ilk çağrının yapıldığı konumun bir satır
altına dönülür ve program kaldığı yerden devam eder.
Programımızın bitişine bir "end" eklemeyi unutursak, program "label"lar bölümüne doğru çalışmaya devam eder ve "label"da değil, ilk "return"de hata verir. Çünkü bu durumda geri dönülecek nokta
belirsiz.
🛡️ Forum Yetkilisi💖 Forum Destekçisi🏆 Forum Efsanesi🌟 Forum Fenomeni🧭 Forum Keşifçisi🚀 Yükselen Yıldız💎 Kıymetli Üye👑 Konu Kralı📅 Kıdemli Üye💼 Çalışkan Üye👍 Beğenilen Üye✅ Güvenilir Üye❤️ Beğeni Meraklısı
Yabasic'e kendi programımız dahilinde kendi yazdığımız fonksiyonlar ekleyebiliriz. İlk örneğimiz, girilen bir kelimeyi tersten okuyabilen bir fonksiyon olsun.
sub terstenyaz$(oku$)
for say=len(oku$) to 0 step -1
terstenoku$=left$(oku$, say)
print right$(terstenoku$, 1);
next say
end sub
Fonksiyonumuz programın alt bölümünde. "sub" ile başlar ve "end sub" ile sonlanır. Fonksiyonun ismi "terstenyaz$(oku$)" Fonksiyon ve değişken yada "label" isimlerinde Türkçe karakterler kullanmayalım. Foksiyonumuzun parantezler içinde bir parametresi var. Fonsiyonumuzun adının sonunda ve parantezler içindeki değişken sonunda ekli olan "$" işareti Fonksiyonumuzun karakter dizini türünde veri işleyebildiğini gösterir. Kısaca metin işliyor. Kalıp içindeki işlemleri ise bir "for" döngüsü yürütüyor. Kullanıcıdan alınan bir kelime uzunluğu kadar uznluktan geri sayılıyor ve "left$()" fonksiyonu tarafından sol'dan başlayarak okutuluyor. "right$() fonksiyonu en sağdan ilk (sayımdan kalan) harfi okuyor ve "print" kodumuz bu harfi yazdırıyor. Satırın sonuna eklenen noktalı virgül sayasinde okunan karakterler aşağı doğru değil, yan yana yazılıyor.
Fonksiyonumuzu çalıştırmak için Fonksiyon_Adı(Değişken) şeklinde programımızın istediğimiz yerinde yazıyoruz. Fonsiyon bölümünden önceki son boş "print" kodumuz görsel amaçlı eklenmiş. İmleç sonu çıktı ile aynı satırda çıkmaması için.
Bir Fonsiyon daha yazalım. Bu sefer grafik ortam için olsun.
Kod:
open window 600,600
color 255,0,0
baklava (100,200, 400,500)
color 0,0,255
text 150,100,"Bu bir baklava dilimi :)","swiss24"
sub baklava(x1,y1, x2,y2)
line (x1+((x2/2)-(x1/2))),y1, x2,((y2/2)+(y1/2))
line x2,((y2/2)+(y1/2)), (x1+((x2/2)-(x1/2))),y2
line (x1+((x2/2)-(x1/2))),y2, x1,((y2/2)+(y1/2))
line x1,((y2/2)+(y1/2)), (x1+((x2/2)-(x1/2))),y1
end sub
Bu fonksiyonumuz grafik ekrana bir baklava (çapraz kare) çizdiriyor. Fonksiyonumuz bizden dört veri alıyor. "rectangle" fonksiyonunda olduğu gibi sol üst köşe ve sağ alt köşe için piksel alan kodlarını alıyor ve o alan içine baklavamızı çiziyor. Bu veriler her bir (dürt) çizim için, her farklı veri girişinde orantılı bir ve birleşik çizimler verebilmek için, veriler birbirleri ile bölünüyor, çıkarılıyor, toplanıyor. Fonksiyonumuzun göze karışık gelmesinin sebebi, bu işlemin rakamlar ile değil, o rakamları temsil eden değişkenlerle yapılmış olması. Rakamlar değişebilir.
İsterseniz farklı rakamlar girerek fonksiyonu deneyebilirsiniz.
🛡️ Forum Yetkilisi💖 Forum Destekçisi🏆 Forum Efsanesi🌟 Forum Fenomeni🧭 Forum Keşifçisi🚀 Yükselen Yıldız💎 Kıymetli Üye👑 Konu Kralı📅 Kıdemli Üye💼 Çalışkan Üye👍 Beğenilen Üye✅ Güvenilir Üye❤️ Beğeni Meraklısı
Yabasic veri işleme için Basic'te geleneksel olan bir yöntem kullanıyor. Verilerimiz "data" olarak adlandırılan
satırlarda saklanır. Ve "read" komutu ile okunur. "read" her zaman aranan veri türünde bulduğu ilk veriyi okur.
Veya bir döngü içinde kullanıldığında sıraya göre okur. Verilerin sırası ve türü belli olmak zorunda. Belli bir veri
arıyorsak, tüm verileri okutup bir diziye kaydetmeliyiz ve dizi içinden aradığımız veriyi seçmeliyiz.
Kod:
system("chcp 65001")
dim isim$(12)
dim yas(12)
dim sehir$(12)
for isimler = 1 to 12
read isim$(isimler)
next isimler
for yaslar = 1 to 12
read yas(yaslar)
next yaslar
for sehirler = 1 to 12
read sehir$(sehirler)
next sehirler
print isim$(11)," hanım ",yas(11)," yaşında ve yaşadığı şehir ",sehir$(11),"."
data "Aysel","Hatice","Nuray","Semiha","Ebru","Nurcan"
data "Nermin", "Fatmanur", "Esmanur", "Serpil", "Sevinç", "Ayşe"
data 18, 22, 33, 28, 26, 64
data 23, 54, 34, 21, 45, 17
data "Sivas", "Ankara", "Trabzon", "Samsun", "Antalya","İzmir"
data "İstanbul", "Erzurum","Tokat","Manisa","Hatay","Mersin"
"data" satırlar programın sonunda bulunur ve türleri belli olmalı. Karakter dizileri (metin/harf) çift tırnaklar
içinde ve rakamlar tırnaksız olarak ve bir sonraki veriden virgül ile ayrılarak yazılır. "dim" ile atanan diziler
ve okutulacak veri ve döngü ile saydırlan değerler simetrik olmalı. Aksi durumda hata bildirimi ile program sonlanır.
Varsayalım, bu bir çüpçatan uygulaması ve aranan eşlerin isimleri, yaşları ve yaşadıkları şehirler sıra sayısına göre
yazılmış olsunlar. İsterseniz kendi tanıdığınız insanları ve onları doğru yaş ve memleketlerini yazın. Bir hikâyesi olan
işlemler daha kolay akılda kalır.
🛡️ Forum Yetkilisi💖 Forum Destekçisi🏆 Forum Efsanesi🌟 Forum Fenomeni🧭 Forum Keşifçisi🚀 Yükselen Yıldız💎 Kıymetli Üye👑 Konu Kralı📅 Kıdemli Üye💼 Çalışkan Üye👍 Beğenilen Üye✅ Güvenilir Üye❤️ Beğeni Meraklısı
Yabasic'te bir dosya üzerinde bir işley yapabilmek için önce o dosya yabasic ile açılmalı.
Dosya açılırken hangi işlem için açıldığı belirtilmeli. Belirtilen işlen için yabasic dosya üzerinde yetki vermiş oluyoruz.
Ve açılan dosyaya bir işlem numarası verilmeli. Çünkü aynı anda bir den fazla dosyayı açabiliriz.
"open" komutu ile ve dosya adı vererek bir dosya açabiliriz. Dosyalar üzerinde üç farklı işlem yapabiliriz.
Bu işlemler "okumak", "yazmak" veya dosyaya "eklemek" oluyor. Yazmak için açtığımız bir dosya var değilse,
yabasic o isimli bir dosya oluşturur. Diğer işlemlerde aranan isimli dosya eksikse, yabasic hata vererek işlemi sonlandırır.
İlk olarak yazmak amaçlı bir dosya açalım.
Kod:
open "deneme.txt" for writing as #1
print #1 "Merhaba"
print #1 "Bugün hava çok güzel"
close #1
İlk satır ile dosya açılır.
"open" ile "deneme.txt" isimli bir dosya açtık. "writing" ile yabasic'e bu yeni dosyamıza yazma izni verdik. Ve dosyamıza
"#1" bir işleme numarası ekledik. Bundan sonraki işlemlerde dosyanın işleme numarası dosya adı gibi kullanılır.
İkinci ve üçüncü satırlarda dosyamıza, dosya numarası belirtilerek iki ayrı satır ekledik.
Son satırda "close" ile dosyamızı kapattık. Dosya kapatılana kadar işlemler hafızada saklı kalır ve dosya kapandıktan sonra
dosyaya işlenirler. Şimdi dosyamızı açıp okuyabiliriz. ".txt" uzantılı dosyalar her sistemde her editör ile açılıp okunabilir.
Şimdi "deneme.txt" isimli dosyamızı yabasic ile açıp okuyalım.
Kod:
open "deneme.txt" for reading as #2
input #2 a$
line input #2 b$
print a$
print b$
close #2
Bu sefer dosyamızı "reading" ile okuma yetkisi ile açtık ve işleme sayısı olarak "#2" verdik. Satırları okumak için "input"
kullanıyoruz ve işlem numarasına bir de karakter dizisi veri türünde bir değişken ekliyoruz ve okunan veri o değişkene
atanayor. Sonra o değişkeni "print" komutu ile konsola yazdırıyoruz. Her satır için ayrı bir değişken.
İkinci satırımızda uzun bir metin yazdığından, o satırı okumak için "line input" kullanıyoruz. "input" ilk boşlukta okumayı
bırakıyor. Ve yine "close" ve işlem numarası ile dosyayı kapatıyoruz.
Varolan bir dosyayı yazma yetkisi ile açtığımızda, tüm önceki veriler silinir ve son yazılanlar kaydedilir.
Varolan bir dosyaya ekleme yapmak istediğimizde, ekleme yetkisi ile açmalıyız.
Kod:
open #3, "deneme.txt", "a"
print #3 "Benim adım Orhan Gencebay"
print #3 "Memleketim Samsum"
print #3 "Mesleğim müzisyen."
close #3
Bu örnekte "deneme.txt" isimli dosyamızı "a" (appending) ile "ekleme" yetkisi ile açtık ve üç yeni satır ekledik.
Dosyamızı tekrar yabasic ile okuyalım.
Kod:
open "deneme.txt" for reading as #4
while !eof(#4)
line input #4 oku$
print oku$
wend
close #4
Bu örnekte okuma ve konsola yazdırma işlemini bir "while" döngüsü içinden apıyoruz. Okuyacağımız dosyanın satır
sayısını bilmiyorsak "eof()" fonksiyonunu kullanabiliriz. "!" ile birlikte"eof()" okunan dosyanın son satırı olmadığı süre
anlamına gelir. (eof()=End Of File)
Parantezler içine okunan dosyanın işlem numarasını eklemeyi unutmuyoruz.
🛡️ Forum Yetkilisi💖 Forum Destekçisi🏆 Forum Efsanesi🌟 Forum Fenomeni🧭 Forum Keşifçisi🚀 Yükselen Yıldız💎 Kıymetli Üye👑 Konu Kralı📅 Kıdemli Üye💼 Çalışkan Üye👍 Beğenilen Üye✅ Güvenilir Üye❤️ Beğeni Meraklısı
Biz bir hatalı işlem yaptığımızda, yabasic hata bildirir ve işlemi sonlandırır. bu bildirimler yapılan hatalı işlem
hakkında bize bilgi verir ve hata bildiriminden hatamızın nedenini çözmeye çalışırız. Bu hata bildirimlerini
anlayabilmek ve yazılış şekline alışmak zaman alır.
Kullanıcılar da hatalı işlemler yapabilir. Biz de onlar için hata bildirimi ekleyebiliriz. Veya onların anlayamayacağı
olası bir durumu açıklayıcı ve tabi Türkçe olarak yazabiliriz.
"error" komutu bize kendi hata bildirimimizi eklememise olanak tanır. Ve ardından programı durdurur.
Kod:
system("chcp 65001")
print "Bu program sadece 5 ve 2 sayılarını giriş kabul eder."
input "2 veya 5 gir : " sayi
if sayi = 5 then
print "Beş girdiniz."
elsif sayi = 2 then
print "İki girdiniz."
else
error "Yanlış girdiniz"
endif
Bu örneğimizde "if" koşulları içinde bir "error" bildirimi ekledik. Bu bildirim olmadığı durumda program sonuçsuz kapanır.
Bildiri, kullanıcıya neden bir sonuç alamadığını açıklar.
Her hatalı işlem sonucu programı yeniden başlatmak biraz can sıkıcı olabilir. Buna kendimiz bir çözüm üretebiliriz.
Kod:
system("chcp 65001")
print "Bu program sadece 5 ve 2 sayılarını giriş kabul eder."
label yeniden
input "2 veya 5 gir : " sayi
if sayi = 5 then
print "Beş girdiniz."
elsif sayi = 2 then
print "İki girdiniz."
else
goto hata
endif
end
label hata
print "Yanlış girdiniz, tekrar deneyin"
goto yeniden
Burada "error" kullanmadan kendi çözümümüzü ürettik ve program bize önce bir bildiri verip, sonra başa dönüyor.
Bunu da bizden istenen doğru verilerden birini girene kadar tekrarlıyor.
🛡️ Forum Yetkilisi💖 Forum Destekçisi🏆 Forum Efsanesi🌟 Forum Fenomeni🧭 Forum Keşifçisi🚀 Yükselen Yıldız💎 Kıymetli Üye👑 Konu Kralı📅 Kıdemli Üye💼 Çalışkan Üye👍 Beğenilen Üye✅ Güvenilir Üye❤️ Beğeni Meraklısı
27-03-2022 Saat 12:58 (Son Düzenleme: 27-03-2022 Saat 13:03, Düzenleyen: Kurgu.)
MODÜLER PROGRAMLAMA
Bazı işlemlerimizi başka programlarımızda da tekrar kullanmayı düşünebiliriz. Bu işlemlerimizi bir dosyaya kayıt edip sonra kopyala yapıştır yaparak yeni programımıza ekleyebiliriz.
Veya
Doğrudan diğer dosyadan da çalıştırabiliriz.
Bunu yapabilmek için "export" ve "import" komutlarından yaralanabiliriz. Ortak amaçları olan işlemlerimizi fonsiyon olarak bir dosyaya "export" komutu ile tanımlayarak yazarsak, bütün yabasic programlarımızdan kullanabileceğimiz bir kitaplık oluşturmuş oluruz. Kitaplığımızdaki fonksiyonları programımız içinden "import" komutu ile, sanki programımız içinde yazılı gibi çalıştırabiliriz.
Bir Renk kitaplığı yazalım ve adını "renk.yab" koyalım
Kod:
# program : renk.yab
docu Grafik ekran için hazır renk secenekleri.
docu Secebileceginiz renkler :
docu kirmizi, mavi, lacivert, sari, yesil, siyah, beyaz
docu pembe, mor, kahverengi, turunju, gri.
export sub kirmizi()
color 255,0,0
backcolor 255,0,0
end sub
export sub mavi()
color 0,0,255
backcolor 0,0,255
end sub
export sub lacivert()
color 0,0,127
backcolor 0,0,127
end sub
export sub sari()
color 255,255,0
backcolor 255,255,0
end sub
export sub yesil()
color 0,255,0
backcolor 0,255,0
end sub
export sub siyah()
color 0,0,0
backcolor 0,0,0
end sub
export sub pembe()
color 255,0,255
backcolor 255,0,255
end sub
export sub beyaz()
color 255,255,255
backcolor 255,255,255
end sub
export sub mor()
color 127,0,127
backcolor 127,0,127
end sub
export sub kahverengi()
color 127,64,0
backcolor 127,64,0
end sub
export sub turunju()
color 255,127,0
backcolor 255,127,0
end sub
export sub gri()
color 127,127,127
backcolor 127,127,127
end sub
"renk.yab" isimli kitaplığımız tek başına çalıştırdığımızda hiç bir işlem yapmıyor. İçerdiği her bir fonksiyon hem "color" komutu için, hem "backcolor" komutu için bir sabit renk tanımı içeriyor.
Şimdi bu fonksiyonları nasıl kullanabileceğimizi görelim.
Kod:
import renk
open window 800,600
lacivert()
clear window
turunju()
text 100,100,"Merhaba","swiss24"
"import renk" satırı ile kitaplık dosyamızı içe aktardık. ".yab" uzantısını kullanmadık, ancak dosya isminde var olmalı. Yabasic başka dosya uzantılarını tanımaz. Kitaplığımızdaki fonksiyonları kullanırken sadece fonksiyon ismi giriyoruz. Fonksiyonlarımızdan birinde bir hata varsa, bu bize programımızda varmış gibi yansır. Çünkü kullanmadığımız fonksiyonlar da aslında programımız içinde mevcut. Sanki tek bir dosyada yazılmışlar gibi.
Bu şekilde, yeterince kitaplıklarımız var olduğunda, daha az kod yazarak daha iyi başarılar elde edebiliriz. Ve kodlarımızı da daha anlaşılabilir yazabiliriz.
🛡️ Forum Yetkilisi💖 Forum Destekçisi🏆 Forum Efsanesi🌟 Forum Fenomeni🧭 Forum Keşifçisi🚀 Yükselen Yıldız💎 Kıymetli Üye👑 Konu Kralı📅 Kıdemli Üye💼 Çalışkan Üye👍 Beğenilen Üye✅ Güvenilir Üye❤️ Beğeni Meraklısı
27-03-2022 Saat 17:21 (Son Düzenleme: 27-03-2022 Saat 17:28, Düzenleyen: Kurgu.)
Animasyon
Bir de animasyon örneği ekleyeyim. Hareketli nesnelerin mantığını çözelim
Kod:
open window 800,600
color 255,0,255
label baslat
for kayar = 50 to 750 step 5
fill circle kayar, 300, 50
sleep 0.1
clear window
next kayar
for kayar = 750 to 50 step -5
fill circle kayar, 300, 50
sleep 0.1
clear window
next kayar
goto baslat
Nesnemiz bir pembe küre ve sağa ve sola hareket ediyor. Bunun için iki "for" döngüsü kullanıyoruz. Her ilerleme
5 piksel ileri veya 5 piksel geri şeklinde oluyor. Hareket mesafesi ekran boyutuna göre hesaplandı ve küre soldan
veya sağdan ekran dışına çıkmıyor. "sleep" komutu ile bir geçikme yaratarak göz bozucu titreşimleri engellemiş olduk.
"clear window" ile tüm ekranı temizleyerek, kürenin önceki konumda görünmesini engelliyoruz. Aksi durumda her
yeni çizim bir öncekinin bir köşesine olur ve bir boyama efekti yaratır. "goto" ile de işlemi sürekli tekrarlatıyoruz.
Film kareleri nasıl sıralandığını biliyorsanız, animasyonlar da o şekilde, resim karelerini ard arda sıralayarak oluşur.
Prensip tamamen aynı. Siz bu efekti kodlayarak yansıtmalısınız. Kafanızdaki düşünceyi koda dökmelisiniz.
Animasyonlara kullanıcı etkileşimi eklediğiniz zaman, bu olay video oyunlarına doğru evrilir.
Not: İlerleme adımını ("step" komutundaki piksel sayısını) veya bekleme ("sleep") süresini değiştirerek hızı
düşürebilir veya artırabiliriz.
🛡️ Forum Yetkilisi💖 Forum Destekçisi🏆 Forum Efsanesi🌟 Forum Fenomeni🧭 Forum Keşifçisi🚀 Yükselen Yıldız💎 Kıymetli Üye👑 Konu Kralı📅 Kıdemli Üye💼 Çalışkan Üye👍 Beğenilen Üye✅ Güvenilir Üye❤️ Beğeni Meraklısı
color 120,80,0
fill rectangle 0,530,960,600
for x = 0 to 960 step 5+ran(10)
fill circle x,530,ran(5)
next x
color 70,70,70
for x = 10 to 950 step 20+ran(20)
fill circle x,540,5+ran(5)
next x
color 130,90,0
fill rectangle 0,540,960,600
for x = 0 to 960 step 5+ran(12)
fill circle x,540,ran(6)
next x
color 90,90,90
for x = 10 to 950 step 30+ran(20)
fill circle x,555,6+ran(5)
next x
color 140,100,0
fill rectangle 0,555,960,600
for x = 0 to 960 step 5+ran(15)
fill circle x,555,ran(7)
next x
color 100,100,100
for x = 10 to 950 step 50+ran(30)
fill circle x,580,10+ran(10)
next x
color 110,70,0
fill rectangle 0,570,960,600
for x = 0 to 960 step 10+ran(20)
fill circle x,570,ran(8)
next x
color 100,60,0
for x = 0 to 960 step 20+ran(10)
fill circle x,580+ran15,ran(8)
next x
if y > 200+Don then
oran = -0.5
elsif y < -50
oran = 0.5
endif
y=y+oran
x=x+2
color 250,250,0
fill triangle x+30,y+90, x+50,y+70, x+90,y+110
fill triangle x+30,y+110, x+50,y+130, x+90,y+90
fill triangle x+12,y+100, x+30,y+100, x+0,y+65
fill triangle x+12,y+100, x+30,y+100, x+0,y+135
color 210,210,0
fill triangle x+12,y+100, x+30,y+100, x+12,y+83
fill triangle x+12,y+100, x+30,y+100, x+12,y+117
color 25,25,0
fill triangle x+40,y+82, x+40,y+118, x+18,y+100
fill circle x+40,y+100,15
color 230,230,0
fill circle x+50,y+100,20
color 25,25,0
fill circle x+60,y+100,25
color 50,50,0
fill circle x+50,y+100,18
color 230,230,0
fill circle x+70,y+100,25
color 250,250,0
fill circle x+60,y+100,18
color 25,25,0
fill circle x+80,y+100,20
color 50,50,0
fill circle x+70,y+100,15
color 230,230,0
fill circle x+90,y+100,15
color 250,250,0
fill circle x+85,y+100,10
color 170,160,250
fill triangle x+97,y+90, x+105,y+100, x+101,y+90
fill triangle x+97,y+110, x+105,y+100, x+101,y+110
color 0,0,0
fill circle x+90,y+95,3
line x+95,y+105, x+100,y+105
color 200,200,0
fill triangle x+62,y+99, x+45,y+85, x+50,y+99
fill triangle x+62,y+101, x+45,y+115, x+50,y+101
c=x
d=y
Return
if my > 200+Don then
oran = -0.5
elsif my < -50
oran = 0.5
endif
my=my+oran
mx=mx-2
color 250,250,0
fill triangle mx+75,my+90, mx+55,my+70, mx+5,my+110
fill triangle mx+75,my+110, mx+55,my+130, mx+5,my+90
fill triangle mx+93,my+100, mx+75,my+100, mx+105,my+65
fill triangle mx+93,my+100, mx+75,my+100, mx+105,my+135
color 210,210,0
fill triangle mx+93,my+100, mx+75,my+100, mx+93,my+83
fill triangle mx+93,my+100, mx+75,my+100, mx+93,my+117
color 25,25,0
fill triangle mx+65,my+82, mx+65,my+118, mx+87,my+100
fill circle mx+65,my+100,15
color 230,230,0
fill circle mx+55,my+100,20
color 25,25,0
fill circle mx+45,my+100,25
color 50,50,0
fill circle mx+55,my+100,18
color 230,230,0
fill circle mx+35,my+100,25
color 250,250,0
fill circle mx+45,my+100,18
color 25,25,0
fill circle mx+25,my+100,20
color 50,50,0
fill circle mx+35,my+100,15
color 230,230,0
fill circle mx+15,my+100,15
color 250,250,0
fill circle mx+20,my+100,10
color 170,160,250
fill triangle mx+6,my+90, mx+0,my+100, mx+2,my+90
fill triangle mx+6,my+110, mx+0,my+100, mx+2,my+110
color 0,0,0
fill circle mx+15,my+95,3
line mx+10,my+105, mx+5,my+105
color 200,200,0
fill triangle mx+43,my+99, mx+60,my+85, mx+55,my+99
fill triangle mx+43,my+101, mx+60,my+115, mx+55,my+101
c=mx
d=my
Return
if xx > 100+Daha then
buran = -0.5
elsif xx < -100
buran = 0.5
endif
yy=yy-2
xx=xx+buran
color 250,250,0
fill triangle yy+75,xx+190, yy+55,xx+170, yy+5,xx+210
fill triangle yy+75,xx+210, yy+55,xx+230, yy+5,xx+190
fill triangle yy+93,xx+200, yy+75,xx+200, yy+105,xx+165
fill triangle yy+93,xx+200, yy+75,xx+200, yy+105,xx+235
color 210,210,0
fill triangle yy+93,xx+200, yy+75,xx+200, yy+93,xx+183
fill triangle yy+93,xx+200, yy+75,xx+200, yy+93,xx+217
color 25,25,0
fill triangle yy+65,xx+182, yy+65,xx+218, yy+87,xx+200
fill circle yy+65,xx+200,15
color 230,230,0
fill circle yy+55,xx+200,20
color 25,25,0
fill circle yy+45,xx+200,25
color 50,50,0
fill circle yy+55,xx+200,18
color 230,230,0
fill circle yy+35,xx+200,25
color 250,250,0
fill circle yy+45,xx+200,18
color 25,25,0
fill circle yy+25,xx+200,20
color 50,50,0
fill circle yy+35,xx+200,15
color 230,230,0
fill circle yy+15,xx+200,15
color 250,250,0
fill circle yy+20,xx+200,10
color 170,160,250
fill triangle yy+6,xx+190, yy+0,xx+200, yy+2,xx+190
fill triangle yy+6,xx+210, yy+0,xx+200, yy+2,xx+210
color 0,0,0
fill circle yy+15,xx+195,3
line yy+10,xx+205, yy+5,xx+205
color 200,200,0
fill triangle yy+43,xx+199, yy+60,xx+185, yy+55,xx+199
fill triangle yy+43,xx+201, yy+60,xx+215, yy+55,xx+201
cy=yy
cx=xx
Return
if cxx > 100+Daha then
buran = -0.5
elsif cxx < -100
buran = 0.5
endif
cyy=cyy+2
cxx=cxx+buran
color 250,250,0
fill triangle cyy+30,cxx+190, cyy+50,cxx+170, cyy+90,cxx+210
fill triangle cyy+30,cxx+210, cyy+50,cxx+230, cyy+90,cxx+190
fill triangle cyy+12,cxx+200, cyy+30,cxx+200, cyy+0,cxx+165
fill triangle cyy+12,cxx+200, cyy+30,cxx+200, cyy+0,cxx+235
color 210,210,0
fill triangle cyy+12,cxx+200, cyy+30,cxx+200, cyy+12,cxx+183
fill triangle cyy+12,cxx+200, cyy+30,cxx+200, cyy+12,cxx+217
color 25,25,0
fill triangle cyy+40,cxx+182, cyy+40,cxx+218, cyy+18,cxx+200
fill circle cyy+40,cxx+200,15
color 230,230,0
fill circle cyy+50,cxx+200,20
color 25,25,0
fill circle cyy+60,cxx+200,25
color 50,50,0
fill circle cyy+50,cxx+200,18
color 230,230,0
fill circle cyy+70,cxx+200,25
color 250,250,0
fill circle cyy+60,cxx+200,18
color 25,25,0
fill circle cyy+80,cxx+200,20
color 50,50,0
fill circle cyy+70,cxx+200,15
color 230,230,0
fill circle cyy+90,cxx+200,15
color 250,250,0
fill circle cyy+85,cxx+200,10
color 170,160,250
fill triangle cyy+97,cxx+190, cyy+105,cxx+200, cyy+101,cxx+190
fill triangle cyy+97,cxx+210, cyy+105,cxx+200, cyy+101,cxx+210
color 0,0,0
fill circle cyy+90,cxx+195,3
line cyy+95,cxx+205, cyy+100,cxx+205
color 200,200,0
fill triangle cyy+62,cxx+199, cyy+45,cxx+185, cyy+50,cxx+199
fill triangle cyy+62,cxx+201, cyy+45,cxx+215, cyy+50,cxx+201
cy=cyy
cx=cxx
Return
if nx > 500+Sonradan then
goto Arada1
endif
if xy > 100+Dondu then
suran = -0.5
elsif xy < -150
suran = 0.5
endif
xy=xy+suran
nx=nx+2
color 250,200,0
fill triangle nx+70,xy+285, nx+70,xy+315, nx+88,xy+300
fill triangle nx+20,xy+280, nx+50,xy+300, nx+32,xy+300
fill triangle nx+20,xy+320, nx+50,xy+300, nx+32,xy+300
fill triangle nx+40,xy+275, nx+50,xy+300, nx+55,xy+290
fill triangle nx+40,xy+325, nx+50,xy+300, nx+55,xy+310
color 220,80,0
fill circle nx+60,xy+300,15
color 250,90,0
fill circle nx+50,xy+300,10
color 220,80,0
fill circle nx+65,xy+300,15
color 250,90,0
fill circle nx+55,xy+300,10
fill triangle nx+56,xy+285, nx+56,xy+315, nx+35,xy+298
fill triangle nx+56,xy+285, nx+56,xy+315, nx+35,xy+302
color 220,180,0
fill circle nx+72,xy+300,10
color 250,200,0
fill circle nx+68,xy+300,8
fill triangle nx+55,xy+295, nx+55,xy+305, nx+60,xy+300
color 0,0,0
fill circle nx+77,xy+297,2
color 250,90,0
line nx+84,xy+300, nx+86,xy+300
cnx=nx
cxy=xy
Return
if axy > 100+Dondu then
suran = -0.5
elsif axy < -150
suran = 0.5
endif
axy=axy+suran
anx=anx-2
color 250,200,0
fill triangle anx+38,axy+285, anx+38,axy+315, anx+20,axy+300
fill triangle anx+88,axy+280, anx+58,axy+300, anx+76,axy+300
fill triangle anx+88,axy+320, anx+58,axy+300, anx+76,axy+300
fill triangle anx+68,axy+275, anx+58,axy+300, anx+53,axy+290
fill triangle anx+68,axy+325, anx+58,axy+300, anx+53,axy+310
color 220,80,0
fill circle anx+48,axy+300,15
color 250,90,0
fill circle anx+48,axy+300,10
color 220,80,0
fill circle anx+43,axy+300,15
color 250,90,0
fill circle anx+53,axy+300,10
fill triangle anx+52,axy+285, anx+52,axy+315, anx+73,axy+298
fill triangle anx+52,axy+285, anx+52,axy+315, anx+73,axy+302
color 220,180,0
fill circle anx+36,axy+300,10
color 250,200,0
fill circle anx+40,axy+300,8
fill triangle anx+53,axy+295, anx+53,axy+305, anx+48,axy+300
color 0,0,0
fill circle anx+31,axy+297,2
color 250,90,0
line anx+24,axy+300, anx+22,axy+300
cnx=anx
cxy=axy
Return
if n > 40+Dahanereyekadar then
neren = -0.5
elsif n < -250
neren = 0.5
endif
ny=ny-2
n=n+neren
color 250,200,0
fill triangle ny+38,n+385, ny+38,n+415, ny+20,n+400
fill triangle ny+88,n+380, ny+58,n+400, ny+76,n+400
fill triangle ny+88,n+420, ny+58,n+400, ny+76,n+400
fill triangle ny+68,n+375, ny+58,n+400, ny+53,n+390
fill triangle ny+68,n+425, ny+58,n+400, ny+53,n+410
color 220,80,0
fill circle ny+48,n+400,15
color 250,90,0
fill circle ny+48,n+400,10
color 220,80,0
fill circle ny+43,n+400,15
color 250,90,0
fill circle ny+53,n+400,10
fill triangle ny+52,n+385, ny+52,n+415, ny+73,n+398
fill triangle ny+52,n+385, ny+52,n+415, ny+73,n+402
color 220,180,0
fill circle ny+36,n+400,10
color 250,200,0
fill circle ny+40,n+400,8
fill triangle ny+53,n+395, ny+53,n+405, ny+48,n+400
color 0,0,0
fill circle ny+31,n+397,2
color 250,90,0
line ny+24,n+400, ny+22,n+400
cc=ny
nc=n
Return
if bny > 500+DahaSonra then
goto Tekrarla2
endif
if bn > 40+Dahanereyekadar then
neren = -0.5
elsif bn < -250
neren = 0.5
endif
bny=bny+2
bn=bn+neren
color 250,200,0
fill triangle bny+70,bn+385, bny+70,bn+415, bny+88,bn+400
fill triangle bny+20,bn+380, bny+50,bn+400, bny+32,bn+400
fill triangle bny+20,bn+420, bny+50,bn+400, bny+32,bn+400
fill triangle bny+40,bn+375, bny+50,bn+400, bny+55,bn+390
fill triangle bny+40,bn+425, bny+50,bn+400, bny+55,bn+410
color 220,80,0
fill circle bny+60,bn+400,15
color 250,90,0
fill circle bny+50,bn+400,10
color 220,80,0
fill circle bny+65,bn+400,15
color 250,90,0
fill circle bny+55,bn+400,10
fill triangle bny+56,bn+385, bny+56,bn+415, bny+35,bn+398
fill triangle bny+56,bn+385, bny+56,bn+415, bny+35,bn+402
color 220,180,0
fill circle bny+72,bn+400,10
color 250,200,0
fill circle bny+68,bn+400,8
fill triangle bny+55,bn+395, bny+55,bn+405, bny+60,bn+400
color 0,0,0
fill circle bny+77,bn+397,2
color 250,90,0
line bny+84,bn+400, bny+86,bn+400
cc=bny
nc=bn
Return
Label Baloncuk1
if kopuk1<100 kopuk1=520
kopuk1=kopuk1-2
color 250,250,250
circle 200-ran(3),kopuk1-ran(3),4
circle 260-ran(3),kopuk1-10-ran(3),4
circle 230-ran(3),kopuk1-20-ran(3),4
Return