Permalänk
Medlem

Problem med VB

Jag är nybörjare, började med vb för knappt en vecka sedan, och håller på med ett spel (har fått hjälp från en person).
Spelet går ut på att man ska kasta eldklot på varandra.
Varje gång man blir träffad ska det pipa (beep).
Men endra så slutar det inte att låta, eller så låter det bara en gång.
Gubbarna rör sig i Y led och eldkloten i X led.

Så här har jag försökt att lösa det:

Sub MoveArrows()
For i = 1 To UBound(Arrows)

Arrows(i).X = Arrows(i).X + 20

CheckArrow.Left = Arrows(i).X - 4
CheckArrow.Top = Arrows(i).Y
CheckArrow.Right = Arrows(i).X + picArrow1.ScaleWidth
CheckArrow.Bottom = Arrows(i).Y + picArrow1.ScaleHeight

If CheckArrow.Top >= motstandare1.Y And CheckArrow.Bottom <= motstandare1.Y + picMotstandare1.ScaleHeight And CheckArrow.Left >= motstandare1.X And HasBeeped2 = False Then
HasBeeped2 = True
Beep
Arrows(i).X = 1000
Arrows(i).Y = 1000
End If

If HasBeeped2 = True Then
hpMeter1.Text = hpMeter1.Text - 10
End If

Next i

End Sub

Sub MoveArrows2()
For i = 1 To UBound(Arrows2)
Arrows2(i).X = Arrows2(i).X - 20

CheckArrow.Left = Arrows2(i).X - 4
CheckArrow.Top = Arrows2(i).Y
CheckArrow.Right = Arrows2(i).X + picArrow2.ScaleWidth
CheckArrow.Bottom = Arrows2(i).Y + picArrow2.ScaleHeight

If CheckArrow.Top >= Gubbe1.Y And CheckArrow.Bottom <= Gubbe1.Y + picGubbe1.ScaleHeight And CheckArrow.Left <= Gubbe1.X And HasBeeped2 = False Then
HasBeeped = True
Beep
Arrows2(i).X = 1000
Arrows2(i).Y = 1000

End If

Next i

End Sub

Men det fungerar inte särskilt bra.

Kan ni komma med nåt bättre förskag?

Visa signatur

P5B E6600 2048MB 1900GT 2x300GB, MacBook Pro

Permalänk
Medlem

posta hela projectet så ska vi reda ut allt

Visa signatur

tack o bock

Permalänk
Medlem

Lägg in en DoEvents i din for next slinga.

Permalänk
Medlem

egekko, jag kan inte alls vb, kan du föklara hur man ska göra?

Visa signatur

P5B E6600 2048MB 1900GT 2x300GB, MacBook Pro

Permalänk
Medlem

AHA!!!!! GOT YOU!:D

Visa signatur

Min utvecklingsblogg: http://blog.iostream.cc

Permalänk
Medlem

Jag har gjort ett sådannt spel, heter Wild West, du kanske skulle vilja ta en titt på källkoden

Visa signatur

Min utvecklingsblogg: http://blog.iostream.cc

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av codename[black]
egekko, jag kan inte alls vb, kan du föklara hur man ska göra?

Enklast genoma att innan Next göra en ny rad och skriva DoEvents. När VB är inne i en For ... Next slinga så blir programmet väldigt upptaget med just slingan, genom att en gång varje varv lämmna över till systemet och låta det excekvera andra händelser så kommer saker som inte ligger i slingan att flyta. Hastigheten i slingan kommer dock att sjunka, dvs antalet varv/s mellan For ... Next.

Har man inte krav på att For ... Next ska gå så fort som möjligt så är det alltid bra att skjuta in DoEvents innan Next.

Permalänk
Medlem

DoEvents kan resultera i fel!!!!! Minnet kan ta slut och en rad andra fel.
Och loopen segas ner, om man har en liten loop bör man inte ha DoEvents.

Visa signatur

Min utvecklingsblogg: http://blog.iostream.cc