| |
| |
![]() |
![]() | | Konu Seçenekleri | ![]() |
| | #1 |
![]() ![]() ![]() ![]() ![]() | Ders-43 '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 : VirusKodadi : Image1 ADI : AntiVirusKodadi : Image2 ADI : System DosyasiKodadi : Image3 Code: 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 ---------------------------------------
.
.
.
procedure TForm2.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
clientheight:=476; //form büyüklügü
clientwidth:=715; //form büyüklügü
case key of
VK_up:Image1.Top:=Image1.Top-20; //yukariya 20br çikart
VK_down:Image1.Top:=Image1.Top+20; //asagiya 20br indir
VK_left:image1.Left:=image1.Left-20; //sola 20 br git
VK_right:image1.Left:=image1.Left+20; //sag 20br git
end;
procedure TForm2.FormActivate(Sender: TObject);
begin
timer1.Enabled:=true; //timer1 çalistir
timer2.Enabled:=true; //timer2 çalistir
timer3.Enabled:=true; //timer3 çalistir
c:=3; //cani 3 ver
s:=0; //puani sifirla
label2.Caption:=inttostr(s); //puani göster
end;
![]() |
|
![]() |
| Konu Seçenekleri | |
| |