|
Artık şu oyun yapımı işine yavaş yavaş girelim değil mi :D.Şimdi oyunu yapmaya başlamadan önce size bir tane tavsiyede bulunacam.Arkadaşlar,oyun yapmaya başlamadan önce mutlaka oyunu nasıl yapacağınıza dair bilgileri, düşünceleri, öncelikle kağıt üzerine dökün.Yani oyunu yapmaya başlamadan önce, nasıl yapacağınıza dair planlar yapın.Bu size oyunu yapmaya başladıktan sonra kısa sürede oyunu bitirmenizde yardımcı olur.Bunu bir inşaat’a benzetebilirsiniz.Eğer biz yapacağımız inşaata dair planlar çizmezsek,inşaat yapımında bir çok sorunlar yaşarız,hatta o inşaatı bitiremeyiz.Bu nedenle oyununuzu yapmaya başlamadan önce mutlaka planlar yapın.Her neyse şimdi asıl konumuza geçelim.Öncelikle oyunumuzda kullanacağımız “resimleri,müzikleri” aşağıdaki linkten indirin. Yapacağımız oyunun görüntüsü; Gereken şeyleri indirdikten sonra, sıkıştırılmış(winrar) dosyasının içindeki her şeyi(resimleri,müzikleri) bilgisayarın “C” bölümüne atın.Eğer oyunu yapmadan önce, nasıl bir şey olduğunu merak ediyorsanız, aşağıdaki linkten oyunun yapılmış halini indirebilirsiniz.
Resimleri ve sesleri “c” bölümüne attığınıza göre, şimdi oyunumuzu yapmaya başlayalım.Öncelikle oyunumuzun nasıl olacağını bir düşünelim.Oyunumuz basit bir oyun olacak.30 saniye boyunca aşağıdan yukarıya doğru elmalar geçecek, ve biz elmaları vurmak için Mouse kullanıcaz.Vurunca da 10’ar puan alacaz.Şimdi biz bu oyunu kodlarla nasıl nasıl yapacağımıza karar verelim.Öncelikle oyunumuzun mutlaka bir tane ana döngüsü olmalı.Bu ana döngünün içinde, elmamızın haraketini ve vurunca da puanlamayı hesaplayacağız.Bu ana döngüyü bir fonksiyon içinde oluşturabiliriz(anadöngü fonk.).Elmayı vurunca puanlamayı ekranda gösterecek veya hesaplayacak kodu da bir fonksiyonun içine yazacağız(yazii fonk.).Elmayı vurduğunuzu bilgisayara algılatmak içinde çarpışmaları ayarlamamız gerekecek.Ve bu çarpışmalar sonucunda gerçekleşmesini istediğimiz olayları da(puanın artması gibi) hesaplayan bir tane fonksiyon yapacaz(carpisma fonk.).Ve son olarak oyunumuzun bitikten sonra neler olmasını istediğimizi sağlayan bir bitiş fonsiyonu yapacaz(bitis fonk.).Yani kısacası oyunumuzun toplam 4 tane fonksiyonu olacak.Ve oyunu biz bu 4 fonksiyonun içinde oluşturacaz.(anadongu,yazii,carpisma,bitis)…. Şimdi oyunumuzun kodlarını yazmaya başlayalım.Not=Aşağıdaki oyun kodların arasında sizlere anlatmadığımız kodlar da vardır.Bu kodların ne işe yaradığını yerinde açıklayacağız. Graphics3D 900,600,16,2 ;ekranımızı ayarladık SetBuffer BackBuffer() Global elma=LoadImage ("c://elma.png") ;elma resmimizi yükledik Global arkaplan=LoadImage("c://arkaplan.bmp");arkaplan resmimizi yükledik Global hedef=LoadImage("c://hedef.png") ;hedef planımızı yükledik Global ates=LoadSound("c://ates.wav");Mouse bastığımızda, çıkması gereken sesi yükledik Global muzik=LoadSound("c://muzik.wav");arkaplanda sürekli çalmasını istediğimiz sesi yükledik LoopSound muzik ;sürekli müziği çalmasını sağladık PlaySound muzik ;müziği çalmaya başladık. Global yazi=LoadFont("Arial",30,34,34) ;buradaki loadfont ile yazı tipimizi ayarladık.(kalınlığını vs.) Global x_poz=0;elmamızın başlangıç x pozisyonunu belirttik Global y_poz=0;elmamızın başlangıç y pozisyonunu belirttik Global puan=0;puanımızın başlangıç puanını belirttik Global oyun=MilliSecs() ;buradaki MilliSecs(),saniyeyi ifade eder.ve oyun başlar başlamaz saniye işlemeye başlar HidePointer() ;buradaki HidePointer()’in görevi,Mousun simgesini saklamaktır. anadongu() ;oyunumuzu başlattık (anadongu fonksiyonumuzu çağırdık) bitis() ;oyunumuzu bitirdik. (bitiş fonksiyonumuzu çağırdık) Function yazii() ;yazii() fonksiyonumuzu oluşturmaya başladık SetFont yazi ;yazının, yukarda belirlediğimiz tipte yazmasını sölemiş olduk Color 0,255,0 ;yazımızın rengini belirledik Text 0,0, "PUAN = "+puan ;ekranın x=0,y=0 koordinatlarına, puanı yazmasını sağladık End Function ;yazii fonk. bitirdik Function anadongu();asıl oyun fonksiyonumuzu oluşturmaya başladık While MilliSecs()<oyun+30000 ;döngünün 30 saniye süresince, devam etmesini sağladık x_poz= Rnd (0,900) ;her döngü süresince elmanın x koordinatını, 0 ile 900 koordinatlarında rastgele seçmesini sağladık.Çünkü elma her seferinde aynı yerden çıksa, hiç hoş olmaz değil mi! y_poz=768 ;elmanın y koordinatını belirledik. While (y_poz>-50) ;elmanın y koordinatı -50’den büyükse, döngünün sürekli devam etmesini sağladık.Çünkü elma -50’den küçük olunca tepeye çıkmış olacaktır.Ve biz elmamızı başlangıç koordinatına getirmek için -50’den küçük olduğunda döngüden çıkmasını söyledik. yazii() ;ekrana sürekli puan durumumuzu göstermesini sağlayan fonk. Çağırdık. Flip Cls DrawImage arkaplan,0,0 ;ekrana hafızaya yüklediğimiz arkaplan resmimizi, x=0,y=0 koordinatlarına çizdirdik DrawImage elma,x_poz,y_poz ;ekrana hafızaya yüklediğimiz elma resmimizi belirlenen koordinatlarına çizdirdik y_poz=y_poz-10 ;her döngü seferinde elmanın y koordinatını -10’ar azaltmasını söledik.Böylece elmamız her döngü seferinde yukarı çıkar,aynı zamanda 768’den 10 çıkarır böylece her seferinde,10’ar azalarak devam eder,ta ki -50 oluncaya kadar. carpisma() ;elmayı vurmamızı hesaplayan,ayarlayan, çarpışma fonksiyonunu çağırdık. Wend Wend End Function ;ana döngümüzü bitirdik Function carpisma() ;çarpışma fonksiyonumuzu oluşturmaya başladık DrawImage hedef,MouseX(),MouseY() ;hafızaya yüklediğimiz hedef resmini, fare koordinatlarına çizmesini(göstermesini)sağladık If MouseHit(1) And ImagesCollide (elma,x_poz,y_poz,0,hedef,MouseX(),MouseY(),0) Then ;farenin sol tuşu tıklandığında ve farenin koordinatlarının elmanın koordinatlarına eşit olduğunda aşağıdaki kodları devreye sokmasını sağladık. PlaySound ates ;hafızaya yüklediğimiz ates sesini çalmasını sağladık puan=puan+10 ;puanı 10’ar artırmasını sağladık y_poz=-49 ;elmanın y koordinatını -49 yaptık.Böylece döngüden çıkarak tekrar yani bir koordinat rastgele seçilecek ve farklı yerden çıkmasını sağladık End If End Function ;çarpışma fonksiyonumuzu bitirdik. Function bitis() ;bitiş fonksiyonumuzu oluşturmaya başladık FreeSound muzik ;oyun bittiğinde,yani 30 sn.’nin sonrasında ana döngüden çıkıldığında müzik sesini hafızadan temizlemesini sağladık FreeSound ates ;ates sesinin temizlemesini sağladık Locate 250,300 ;ekrana x=250,y=300 koordinatlarına yazı yazacağımızı belirttik Color 255,0,0 ;yazacağımız yazının rengini ayarladık.(kırmızı) Print "SÜRE BITTI" ;yazımızı yazdık Text 400,350,"Puaniniz = "+puan ;yine ekranın x=400,y=350 koordinatlarına puanımızı yazmasını sağladık. WaitKey() ;klavyeden herhangi bir tuşa basılana kadar beklemesini sağladık EndGraphics ;herhangi bir tuşa basılması durumunda oyunumuzu bitirdik. End End Function ;bitis fonksiyonumuzu bitirdik. Şimdi oyunu çalıştırın ve sonuçları görün. :D Evet arkadaşlar umarım sizlere bu zamana kadar bişeyler kazandırabilmişimdir.Yukardaki oyunu istediğiniz gibi geliştirebilirsiniz.Bu size kalmış bişey(örneğin; menü bölümü veya zorluk seviyesi bölümü ekleyebilirsiniz.Veya elmaların sadece aşağıdan değil, soldan ve sağdan gelmesini de ayarlayabilirsiniz.) Anlamadığınız bir yer olursa bana sorabilirsiniz.Aynı zamanda,daha blitz3D dersleri hazırlamicam.Yani bu son dersimizdi.Benim anlatabileceklerim bu kadar acıkçası,gerisi size kalmış.Hala öğrenmeniz gereken çok şey var.Biz sadece yüzeysel olarak anlattık.Size tavsiyem o motorun içindeki eğitseller bölümünü açarak anlatmadığımız yerleri öğrenmenizdir.Diğer bir tavsiyemde 3d’ye geçmeden önce,(bence) bu 2D olayını yalayıp yutun,ondan sonra 3D olayına girin…Belki ilerde online(internet üzerinden) başka kişilerle oynanabilen oyunların da nasıl yapıldığını anlatırım.Ama şu anlık bende bilmiyorum nasıl yapıldığını :D . Hadi kendinize iyi bakın. Kalın sağlıcakla… MUSTAFA BAYRAKTAR
|