Gå til innhold

Anbefalte innlegg

Skrevet (endret)

såg den der snake tråden, så tenkte eg at eg sko prøva å laga en labrint så en liden figur ska gå igjønå...

 

labyrintent består av lange "bjelkar", den første bjelken ligger på 'top 3120'.

og vist denne mannen treffer di bjekane så blir han 'game over'

 

Då er spørsmåle.

 

må eg skriva inn alle corodinatene, eller kan eg skriva f.ek.

 

If Shape1.Top = 3120 or shape1.left =  600 > 4680 then

msgbox "game over"

end if

Endret av NightMaree
Videoannonse
Annonse
Skrevet

If Shape1.Top = 3120 or shape1.left < 600 or shape1.left > 4680 then

msgbox "game over"

end if

 

kanskje dette funker?? aldri drevet med vb eller qb selv, så jeg kan ikke si meg sikker.

Skrevet
Jeg skjønner ikke helt hva du mener. "shape1.left = 0 > 100" er ikke en "gylddig" kode, men "shape1.left = 0" er.

ja, eg vet de. Men for å sleppa å skriva alle kordinatene, går de an å skriva shape1.left = fra og til then

.......

 

i steden for

shape1.left = 600 then

......

 

shape1.left = 580 then

......

 

shape1.left = 560 then

......

 

 

 

aslå at eg sleppe å skriva så mangen gonger.... fatte nå?

Skrevet

Hvis du ønsker å påvise om objektene dine er i kontakt med andre, kan du prøve ut denne funksjonen:

 

Public Function IsCollided(refObject As Shape) As Boolean

   Dim Shape As Shape

   For Each Shape In refObject.Parent.Controls
       
       If (Not refObject Is Shape) And Shape.Left + Shape.Width > refObject.Left And Shape.Left < refObject.Left + refObject.Width And Shape.Top + Shape.Height > refObject.Top And Shape.Top < refObject.Top + refObject.Height Then
           IsCollided = True
           Exit For
       End If
   
   Next

End Function

 

Den søker igjennom alle shapes og sjekker om referanseobjektet overlapper en av objektene. Gjør den det, vil funksjonen returnere True. Funksjonen kan f.eks brukes som følgende:

 

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)

   Dim X As Long, Y As Long

   X = shpPlayer.Left
   Y = shpPlayer.Top

   Select Case KeyCode
   Case vbKeyLeft: shpPlayer.Left = shpPlayer.Left - 1
   Case vbKeyRight: shpPlayer.Left = shpPlayer.Left + 1
   Case vbKeyUp: shpPlayer.Top = shpPlayer.Top - 1
   Case vbKeyDown: shpPlayer.Top = shpPlayer.Top + 1
   End Select
   
   If IsCollided(shpPlayer) Then
       shpPlayer.Left = X
       shpPlayer.Top = Y
   End If

End Sub

Skrevet (endret)
aslå at eg sleppe å skriva så mangen gonger.... fatte nå?

Ja, jeg fatter. Klart det går ann ;)

If shape1.Left => Me.scalewidth Or shape1.Left =< 0 - Shape1.Width or shape1.Top =< 0 - Shape1.Height or shape1.Top => Me.scaleheight Then
Msgbox "Game Over"
end if

Endret av Jonas
Skrevet

Nå er vel jeg ganske stygg når jeg sier det men;

Du kan ikke sitte å skrive inn alle veggene med masse If setninger, legg koordinatene i en tekstfil, eller binærfil, så blir det mye raskere, mindre og enklere (alt på en gang!)

 

Og jeg tenker du vil ha

If (Shape1.Top >  rect.Top And (Shape1.Top + Shape1.Height) < rect.Bottom) And (Shape1.Left > rect.Left And (Shape1.Left + Shape1.Width) < rect.Right) Then
MsgBox "Game Over!"
End If

Skrevet (endret)

nå begynne eg å fatta 0 her... :no:

 

at vist shape1 treffer veggen så avsluttan spele, de va ikke problem, de har eg klart.

 

men vist han treffer di "veggane" eg har lagt ut, så ska han åg avslutta, de får eg ikke til..

 

 

la med filå.. :ermm:

Form1.frm

Endret av NightMaree
Skrevet

Se vedlegg. Funksjonen Collide() sjekker om to ting treffer hverandre.

 

Merk at jeg ga alle veggene en index-verdi. Da blir det lettere å gå gjennom alle sammen. Ellers måte man ha skrevet 6 forskjellige koder ;)

Form1.frm

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...