|
DERS ANLATIMI OYUN |
|
OYUN
MSDos' a göre Windows' ta oyun yazmak oldukça kolaydir.
Oyun yazilirken esas olarak DirectX.Pas dosyasina
ihtiyaç duyariz.Bu dosyanin avantaji oyundaki bazi efectleri
kendisinin yapmasidir. Örnegin DirectXSound' u ele alalim.
Bize 2 avantaji vardir.
* Bir sesi belli bir anda oynatmamizi saglar. Bir oyun olusturdugumuzu
ve 2 karekterin temas ettikleri anda bir ses çikartmasi
gerektiginde çarpisacak sekil ile sesin ayni anda çikmasi
gerekir. Bu sesi oynatmamiz istedigimiz anda oynatmamiza olanak
verir.
* DirectSound ayni anda 2 veya daha fazla sayida ses oynatmamizi
olanak verir. |
| NOT : DirectX özelliklerini kullanmak
istiyorsak bunun için DirectX.pas dosyalari satin alinmasi
gerekir. Uzman bir sekilde oyun yazmak istiyorsaniz DirectX' i
kullanmaniz gerekir. |
| DIRECTX KULLANILMADAN YAPILABILECEK
OYUNLAR |
| Delphinin kendi komutlarini kullanarak yapabileceginiz oyunlardir.
Örnegin DXBall ve ateri gibi oyunladir. Bunladan bir Ateri
oyununu inceleyelim. |
| ÖRNEK : Basit bir oyun. |
 |
KODU :
Bu oyun için 17
tane Image resmi kullanildi. Ve bu resimlerin hareketleri ayri
ayri saglanmistir.2 Imagelein açiklamalari.
 |
ADI : Virus
Kodadi : Image1 |
 |
ADI : AntiVirus
Kodadi : Image2 |
 |
ADI : System Dosyasi
Kodadi : Image3 |
|
procedure
TForm2.Timer1Timer(Sender: TObject);
var
s:byte;
begin
// 2. image basi ---------------------------------------
Image2.left:=Image2.left-10;// Ilk
baslangiçta soldan 10 br. bosluk birakir.
if image1.Left=image2.Left-30 then
//Virüsün yiyecegi nesne
önüne geldi ise
begin
if image1.Top=image2.Top then
// Karsisinda ise
begin
Image2.left:=650; // Virüsün
yedigi nesneyi ilk basa gönder.
c:=c-1; // Canini 1 düsür.
mediaplayer1.FileName:='ölüm.wav'; //
Media Player' de Ölüm.Wav atanir.
mediaplayer1.Open; //Ölüm.Wav
açilir.
mediaplayer1.Play; // Ölüm.Wav
çalistirilir.
label4.Caption:=inttostr(c);//Oyundaki
can kismi azalir.
if c=0 then //
Can 0 ' a esitse
begin
form2.Close;//Form2 kapatilir.
s:=0; //Puan sifirlanir.
showmessage('OYUN BITTI !!!');//
Oyun bitti mesaji verir.
end;
end;
if image1.Top-20=image2.Top then
//Antivirus 20 br üstünde
ise
begin
Image2.left:=650; // Virüsün
yedigi nesneyi ilk basa gönder.
c:=c-1; // Canini 1 düsür.
mediaplayer1.FileName:='ölüm.wav';//
Media Player' de Ölüm.Wav atanir.
mediaplayer1.Open;//Ölüm.Wav
açilir.
mediaplayer1.Play; // Ölüm.Wav
çalistirilir.
label4.Caption:=inttostr(c); //Oyundaki
can kismi azalir.
if c=0 then //
Can 0 ' a esitse
begin
label4.Caption:=inttostr(c); //Oyundaki
can kismi azalir
form2.Close;//Form2 kapatilir.
s:=0; //Puan sifirlanir.
showmessage('OYUN BITTI !!!'); //
Oyun bitti mesaji verir.
end;
end;
if image1.Top+20=image2.Top then
// Virüsün yedigi nesneyi
ilk basa gönder.
begin
Image2.left:=650; // Virüsün
yedigi nesneyi ilk basa gönder.
c:=c-1; // Canini 1 düsür.
mediaplayer1.FileName:='ölüm.wav'; //
Media Player' de Ölüm.Wav atanir.
mediaplayer1.Open; //Ölüm.Wav
açilir.
mediaplayer1.Play; // Ölüm.Wav
çalistirilir.
label4.Caption:=inttostr(c); //Oyundaki
can kismi azalir.
if c=0 then //
Can 0 ' a esitse
begin
c:=3;
label4.Caption:=inttostr(c); //Oyundaki
can kismi azalir
form2.Close;//Form2 kapatilir.
s:=0; //Puan sifirlanir.
showmessage('OYUN BITTI !!!');//
Oyun bitti mesaji verir.
end;
end;
end;
if image2.Left<13 then
//virus anti vürüse yakalanmadiysa
begin
Image2.left:=650;// Virüsün
yedigi nesneyi ilk basa gönder.
for a:=1 to 11 do
//1 'den 11'e kadar dolan
x:=random(a);//1-11 arsinda bir
sayi seç
x:=x*40;// Seçtigin sayiyi
40 ile çarp
image2.Top:=X; //Form2' nin üzerinde
o yükseklige yerlestir.
end;
if image1.top<0 then image1.top:=400; //virüs
asagidan en yukari çikarsa asagi gönder
if image1.top>400 then image1.top:=0;//virüs
yukaridan en asagii inerse yukari gönder
if image1.left<10 then image1.left:=670;//
Soldan en saga giderse soldan çikar
// 3. image basi
---------------------------------------
.
.
.
|
|
|
|
|
|