Bu sayfadaki yazılar
Sayfanın metni
Sayfa 27
Rem********************************************* Rem***** A M I G A DÜNYASI ***** Rem***** ***** Rem***** KAMIKAZE BY BURAK OZDEMIR ***** Rem***** ***** Rem***** AMOS Copyright 1990 Mandarin/Jawx ***** Rem********************************************* Randomize(Timer) Hide Global SCORE,LEVEL,A,B,ALIEN$ INITIALIZATION Rem********************************************* Rem MAIN LOOP Do SPSCROLL ALIENTRACK ALIENSHOW Locate 0,0 Print "SCORE=";SCORE X1=X Mouse-144 Amreg(0)=Xl If(Mouse Key>0 and Amreg(2)<2) Shoot Sprite 5,X Mouse.Y Hard(0,160),29 Amreg(2)=YHard(0,160) Amal On 5 End If CRASH=Sprite Col(2) IfCRASH=-l Sprite 5,0,0,29 Amreg(2)=0 Boom Amal Freeze 1 Amal 4,ALIEN$ Amal On 4 SCORE=SCORE+10 LEVEL=LEVEL+1 For 1=1 To 20 SPSCROLL Locate 0,0 Print "SCORE=";SCORE Next I Amal Freeze 4 Sprite 2,0,0,1 A=Rnd(200)+50 B=Rnd(100) Amal On 1 End If Loop Rem********************************************* Procedure SETANIMS Channel 1 To Sprite 2 Channel 2 To Bob 1 Channel 3 To Bob 1 Channel 4 To Sprite 2 Channel 5 To Sprite 5 Amal 1 ,"A 0,( 1,4)(2,4)(3,4)(4,4)(5,4)(6,4)(5,4)(4,4)(3,4)(2,4);Q:Let RF=0;Let X=RD;Let Y=RE;Pause;Jump Q" SHIP$="A 0,( 19,6)(20,6)(21,6)(22,6)(23,6)(24,6)(23,6)(22,6)(21,6)(20,6);Label:Let X=RA;Pause;Jump Label" Amal 2,SHIP$ Amal 3,"A 4,(25,10)(26,10)(27,10)(28,10)" ALIEN$="A
1 ,(7,5)(8,5)(9,5)( 10,5)( 11,5)( 12,5)( 13,5)( 14,5)( 15,5)( 16.5)( 17,5)( 18,5)" Amal 4,ALIEN$ Amal 5,"Loop:Let Y=RC;Mabel:Let Y=Y-l;Let RC=Y;If Y>0 Jump Mabel;Test:If Yo0 Jump Loop;Pause;Jump Test" End Proc Rem********************************************* Procedure IMAGES Screen Display 0,140,330,, Curs Off Flash Off Palette 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Cls Load "df0:sprite_600/space/shipl .abk" Get Sprite Palette %11111111111111111111111111111101 For 1=0 To 5 Paste Bob 1*32,0,1+15 Paste Bob 1*32,40,1+20 Paste Bob 1*32,80,1+25 Next I Load "dfO:sprite_600/aliens/alien5.abk" For 1=0 To 5 Get Sprite 1+19,1*32,0 To 1*32+32,32 Get Sprite 1+24,1*32,40 To 1*32+32,72 Get Sprite 1+24,1*32,80 To 1*32+32,112 Next I
Ink 10 Bar 100,100 To 101,110 Get Sprite 29,100,100 To 101,110 Screen Display 0,140,50,, End Proc Rem********************************************** Procedure SETSPACE For 1=1 To 50 Plot Rnd(32O),Rnd(20O),Rnd(15) Next I End Proc Rem********************************************** Procedure SPSCROLL Scroll 1 Gr Locate 0,15 InkO Draw To 320,15 QQ=Rnd(l) For 1=1 To QQ PlotRnd(320),15,Rnd(15) Next I End Proc Rem********************************************** Procedure INITIALIZATION LEVEL=1 IMAGES Cls Make Mask SETSPACE Def Scroll 1,0,0 To 320,200,0,1 Set Bob 1,0„ SETANIMS A=100 B=100 Sprite 2,0,0,1 Bob 1,150,160,19 Amal On 2 Amreg(2)=0 Amal On 5 Amal On 1 End Proc Rem ********************************************* Procedure ALIENTRACK A=A+Rnd(LEVEL)*2-LEVEL B=B+Rnd(LEVEL)*2-LEVEL+1 IfA<0ThenA=0 IfA>320ThenA=320 If B<0 Then B=0 If B> 160 Then KAMIKAZE End Proc Rem ********************************************* Procedure ALIENSHOW Amreg(3)=X Hard(0,A): Amreg(4)=B+50 End Proc Rem ********************************************* Procedure KAMIKAZE ALIENSHOW While Abs(X Mouse-140-A)>5 A=A+Sgn(X Mouse-140-A)*LEVEL ALIENSHOW Wend FINAL End Proc Rem ********************************************* Procedure FINAL Boom Sprite 5,0,0,29 Amreg(2)=0 Boom Amal Freeze 1 Amal Freeze 2 Amal On 3 Amal 4,ALIEN$ Amal On 4 Wait 150 GAMEOVER End Proc Rem ********************************************* Procedure GAMEOVER Amal Off Sprite Off Bob Off Locate 10,10 Print "GAME OVER" Locate 10,11 Print "SCORE=";SCORE Wait Key End End Proc
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 26
Merhaba arkadaşlar. Birçoğunuz yayınladığımız AMOS yazısını okuyorsunuzdur. AMOS kuşkusuz oyun yazmaya ve ekran efektleri yapmaya meraklı olanların ilgisini çeken bir program. Bu sayımızda, diğer AMOS yazımıza ek olarak, AMOS'a yeni başlayanlar için iki basit DEMO programı ve bir tane de basit ve kısa bir oyun programı hazırladım. Programları mümkün olduğu kadar kısa ve basit yazdım.
Programlardan ilki disketten üç resim yükleyip, bunların 50 pixel yüksekliğindeki bölümlerini ekranda birbirleri arkasında aşağı yukarı scroll ediyor. İkinci program, Shadow Of The Beast ve Silkworm gibi oyunlarda kullanılan ve görüntüye daha fazla bir derinlik veren Parallax Scrolling tekniği ile ilgili. Bu teknikte iki ekran görüntüsü birbirinin üzerine çakıştırılır ve bunlara birbirinden bağımsız olarak erişilebilir. Programda bir çift sıradağ birbiri ardında gösterilir. Mouse'un hareketi ile hareket ederler. Öndeki dağlar daha hızlı hareket ettirilerek sanki daha yakındaymış gibi gözükmeleri sağlanır.
Son program ise basit bir arcade oyunu. Oyunun konusu şöyle: Siz her zamanki gibi uzay geminizde gidiyorsunuz. Yolunuzu kaybetmiş ve başka bir yıldız sistemine girmişsiniz. Burada "küçük yeşil yaratıklar" yaşıyor. Bunlar nedense silah taşımıyorlar. Sizi düşman zannettikleri için yok etmeye çalışıyorlar. Silahları olmadığı için de bunu size çarparak yapıyorlar. Tek savunmaları ise gemilerindeki belirsizlik mekanizması. Gemiler tek bir nokta üzerinde değil de hareket eden bir noktanın etrafında bir çeşit titreme hareketi ile ilerliyorlar.
Şimdi gelelim programların açıklanmasına: Birinci programın Rem satırlarından sonra gelen ilk üç satırda, tırnak içinde 'resim' yazan yerlere yükleyeceğiniz resimlerin isimlerini yazın. Daha sonraki üç satırda programın animasyon kanalları ayarlanıyor. Aynı anda çalışan üç tane animasyon programının her biri bir ekranın ekranda gösterileceği yeri ayarlıyor. Tanımlanan animasyon programlarının hepsi temelde aynı. Ekranı önce 200 pixel aşağı sonra da 200 pixel yukarı hareket ettiriyorlar. Bunların arasındaki tek fark ekranların hareket hızı. 0 numaralı ekran 200 pixellik hareketi 1 saniyede yapıyor. Diğerleri ise 30/50 ve 20/50 saniye olarak verilmiş. 50, 30 ve 25 sayıları Move komutunun kaç ekran taraması süreceğini belirtiyor. İkinci programın en başında Mouse gizlenir. Daha sonra kullanılacak renk paleti belirlenir. Renk paletini belirlerken, her rengin Kırmızı Yeşil ve Mavi bileşenleri 0'dan F'ye kadar belirlenir. Daha sonra 0 ve bir numaralı ekranlar dual playfield komutu ile birleştiriliyor. Dual priority komutu ile 1 numaralı ekranın daha önde gözükmesi sağlanıyor. Sıradağların çizilmesi LAND prosedürü ile yapılıyor. Screen copy komutu ile ekranların ilk ve son sütunlarının aynı olması sağlanıyor. Programın ana döngüsünde Mouse sürekli olarak okunup, ekranlar Mouse'un X pozisyonuna bağlı olarak Screen Offset komutu ile yerleştiriliyor.
Üçüncü programı çalıştırabilmeniz için AMOS EXTRAS Disketine sahip olmanız gerekiyor. Programda kullanılan Sprite ve Bob'ların Data'ları bu disketten yükleniyor. Programın yazılışını ve anlaşılabilirliğini kolaylaştırmak için işlemlerin çoğunu prosedürleri kullanarak yaptım. Değişkenleri ise Global olarak tanımladım. En başta INITIALIZATION prosedürü ile ana hazırlıklar yapılıyor. Burada önce IMAGES prosedürü ile diskette iki ayrı Sprite Bank olarak kayıt edilmiş olan verilerden oyunda kullanılanları tek bir Bank'a depolar. SETSPACE prosedürü ile fondaki yıldızlar hazırlanır. SETANIMS prosedürü ile programdaki animasyonlar hazırlanır. Buradan sonra programın ana döngüsü gelir. Ana döngünün başında SPSCROLL prosedürü ile fondaki yıldızlar aşağı doğru kaydırılır. Daha sonra ALIENTRACK ile uzaylıların hareketi belirlenir, ve ALIENSHOW ile uzaylının yeni yerinde gözükmesi sağlanır. Daha sonra skor ekranın sol üst köşesine yazılır. Mouse okunarak uzay geminizin yeri belirlenir. Eğer Mouse'un herhangi bir düğmesine basılıysa geminiz ateş eder. Ateş edildikten sonra ışınınızın düşman gemisine çarpıp çarpmadığı kontrol edilir. Eğer isabet ettirdiyseniz düşman gemisi patlayacak, uzaylı yaratık uzay boşluğunda kayıp olacak, ve rastgele bir yerde bir yenisi çıkacaktır. ALIENTRACK prosedüründe aynı zamanda düşman gemisinin sizin ateş alanınızdan çıkıp çıkmadığı da kontrol edilir. Eğer çıktıysa KAMIKAZE prosedürü ile sizin üzerinize gelir ve kendi hayatı ile birlikte oyunu da bitirir. Biraz da oyunda kullanılan animasyon kanallarından, sprite'lardan ve de bob'lardan bahsedelim. Bob 1 sizin uzay geminiz, Sprite 2 yaratığın gemisi, ve Sprite 5 te ışınınızdır. Kanal 1 ve 4, uzaylı yaratığın gemisini; kanal 2 ve 3 uzay geminizi; kanal 5 ise ışınınızı kontrol eder. _______________________________________________________________________________________________________ Rem******************************************* Rem***** ***** Rem ***** DEMO 1 ***** Rem***** ***** Rem*****Written by Burak Ozdemir Using AMOS***** Rem***** ***** Rem*****AMOS Copyright 1990 Mandarin/Jawx ***** Rem***** ***** Rem***** A M I G A D Ü N Y A S I ***** Rem***** ***** Rem ******************************************* Load Iff "df0:resim 1",1 Load Iff "df0:resim 2",2 Load Iff "df0:resim 3",3 Channel 2 To Screen Display 3 Channel 1 To Screen Display 2 Channel 0 To Screen Display 1 Amal 2,"Loop:Move 0,200,20;Move 0,-200,20;Jump Loop" Amal 0,"Loop:Move 0,200,50;Move 0,-200,50;Jump Loop" Amal 1,"Loop:Move 0,200,30;Move 0,-200,30;Jump Loop" Screen Display 1,112,30,320,50 Screen Display 2,112,30,320,50 Screen Display 3,112,30,320,50 Amal On 0 Amal On 1 Amal On 2 Do Loop
Rem ***************************************** Rem***** A M I G A D Ü N Y A S I Rem***** Demo 2 Written By Burak Ozdemir Rem***** Using AMOS Rem***** (c) Mandarin / Jawx 1990
Rem******************************************* Hide Default Palette 0, $111, $222, $333, $444, $555, $666, $777, $F00, $FF0, $F0F, $F, $FF, $F0, $FFF,0 Screen Öpen 0,960,100,8,Lowres Screen Öpen 1,960,100,8,Lowres Screen Display 0,128,150,320,100 Screen Display 1,128,150,320,200 Wait Vbl Dual Playfield 0,1 Dual Priority 1,0 ClsO Screen 0 LAND[640,0,50,0] Flash Off Screen 1 LAND[640,0,50,0] Screen Copy 1,0,0,319,100 To 1,639,0 Screen 0 Screen Copy 0,0,0,319,100 To 0,639,0 Do Screen Offset 1,(X Mouse-150)*2+320,0 Screen Offset 0,X Mouse+170,0 Wait Vbl Loop Procedure LAND[W,X,N,C] Ink 0 : Bar X,0 To W+X,99 ForT=0ToN InkRnd(6)+C+l TX=Rnd(W)+X : TW=Rnd(W/8)+4 : TH=Rnd(50) Polygon TX,99 To TX+TW/2,99-TH To TX+TW,99 NextT End Proc