NightMaree Skrevet 22. desember 2004 Skrevet 22. desember 2004 (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 22. desember 2004 av NightMaree
Jonas Skrevet 22. desember 2004 Skrevet 22. desember 2004 Hva er det du mener? I koden din har du jo skrevet inn et par kordinater
NightMaree Skrevet 22. desember 2004 Forfatter Skrevet 22. desember 2004 ja, mn må eg skriva alle kordinatene, eller kan eg skriva f.ek shape1.left = 0 > 100 går de?? eg får de jalfall ikke til
Jonas Skrevet 22. desember 2004 Skrevet 22. desember 2004 Jeg skjønner ikke helt hva du mener. "shape1.left = 0 > 100" er ikke en "gylddig" kode, men "shape1.left = 0" er.
GenericName Skrevet 22. desember 2004 Skrevet 22. desember 2004 (endret) ... Endret 11. januar 2011 av Token
Zethyr Skrevet 22. desember 2004 Skrevet 22. desember 2004 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.
NightMaree Skrevet 22. desember 2004 Forfatter Skrevet 22. desember 2004 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å?
aadnk Skrevet 22. desember 2004 Skrevet 22. desember 2004 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
Jonas Skrevet 22. desember 2004 Skrevet 22. desember 2004 (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 22. desember 2004 av Jonas
GeirGrusom Skrevet 23. desember 2004 Skrevet 23. desember 2004 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
NightMaree Skrevet 23. desember 2004 Forfatter Skrevet 23. desember 2004 (endret) nå begynne eg å fatta 0 her... 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å.. Form1.frm Endret 23. desember 2004 av NightMaree
Jonas Skrevet 23. desember 2004 Skrevet 23. desember 2004 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
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå