Amiga Dunyasi - Sayi 14 (Temmuz 1991).pdf - Retro Dergi
Amiga Dunyasi - Sayi 14 (Temmuz 1991).pdf - Retro Dergi
Amiga Dunyasi - Sayi 14 (Temmuz 1991).pdf - Retro Dergi
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
çarpışan objenin hareketi kesilir.<br />
Her iki yönergede de obje-no belirtilmemişse, işlem o an aktif<br />
çıktı penceresindeki tüm objeler için yapılır.<br />
OBJECT.VX<br />
OBJECT.VY KOMUTLARI:<br />
Kullanım Şekli:<br />
KOMUT FORM ATI - FONKSİYON FORM ATI -<br />
OBJECT.VX obje-noM DEĞER=OBJECT.VX(obje-no)<br />
OBJECT.VY obje-noM DEĞER=OBJECT.VY (obje-no)<br />
Bu iki yönerge, objenin x ve y eksenlerinde hareket hızını tanımlamak<br />
için kullanılır. OBJECT.VX ile obje-no ile belirtilen<br />
objenin yatay eksendeki; OBJECT.VY ile dikey eksendeki hareket<br />
hızı tanımlanır, hız değeri pozitif olduğunda hareket yukarıdan<br />
aşağıya ve sola doğru olur. Ters istikametlerde hareket için<br />
hız değeri negatif sayı ile verilmelidir.<br />
hız, saniyede geçilecek pixel sayısı olarak verilir. Objenin hareket<br />
başlangıcı, OBJECT.START yönergesi ile belirtilen yerdir.<br />
Fonksiyon formatında kullanıldığında, yönergeler obje-no ile<br />
belirtilen objenin x ve y yönlerinde o anki hız değerlerini verirler.<br />
Bu değerleri zaman zaman değerleri değiştirmek veya hesaplamalar<br />
için kullanabilirsiniz.<br />
OBJECT.X<br />
OBJECT.Y KOMUTLARI:<br />
Kullanım Şekli:<br />
KOMUT FORMATI -<br />
FONKSİYON FORMATI-<br />
OBJECT.X obje-no,x-koordinatı DEĞER=OBJECT.X(obje-no)<br />
OBJECT.Y obje-no,y-koordinatı DEĞER= OBJECT.Y(obje-no)<br />
Bu yönergeler objenin çıktı penceresindeki yerleşimini tanımlamak<br />
ya da obje hareketinin başlangıç ve bitiş noktalarını tanımlamak<br />
için kullanılır. Objenin x-koordinatı ile y-koordinatı pencerenin<br />
sol üst köşesinden hesaplanır ve -32768 ile 32767 sınırları<br />
arasında bir sayı olarak girilir. Objenin OBJECT.ON komutunu<br />
görene kadar görüntülenmeyeceğini hatırlayın.<br />
Fonksiyon olarak kullanıldığında objenin yerleşimini verirler. Bu<br />
bilgilerle obje ile yapmak istediklerinizi gerçekleştirebilirsiniz.<br />
Evet... OBJECT yönergelerimiz burada bitti. Şimdi söz verdiğimiz<br />
gibi, tüm bu komut ve fonksiyonlarla yapılmış iki örnek<br />
verelim. İlk örneğimizin adı Yo-Yo. Yazın ve deneyin:<br />
WINDOW 1,"Yo-Yo", (0,0)-(631,184),20<br />
DIM alien$(1<strong>14</strong>)<br />
RESTORE AlienShapeData<br />
FOR n=l TO 1<strong>14</strong><br />
READ a:alien$=alien$+CHR$(a)<br />
NEXT<br />
OBJECTSHAPE l,alien$<br />
OBJECT.X 1,300:OBJECT.Y 1,10<br />
OBJECT.ON :OBJECT.START<br />
WHILE MOUSE(0)=0<br />
OBJECT. AY 1,10<br />
WHILE OBJECT.VY( 1 )< 100:WEND<br />
OBJ ECT. AY 1,-10<br />
WHILE OBJECT.VY( 1 )>-100:WEND<br />
WEND<br />
OBJECTSTOP:OBJECTCLOSE<br />
AlienShapeData:<br />
DATA 0, 0, 0, 0, 0, 0, 0, 0<br />
DATA 0, 0, 0, 2, 0, 0, 0, 26<br />
DATA 0, 0, 0, 11, 0,24, 0, 3<br />
DATA 0, 0, 0,127,128, 0, 1,255<br />
DATA 224, 0, 7,255,248, 0,31,255<br />
DATA 254, 0,248,225,199,192,248,225<br />
DATA 199,192,255,255,255,192, 12,127<br />
DATA <strong>14</strong>0, 0, 12,127,<strong>14</strong>0, 0,252, 0<br />
DATA 15,192.252, 0, 15,192, 0, 0<br />
DATA 0, 0, 0, 0, 0, 0, 0, 0<br />
DATA 0, 0, 0, 0, 0, 0, 7,30<br />
DATA 56, 0, 7, 30, 56, 0, 0, 0<br />
DATA 0, 0, 0,127,128, 0, 0,127<br />
DATA 128, 0, 0, 0, 0, 0, 0, 0<br />
DATA 0, 0<br />
Programı çalıştırdığınızda, DATA yönergeleri ile basit bir obje<br />
yaratılıyor ve yaratık ekranda yukarıdan aşağıya doğru saniyede<br />
10 pixel olmak üzere hareket etmeye başlıyor. Programı durdurmak<br />
için sol mouse »usunu kliklemeniz yeterli.<br />
ikinci örneğimiz, obje çarpışmaları ile ilgili. Program, 5 obje<br />
yaratıyor ve siz bunlardan birini mouse yardımıyla ekranda oynatabiliyorsunuz.<br />
Bu oynatma esnasında ortaya çıkan çarpışmalar,<br />
ekranın üst satırındaki mesajla bildiriliyor, programı inceleyin:<br />
SCREEN 1,320,200,3,1<br />
WINDOW 2,"Obje Çarpışma Demosu",(0,0)-(311,I85),20,1<br />
WIDTH 40<br />
PALETTE 0,0,.45,0: PALETTE 1,.9,.9,.9<br />
PALETTE 2,0,0,0:PALETTE 3,.9,.48,.I5<br />
ON BREAK GOSUB Cikis:BREAK ON<br />
ON COLLISION GOSUB Carpisma:COLLISION ON<br />
DIM alien$( 1<strong>14</strong>):RESTORE ObjeSekilData<br />
FOR n=l TO 1<strong>14</strong><br />
READ a:alien$=alien$+CHR$(a)<br />
NEXT n<br />
OBJECTSHAPE l,alien$<br />
OBJECTSHAPE 2,1 :OBJECT.SHAPE 3,1<br />
OBJECT.SH APE 4,1 :OBJECT.SHAPE 5,1<br />
OBJECT.PLANES 2,5:OBJECTPLANES 3,6<br />
OBJECT.PLANES 4,7:OBJECT.PLANES 5,6,1<br />
OBJECT.HIT 1,2,5 'diğer yaratık ve kenarlar ile çarpışma.<br />
OBJECTHIT 2,4,2 'obje hareket ederek diğerleri ile çarpışır.<br />
OBJECT.HIT 3,4,2<br />
OBJECT.HIT 4,4,2<br />
OBJECT.HIT 5,4,2<br />
FOR n=2 TO 5<br />
OBJECT.X n.n*50-40:OBJECT.Y n,n* 12+20<br />
NEXT n<br />
OBJECT.ON l,2,3,4,5:OBJECT.START:LOCATE 19,5<br />
PRINT "«Cikis için mouse'u klikleyin»"<br />
WHILE MOUSE(0)=0 'ana döngü'<br />
OBJECT.X l,MOUSE(l)-l2:OBJECTY l,MOUSE(2)-l 1<br />
WEND<br />
WHILE MOUSE(0)0:WEND<br />
Cikis:<br />
OBJECT.CLOSE:WINDOW CLOSE 2<br />
SCREEN CLOSE 1:END<br />
Carpisma:<br />
objectID=COLLISION(0)<br />
collisionID=COLLISION(objectID)<br />
LOCATE 1,1 :PRINT SPACE$(2()):PRINT SPACE$(20)<br />
LOCATE LLPRINT "obje #";objectID<br />
IF collisionID=-1 THEN PRINT "ust kenara carpti."<br />
IF collisionID=-2 THEN PRINT "sol kenara carpti."<br />
IF collisionID=-3 THEN PRINT "alt kenara carpti."<br />
IF collisionID=-4 THEN PRINT "sag kenara carpti."<br />
IF collisionID=-5 THEN PRINT "obje #";coliisionID<br />
OBJECT.START:COLLISION ON<br />
RETURN<br />
ObjeSekilData:<br />
DATA 0, 0, 0, 0, 0, 0, 0, 0<br />
DATA 0, 0, 0, 2, 0, 0, 0, 26<br />
DATA 0, 0, 0, 11, 0,24, 0, 3<br />
DATA 0, 0, 0,127,128, 0, 1,255<br />
DATA 224, 0, 7,255,248, 0,31,255<br />
DATA 254, 0,248,225,199,192,248,225<br />
DATA 199,192,255,255,255,192, 12,127<br />
DATA <strong>14</strong>0, 0, 12,127,<strong>14</strong>0, 0,252, 0<br />
DATA 15,192,252, 0, 15,192, 0, 0<br />
DATA 0, 0, 0, 0, 0, 0, 0, 0<br />
DATA 0, 0, 0, 0, 0, 0, 7, 30<br />
DATA 56, 0, 7, 30, 56, 0, 0, 0<br />
DATA 0, 0, 0,127,128, 0, 0,127<br />
DATA 128, 0, 0, 0, 0, 0, 0, 0<br />
DATA 0, 0<br />
Bu ayki Basic tanıtımını OBJECT komutlarına verdiğimiz örneklerle<br />
tamamladık. Gelecek ay bu köşede buluşmak dileğiyle,<br />
hoşçakalın...<br />
AMIGA DÜNYASİ 45