Gå til innhold

Anbefalte innlegg

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
Lenke til kommentar
Videoannonse
Annonse
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å?

Lenke til kommentar

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

Lenke til kommentar
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
Lenke til kommentar

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

Lenke til kommentar

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...