Code: Select all
For iObj.OBJECTS = Each OBJECTS
For jObj.OBJECTS = Each OBJECTS
SetupCollision iObj\obj, jObj\obj, 2,2,1
next jObj
next iObj
Tässä tämä jonezin alkuperäinen esimerkkikoodi:
Code: Select all
SCREEN 800, 600
//Tyyppikokoelma objekteille
Type OBJECTS
Field obj //Muuttuja objektin kuvalle
Field picked As Byte //Muuttuja onko objekti valittu vai eikö ole
End Type
//Ladataan emäukko josta objektit kopioidaan.
ukko = LoadObject("media\guy.bmp")
//Piilotetaan emäukko
ShowObject ukko, OFF
//Teemme objektit ja arvomme niiden paikat
For i = 1 To 10
newObj.OBJECTS = New(OBJECTS)
newObj\obj = CloneObject(ukko)
PositionObject newObj\obj, Rand(-400, 400), Rand(-300, 300)
Next i
Repeat
//Liikuta kameraa
TranslateCamera (RightKey() - LeftKey()) * 3, (UpKey() - DownKey()) * 3
//lopetuskoordinaatit ovat hiiren koordinaateissa
endX = MouseWX()
endY = MouseWY()
//Kun hiirtä pidetään alhaalla, tehdään laskutoimituksia joiden mukaan
//laatikko piirretään. Laskutoimitukset menevät näin:
If MouseDown(1) Then
//Jos aloitus-x-koordinaatti > lopetus-x-koordinaatti, niin lopetus-x-koordinaatti
//on laatikon vasen sivu ja aloitus-x-koordinaatti oikea.
//Jos taas aloitus-x-koordinaatti < lopetus-x-koordinaatti, niin päinvastoin.
If gPickX > endX Then
sideLeft = endX
sideRight = gPickX
Else
sideLeft = gPickX
sideRight = endX
EndIf
//Sama y-suunnassa oleville koordinaateille
If gPickY > endY Then
sideDown = EndY
sideUp = gPickY
Else
sideDown = gPickY
sideUp = endY
EndIf
//Tässä piirrämme laatikon yksinkertaisesti vasemmasta yläkulmasta oikeaan alakulmaan
//Huomaa että piirrämme laatikon käyttäen MAAILMAKOORDINAATISTOA (drawtoworld on)
DrawToWorld ON
Box sideLeft, sideUp, sideRight - sideLeft, sideUp - sideDown, 0
DrawToWorld OFF
Else
//Jos hiirtä ei pidetä pohjassa, aloituskoordinaatti on hiiren koordinaatti.
//Tässä siis otamme aloituskoordinaatit muistiin.
gPickX = MouseWX()
gPickY = MouseWY()
EndIf
//Kun hiiri päästetään pohjasta, käymme kaikki objektit läpi ja katsomme onko
//objekti laatikon sisällä.
If MouseUp(1) Then
For iObj.OBJECTS = Each OBJECTS
iObj\picked = False //Objektien valinnat nollataan (kokeile ilman tätä)
objX = ObjectX(iObj\obj)
objY = ObjectY(iObj\obj)
//Jos objekti on laatikon sisällä, se valitaan.
If objX > sideLeft And objX < sideRight Then
If objY < sideUp And objY > sideDown Then
iObj\picked = True
EndIf
EndIf
Next iObj
EndIf
//Tässä piirrämme ympyrät objektien kohdalle, jotta näkisimme mitkä objekit on valittu.
DrawGame
For iObj.OBJECTS = Each OBJECTS
If iObj\picked = True Then
DrawToWorld ON
Circle ObjectX(iObj\obj) - 20, ObjectY(iObj\obj) + 20, 40, 0
DrawToWorld OFF
EndIf
Next iObj
DrawScreen
Forever