Üst MenüForum kuralları Üst MenüGenel Haberler Üst MenüSoru Sorun Üst MenüForum Takımı Üst MenüReaL Para Üst MenüVİP Bölüm Üst MenüTurnuval Forum
OyunJet Bütün Oyunlar
Yeni Konu Gönder Yeni Yorum Gönder
 
Konuyu Oyla:
  • Toplam: 34 Oy - Ortalama: 3.06
  • 1
  • 2
  • 3
  • 4
  • 5
(QBASIC) İLE BASİT BİR OYUN YAPALIM(ALINTI)
Yazar Konu
EYETRON Çevrimdışı
Game Developer&3D
*
Kıdemli Üye

Yorum Sayısı: 1,487
Edilen Teşekkürler: 313
Alınan Teşekkürler:
64 mesajında 72 kere
Üyelik Tarihi: 03-03-2012

Rep Puanı: 165
ReaL Para: 891.38
Yorum: #1
(QBASIC) İLE BASİT BİR OYUN YAPALIM(ALINTI)
Oyun programlama, yani universal adıyla Game Programming aslında Programming'in daha da ilerletilmesi ve ona bir ek yapılmasıdır.Yani aslında oyun da başlı başına bir programdır,fakat bildiğimiz herhangi bir programdan çok farklılıklar göstermektedir.

Mesela bir muhasebe programında sizden beklenen gerekli yerlere hesapları girmektir.Ama siz bir işlem yapmadığınız sürece program sizi sonsuza kadar da beklese rahatsızlık duymaz.Ama bir oyun programında herşey okadar tek boyutlu değildir.



Örneğin siz hiçbir işlem yapmassanız program(oyun) zekasının yapılışına göre mutlaka bir düşman karakteri gelip sizi elimine edecektir.

Görüldüğü gibi öyle bir program olmalı ki hem biz hareket etmek istediğimizde komutlarımıza anında cevap vermeli hem de aynı zaman zarfı içinde hem düşmanlar yerimizi saptayıp bize doğru gelmeli,oyunun müziği aynı anda arka planda çalmaya devem etmeli,network üzerinden oynuyorsak tüm gerekli dataları bir server aracılığıyla gerekli diğer oyunculara iletmeli,......vs.Liste bu şekilde devam ediyor.

Demek ki burdan çıkan bir sonuç da oyun programının yeterince hızlı çalışması bu kadar işi bir arada yapabilmelidir,tabi kullanıcıya fark ettirmeyecek şekilde.

O zaman biz giriş yazımızı bir kenara bırakalım şimdilik ve başta söz verdiğimiz gibi basit bir oyunun şu anda hemen yapılmaya başlanabilmesi için gerekenleri söyledikten sonra oyunumuza başlayalım.Takdir edersiniz ki oyun ne kadar basit olsa bile bunu tek bölümde bitirmeye imkanımız yok.O yüzden oyunu bölümlere ayırdık ve her sayımızda bir bölüm ekleyerek yolumuza devam edeceğiz.

Pacman Oyunu Nasıl Yapılır?
Bildiğiniz gibi PacMan çok eski ve klasikleşmiş bir eğlence oyunudur.Bazı okurlarımız şu anda mesela şunu diyebilirler.Yabancılar Quake,Max Payne,Fifa 2004 gibi gerçeğe yakın grafikleri olan oyunlar yaparken biz mazide kalmış PacMan'i yapsak ne olacak?Sorunun cevabı aslında çok basit.

Çünkü bu oyunları yapan kimseler aslında PacMan veya onun gibi oyunları yaparak bu işe seneler önce başladılar.Tabi her alanda olduğu gibi oyun programlamada da çok geride olduğumuz için biz daha ne olduğunu anlayamadan adamlar hergün kendilerini yenilediler ve bugüne geldiler.

Ama şunu da biliniz ki bu yukarıdaki oyunların credits bölümüne bakarsanız en az 30 - 60 kişiyle bu işlerin yapıldığını göreceksiniz.Kaldı ki her oyun 2-3 sene gibi zamanlarda hayata geçirilmektedir.

Onun için bu tartışmayı bir kenara bırakalım ve onların seneler önce başladığı bu işe geç de olsa bir yerinden başlamak gerektiğini anladıktan sonra PacMan örneğimize geçelim.

Bu dersin amacı Qbasic kullanılarak basit bir oyun dezaynının nasıl yapılacağının gösterilmesidir.Qbasic ile ilgili ön bilgi gerekmemektedir.Çünkü amacımız sizi birer Qbasic Programcısı yapmak değil Qbasic le veya herhangi bir programlama dili ile nasıl oyun yapılacağını göstermektir.

Bunu C++ ve DirectX ile de gösterebilirdik fakat önce C++ ve DirectX öğrenmenizi beklemektense,bunları bilen bilmeyen herkese hitap etmek açısından böyle basit bir örnekle başlıyoruz.Daha sonra DirectX den de bahsetmeyeceğiz demek değil tabiki bu.

Biraz önce de bahsettiğim gibi dersin amacı sizleri oyun dizaynına karşı hasırneşir yapmak.Programı modüllere ayırdık ve her sayımızda bir yenisini ekleyerek devam edeceğiz.

Bu dersten beklentileriniz ne olmalı?
Bu bir yeni başlayanlar kursudur.Amacımız Quake e benzer birşey yapmak değildir.Amaç, bir oyunun nelerden ibaret olduğunu göstermek ve işin genel havasını size yansıttıktan sonra ,bunun aslında her oyunun temel yapı taşlarını oluşturduğunu anlatmaktır.

Neden Qbasic?
Qbasic i seçmemizin nedeni MSDOS içinde yer alması ve herhangi bir ekstra programa gerek duyulmadan herkesin kolayca erişebileceği bir platform olmasıdır.Ayrıca amacımız programlama dili öğretmek değil onu bir araç olarak kullanarak bir oyununun nasıl yapıldığını göstermektir.

Ders I
Bu derste PACMAN sembolünün ekranda hareket ettirilmesini göreceğiz. Qbasic'i başlatın ve aşağıdaki satırları yazın.

CLS
PRINT "PACMAN aşagıdaki C karakteridir"
PRINT "C"

Bu satırları yazdıktan sonra alt-R ve sonra S ye basın.Gördüğünüz gibi C harfi pacmanin grçek grafiğine göre oldukça basit.ama bir yerden başlamamız gerek değilmi? Şimdi de PACMAN i ekranın ortasına koyalım.Burada gerekli komut LOCATE dir.Yani istediğimiz lokasyona gitmek için bunu kullanıyoruz.

CLS
LOCATE 12,40
PRINT "C"

Locate in aldığı ilk parametre 1-23 arasındadır ve 1 ekranın en üstü ve 23 en altıdır. Locate in aldığı ikinci parametre 1-80 arasındadır ve 1 ekranın en solu ve 23 en sağıdır Şimdi biraz daha ilrleyelim ve PACMAN i hareket ettirelim..

LOCATE 12,1
PRINT "C"
LOCATE 12,1
PRINT " " :REM eski resmi silelim
LOCATE 12,2
PRINT "C" :REM ve eskisinin bir sağına yeni resmi çizelim

Yalnız burada ufak bir problemimiz var.Eğer bu şekilde devam edersek sonsuza kadar yazmamız gerekecek.Onun için değişkenleri kullanmalıyız. klavyeler mouselar$ Yukarıdaki örnekte klavyeler bir rakamı saklamaktadır,mesela on klavyemiz varsa içinde 10 değeri tutulmaktadır. mouselar$ ise sonundaki $ dan da anlaşıldığı gibi diğerinden farklı bie değişkendie.Bunun sebebi $ işaretinin Qbasic de stringleri yani yazı değişkenini ifade etmesidir.Mesela mouslarmızızn markası="herhangi bir marka " olabilir ve bu değişken de sorulduğunda bize mouslarımızn markasını söyleyebilir. Bir değişkeni PRINT yaparsanız onun ismi değil,içeriği gösterilir.

CLS klavyeler= 10
mouselar$ = "yirmi"
PRINT "klavyelerin sayısı ";klavyeler
PRINT "mouselararın sayısı "; mouselar$

Dikkat ettiyseniz klavyelerin değeri 10 olarak yazılırken mouseların değeri " " ler arasına yazılmıştır. = işareti bir değişkenin içine bir değer kaydetmeye yarar.Mesela x = y derseniz y nin içindeki değeri x in içinde saklar.Bizim örneğimizde de bu değerleri ekrana basmak için PRINT satırlarının en sonlarına değişkenlerimizin isimlerini ekliyoruz ki adetleri ekranda görebilelim. Bu açıklamaları yapmamızın sebebi PACMAN oyununda bize gerekecek olmalarıdır.

sutun = 1 : Sütun
LOCATE 12,sutun :REM ekranda 12,1 e gitmemizi söylüyor
LOCATE 12,1
PRINT "C"
sutun = sutun + 1 :REM sutunun yeni değerini hesaplıyoruz :REM sutun + 1 bize 1 + 1,yani 2 verir
LOCATE 12,sutun :REM ekranda 12,2 ye gitmemizi ve PACMAN i oraya basmamızı söylüyor
PRINT "C" Değişkenleri kullandık ve PACMAN'i başladığı yerden bir sütun sağa bastırdık.Fakat yine bu işlem uzunca devam ettirmeden fazla ilerletemiyoruz.Bu sorunu da döngülerle halledeceğiz.

CLS FOR sutun = 1 TO 80
LOCATE 12,sutun
PRINT "C" NEXT sutun

Umarım kafanız karışmadı.Burada kullandığımız bir "FOR .. NEXT" döngüsüdür. FOR satırı bilgisayara sutun isimli bir değişkenin 1 den başlayıp 80 e kadar artarak gittiğini söyler. NEXT satırı ise her seferinde bu artma işleminin gerçekleşmesini sağlar ve programı tekrar LOCATE in olduğu satıra yönlendirir. Yani FOR ve NEXT arasındaki satırlar asıl döngümüzdür ve bu satırlar 80 kez bilgisayar tarafından işlenecektir. Bu biraz karışık geldiyse aşağıdakini bir deneyin.

CLS
FOR degerler = 1 TO 10
PRINT degerler NEXT degerler

Neyse,yukarıdakini anladıktan sonra eğer
CLS
FOR sutun = 1 TO 80
LOCATE 12,sutun
PRINT "C" NEXT sutun

satırlarını tekrar yazıp çalıştırırsanız,PACMAN in çok hızlı şekilde ekranda soldan sağa doğru hareket ettiğini göreceksiniz.Bu hız bilgisayarınızın hızına göre az veya fazla olacaktır.Bunu halletmenin de yolu SLEEP komutunu kullanarak bilgisayarı birkaç saniye bekletmektir.

CLS
FOR sutun = 1 TO 80
LOCATE 12,sutun
PRINT "C" SLEEP 1 NEXT sutun

Eğer cok yavaş oldu diyorsanız bunun bir başka yolu da boş bir FOR...NEXT döngüsü kullanarak zaman öldürmektir.Bu şekilde döngünün değeriyle oynayarak PACMAN in ilerleme hızını isteğinize göre ayarlayabilirsiniz. Bir başka problem de PACMAN hareket ederken eski pozisyonundaki C leri silmiyor ve birçok CCCCCC'ler görüyoruz.

CLS
FOR sutun = 1 TO 79
LOCATE 12,sutun
PRINT " C"
FOR zamanharca=1 TO 100 NEXT
zamanharca NEXT sutun

Eğer hiçbirşey göremediyseniz demekki bilgisayarınız çok hızlı,bu sebeple zamanharca dongüsünü 300 veya daha üstü bir değere ayarlayın. PACMAN den önceki space yani boşluk akıllıca PACMAN in eski yerini siliyor artık.Peki nasıl oluyor?Aslında ekrana iki karakter basılıyor.Fakat bu karakterler yeni yerlerine basıldıgı zaman baştaki boşluk karakteri bir önce ekrana bastığımız C harfinin yerine geçiyor ve yeni C miz de boşluktan sonra geldiği için bir sağa basılıyor ve PACMAN arkasında artık iz bırakmadan ilerliyor.


TEŞEKKÜRLER
alıntıdır...[/font]
[font=Times New Roman]

Cahile söz anlatmak, deveye hendek atlatmaktan zordur.
(Bu konu en son: 10-05-2012 tarihinde, saat: 11:18 düzenlenmiştir. Konuyu düzenleyen: EYETRON.)
15-03-2012 16:39
kullanıcının web sitesini ziyaret et kullanıcının tüm mesajlarını bul Teşekkür Et Alıntı ile Cevapla
Producer Çevrimdışı
RTR Games
*
Yeni Üye

Yorum Sayısı: 218
Edilen Teşekkürler: 2
Alınan Teşekkürler:
0 mesajında 0 kere
Üyelik Tarihi: 15-01-2012

Rep Puanı: 61
ReaL Para: 91.20
Yorum: #2
RE: (QBASIC) İLE BASİT BİR OYUN YAPALIM
Güzelmiş , teşekkürler.
15-03-2012 17:16
kullanıcının web sitesini ziyaret et kullanıcının tüm mesajlarını bul Teşekkür Et Alıntı ile Cevapla
asimavi Çevrimdışı
@simavi
***
Gold Üye
Platin Üye

Yorum Sayısı: 717
Edilen Teşekkürler: 85
Alınan Teşekkürler:
42 mesajında 49 kere
Üyelik Tarihi: 15-01-2012

Rep Puanı: 187
ReaL Para: 920.00
Yorum: #3
RE: (QBASIC) İLE BASİT BİR OYUN YAPALIM
emeğine sağlık güzel paylaşım

@simavi
15-03-2012 17:47
kullanıcının tüm mesajlarını bul Teşekkür Et Alıntı ile Cevapla
Sado Çevrimdışı
Muhammet Çolak
*
Yeni Üye

Yorum Sayısı: 662
Edilen Teşekkürler: 5
Alınan Teşekkürler:
1 mesajında 2 kere
Üyelik Tarihi: 14-01-2012

Rep Puanı: 101
ReaL Para: -324.62
Yorum: #4
RE: (QBASIC) İLE BASİT BİR OYUN YAPALIM
alıntı ama böyle bir şeyi bizimle paylaştın için teşekkürler
15-03-2012 18:07
kullanıcının web sitesini ziyaret et kullanıcının tüm mesajlarını bul Teşekkür Et Alıntı ile Cevapla
Mucit Çevrimdışı
Bilim, Teknoloji ve PC
*
Kıdemli Üye
Senarist
Coder

Yorum Sayısı: 2,236
Edilen Teşekkürler: 397
Alınan Teşekkürler:
44 mesajında 53 kere
Üyelik Tarihi: 15-01-2012

Rep Puanı: 410
ReaL Para: 1467.80
Yorum: #5
RE: (QBASIC) İLE BASİT BİR OYUN YAPALIM
güzel paylaşım

Think different. Steve JOBS

İyi sanatçılar kopyalar, büyük sanatçılar çalar. Pablo PİCASSO

Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.

Kendi Çalışmalarım:
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız. - Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız. - Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız. - Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız. - Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız. - Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız. - Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız. - Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.

William Shakespeare in Kral Lear adlı kitabı olan bana ulaşsın!
Ben Türk55 im.
15-03-2012 18:33
kullanıcının web sitesini ziyaret et kullanıcının tüm mesajlarını bul Teşekkür Et Alıntı ile Cevapla
Yeni Konu Gönder Yeni Yorum Gönder


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  C++ ile oyun programlamak. zigzakgame 14 3,905 23-10-2014 12:13
Son Yorum: RPG MAKER
  C elektronik termometre yapalım aboo67 3 1,323 30-08-2013 23:48
Son Yorum: aboo67
  C++ ile oyun programlamak istiyorum. zigzakgame 7 2,709 17-06-2013 20:56
Son Yorum: EYETRON
  [DERS] Basit Faiz Hesaplari - Amatör duzey program(Kaynak Kodlu) PowerOfTurkey Game(POTG) 2 1,274 18-04-2013 17:15
Son Yorum: PowerOfTurkey Game(POTG)
  [ÖRNEK]CCS C Basit Sayaç aboo67 4 2,364 20-02-2013 16:28
Son Yorum: Oyuncu

Hızlı Menü:


Şu anda bu konuyu okuyanlar: 1 Ziyaretçi


Kurucu » Yönetici » Üst Yetkili » Yetkili » Platin Üye » Gold Üye » Silver Üye » Yeni Üye » Yasaklı Üye

Dost Linkler
İletişimReaLses Yukarı GitArşivRSS Beslemesi