ForumTeams | Türkiye'nin Forum Topluluğu

Tam Versiyon: Yabasic
Şu Anda Arşiv Modunu Görüntülemektesiniz. Tam Versiyonu Görüntülemek İçin Buraya Tıklayınız.
Sayfalar: 1 2
Koşullu seçimler

"switch" ve "case"

Kod:
system("chcp 65001") input "1 ve 5 arası bir numara girin : " numara 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ı.
Bir kardan adam çizelim.

[Resim: rbqcr35.png]

Kodları aşağıdaki gibi.

Kod:
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
GOTO ve GOSUB yapıları

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.

Kod:
system("chcp 65001") input "Ön adınız : " isim$ gosub denetle input "Soy adınız : " isim$ gosub denetle print "Teşekkür ederiz." end label denetle     print "Adınız ",len(isim$)," harften oluşuyor." return
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.
Yabasic'e kendi kodlarımızı ekleyelim.

Kendi Fonksiyonlarımızı Yazalım

Yabasic'e kendi programımız dahilinde kendi yazdığımız fonksiyonlar ekleyebiliriz.
İlk örneğimiz, girilen bir kelimeyi tersten okuyabilen bir fonksiyon olsun.

Kod:
system("chcp 65001") input "Bir kelime gir : " kelime$ print kelime$," tersten okunuşu "; terstenyaz$(kelime$) print "" 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.  Gülümseme 


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.
Veri işleme

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.
Dosya işlemleri

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.
Hatalı işlemler ile başa çıkmak

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.
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.
Animasyon

Bir de animasyon örneği ekleyeyim. Hareketli nesnelerin mantığını çözelim  Gülümseme

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.  Gülümseme  Gülümseme  Gülümseme

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.
Daha önce yazmış olduğum bir Animasyon

https://www.mediafire.com/file/yiq1cjq9u...o.zip/file
[/url]
[Resim: 5t96pii.png]


Kod:
#!/usr/bin env yabasic # Yabasic sürüm 2.78.0 # Yazar : K110 # Dosya : Nemo.yab # Olay  : Akvaryum Animasyonu # Lisans: Artistic # Önsöz : Tüm, bu proje çalışmalarım esnasında beni destekleyen ve bana anlayış #         gösteren, aileme, kedimize, köpeğimize, teşekkürlerimi sunarım. // Akvaryum --------------------------------------------------------------------- open window 960,600 backcolor 170,160,250 clear window // Akvaryum zemini --------------------------------------------------------------    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    // Değişkenler ------------------- Değişkenler -------------------- Değişkenler Oynat=0 y=0 x=100 my=0 mx=0 c=0 d=0 yy=700 xx=0 cx=0 cy=0 ny=840 n=0 oran=0.5 buran=0.5 suran=0.5 neren=0.5 kopuk1=520 // Ana Program ****************** Ana Program ********************** Ana Program while(Oynat <> -100)   Nimik()   Nemo()   Nemissa()   Nimita()   Kopuk()   sleep 0.05   clear fill rectangle 0,0,960,525 wend // Nemo -------------- Nemo ---------------- Nemo ------------------------ Nemo Sub Nemo()    Son=ran(300)    Don=ran(50)    goto Nemo1    Label Ara2    x=c    y=d    Son=ran(300)    Don=ran(50)    goto Nemo1    Label Nemo1    if x > 500+Son then      goto Ara1    endif       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 Label Ara1    mx=c    my=d    Son=ran(300)    Don=ran(50)    x=800    goto Nemo2     Label Nemo2    if mx < 6+Son then      goto Ara2    endif       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 End Sub // Nemissa --------------- Nemissa --------------- Nemissa ------------- Nemissa Sub Nemissa()    Sonra=ran(300)    Daha=ran(50)    goto Nemissa1 Label Tekrar2    xx=cx    yy=cy    Sonra=ran(300)    Daha=ran(50)    goto Nemissa1    Label Nemissa1    if yy<6+Sonra then      goto Tekrar1    endif       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 Label Tekrar1    cxx=cx    cyy=cy    Sonra=ran(300)    Daha=ran(50)    yy=6    goto Nemissa2 Label Nemissa2    if cyy > 500+Sonra then      goto Tekrar2    endif       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 End Sub // Nimik -------------- Nimik -------------------- Nimik ----------------- Nimik Sub Nimik()    Sonradan=ran(300)    Dondu=ran(50)    goto Nimik1 Label Arada2    nx=cnx    xy=axy    Sonradan=ran(300)    Dondu=ran(50)    goto Nimik1    Label Nimik1    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 Label Arada1    anx=cnx    axy=cxy    Sonradan=ran(300)    Dondu=ran(50)    nx=840    goto Nimik2 Label Nimik2    if anx<8+Sonradan then      goto Arada2    endif       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 End Sub // Nimita ---------------- Nimita ----------------- Nimita --------------- Nimita Sub Nimita()    DahaSonra=ran(300)    Dahanereyekadar=ran(50)    goto Nimita1 Label Tekrarla2    ny=cc    n=nc    DahaSonra=ran(300)    Dahanereyekadar=ran(50)    goto Nimita1    Label Nimita1    if ny<12+DahaSonra then      goto Tekrarla1    endif       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 Label Tekrarla1    bny=cc    bn=nc    DahaSonra=ran(300)    Dahanereyekadar=ran(50)    ny=8    goto Nimita2 Label Nimita2    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 End Sub // Kabarcıklar ................... Kabarcıklar .................... Kabarcıklar Sub Kopuk() 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 End Sub  
[url=https://www.mediafire.com/file/yiq1cjq9utfdbtz/Nemo.zip/file]
Sayfalar: 1 2