Amiga Dünyası sayı 14, sayfa 39

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 39

çarpışan objenin hareketi kesilir.

Her iki yönergede de obje-no belirtilmemişse, işlem o an aktif çıktı penceresindeki tüm objeler için yapılır.

OBJECT.VX OBJECT.VY KOMUTLARI: Kullanım Şekli: KOMUT FORMATI - FONKSİYON FORMATI - OBJECT.VX obje-no,DEĞER=OBJECT.VX(obje-no) OBJECT.VY obje-no,DEĞER=OBJECT.VY(obje-no)

Bu iki yönerge, objenin x ve y eksenlerinde hareket hızını tanımlamak için kullanılır. OBJECT.VX ile obje-no ile belirtilen objenin yatay eksendeki; OBJECT.VY ile dikey eksendeki hareket hızı tanımlanır, hız değeri pozitif olduğunda hareket yukarıdan aşağıya ve sola doğru olur. Ters istikametlerde hareket için hız değeri negatif sayı ile verilmelidir.

hız, saniyede geçilecek pixel sayısı olarak verilir. Objenin hareket başlangıcı, OBJECT.START yönergesi ile belirtilen yerdir.

Fonksiyon formatında kullanıldığında, yönergeler obje-no ile belirtilen objenin x ve y yönlerinde o anki hız değerlerini verirler. Bu değerleri zaman zaman değerleri değiştirmek veya hesaplamalar için kullanabilirsiniz.

OBJECT.X OBJECT.Y KOMUTLARI: Kullanım Şekli: KOMUT FORMATI - FONKSİYON FORMATI - OBJECT.X obje-no,x-koordinatı DEĞER=OBJECT.X(obje-no) OBJECT.Y obje-no,y-koordinatı DEĞER=OBJECT.Y(obje-no)

Bu yönergeler objenin çıktı penceresindeki yerleşimini tanımlamak ya da obje hareketinin başlangıç ve bitiş noktalarını tanımlamak için kullanılır. Objenin x-koordinatı ile y-koordinatı pencerenin sol üst köşesinden hesaplanır ve -32768 ile 32767 sınırları arasında bir sayı olarak girilir. Objenin OBJECT.ON komutunu görene kadar görüntülenmeyeceğini hatırlayın.

Fonksiyon olarak kullanıldığında objenin yerleşimini verirler. Bu bilgilerle obje ile yapmak istediklerinizi gerçekleştirebilirsiniz.

Evet... OBJECT yönergelerimiz burada bitti. Şimdi söz verdiğimiz gibi, tüm bu komut ve fonksiyonlarla yapılmış iki örnek verelim. İlk örneğimizin adı Yo-Yo. Yazın ve deneyin: WINDOW 1,"Yo-Yo", (0,0)-(631,184),20 DIM alien$(114) RESTORE AlienShapeData FOR n=1 TO 114

READ a:alien$=alien$+CHR$(a) NEXT OBJECTSHAPE l,alien$ OBJECT.X 1,300:OBJECT.Y 1,10 OBJECT.ON :OBJECT.START WHILE MOUSE(0)=0

OBJECT. AY 1,10 WHILE OBJECT.VY( 1 )< 100:WEND OBJ ECT. AY 1,-10 WHILE OBJECT.VY( 1 )>-100:WEND WEND OBJECTSTOP:OBJECTCLOSE AlienShapeData: DATA 0, 0, 0, 0, 0, 0, 0, 0 DATA 0, 0, 0, 2, 0, 0, 0, 26 DATA 0, 0, 0, 11, 0,24, 0, 3 DATA 0, 0, 0,127,128, 0, 1,255 DATA 224, 0, 7,255,248, 0,31,255 DATA 254, 0,248,225,199,192,248,225 DATA 199,192,255,255,255,192, 12,127 DATA 140, 0, 12,127,140, 0,252, 0 DATA 15,192.252, 0, 15,192, 0, 0 DATA 0, 0, 0, 0, 0, 0, 0, 0 DATA 0, 0, 0, 0, 0, 0, 7,30 DATA 56, 0, 7, 30, 56, 0, 0, 0 DATA 0, 0, 0,127,128, 0, 0,127 DATA 128, 0, 0, 0, 0, 0, 0, 0 DATA 0, 0

Programı çalıştırdığınızda, DATA yönergeleri ile basit bir obje yaratılıyor ve yaratık ekranda yukarıdan aşağıya doğru saniyede 10 pixel olmak üzere hareket etmeye başlıyor. Programı durdurmak için sol mouse tuşunu kliklemeniz yeterli.

İkinci örneğimiz, obje çarpışmaları ile ilgili. Program, 5 obje yaratıyor ve siz bunlardan birini mouse yardımıyla ekranda oynatabiliyorsunuz. Bu oynatma esnasında ortaya çıkan çarpışmalar, ekranın üst satırındaki mesajla bildiriliyor, programı inceleyin: SCREEN 1,320,200,3,1 WINDOW 2,"Obje Çarpışma Demosu",(0,0)-(311,185),20,1 WIDTH 40 PALETTE 0,0,.45,0: PALETTE 1,.9,.9,.9 PALETTE 2,0,0,0:PALETTE 3,.9,.48,.15 ON BREAK GOSUB Cikis:BREAK ON ON COLLISION GOSUB Carpisma:COLLISION ON DIM alien$(114):RESTORE ObjeSekilData FOR n=1 TO 114

READ a:alien$=alien$+CHR$(a) NEXT n OBJECTSHAPE l,alien$ OBJECTSHAPE 2,1 :OBJECT.SHAPE 3,1 OBJECT.SH APE 4,1 :OBJECT.SHAPE 5,1 OBJECT.PLANES 2,5:OBJECTPLANES 3,6 OBJECT.PLANES 4,7:OBJECT.PLANES 5,6,1 OBJECT.HIT 1,2,5 'diğer yaratık ve kenarlar ile çarpışma. OBJECTHIT 2,4,2 'obje hareket ederek diğerleri ile çarpışır. OBJECT.HIT 3,4,2 OBJECT.HIT 4,4,2 OBJECT.HIT 5,4,2 FOR n=2 TO 5

OBJECT.X n.n*50-40:OBJECT.Y n,n* 12+20 NEXT n OBJECT.ON l,2,3,4,5:OBJECT.START:LOCATE 19,5 PRINT "«Cikis için mouse'u klikleyin»" WHILE MOUSE(0)=0 'ana döngü'

OBJECT.X l,MOUSE(l)-l2:OBJECTY l,MOUSE(2)-l 1 WEND WHILE MOUSE(0)<>0:WEND Cikis:

OBJECT.CLOSE:WINDOW CLOSE 2 SCREEN CLOSE 1:END Carpisma:

objectID=COLLISION(0) collisionID=COLLISION(objectID) LOCATE 1,1 :PRINT SPACE$(2()):PRINT SPACE$(20) LOCATE LLPRINT "obje #";objectID IF collisionID=-1 THEN PRINT "ust kenara carpti." IF collisionID=-2 THEN PRINT "sol kenara carpti." IF collisionID=-3 THEN PRINT "alt kenara carpti." IF collisionID=-4 THEN PRINT "sag kenara carpti." IF collisionID=-5 THEN PRINT "obje #";coliisionID OBJECT.START:COLLISION ON RETURN ObjeSekilData: DATA 0, 0, 0, 0, 0, 0, 0, 0 DATA 0, 0, 0, 2, 0, 0, 0, 26 DATA 0, 0, 0, 11, 0,24, 0, 3 DATA 0, 0, 0,127,128, 0, 1,255 DATA 224, 0, 7,255,248, 0,31,255 DATA 254, 0,248,225,199,192,248,225 DATA 199,192,255,255,255,192, 12,127 DATA 140, 0, 12,127,140, 0,252, 0 DATA 15,192,252, 0, 15,192, 0, 0 DATA 0, 0, 0, 0, 0, 0, 0, 0 DATA 0, 0, 0, 0, 0, 0, 7, 30 DATA 56, 0, 7, 30, 56, 0, 0, 0 DATA 0, 0, 0,127,128, 0, 0,127 DATA 128, 0, 0, 0, 0, 0, 0, 0 DATA 0, 0

Bu ayki Basic tanıtımını OBJECT komutlarına verdiğimiz örneklerle tamamladık. Gelecek ay bu köşede buluşmak dileğiyle, hoşçakalın...

Klavyeyle gezinmek için ← ve → tuşları.