PDA

Prikaži potpunu verziju : VB, hitna pomoć


SK fan
25.5.2008, 18:42
Znam da ne volite da vam početnici postavlju glupa pitanja ali meni je
potrebna pomoć hitno

na dno interfejsa Form 1 imam jedan image koji pomeram pomoću tastera
image mogu da promenim u command button
sa vrha padaju command buttoni i želim da kada dodirnu taj objekat koji pomeram
da se vrate na početak i da igrač mora da počene iz početka
ovo je nešto kao space invaders samo bez pucanja znači nešto jednostavno
ali mi je hitno potrebno

Hvala u napred

Marko_L
25.5.2008, 19:11
Koliko sam te razumeo, tebi treba neki jednostavan collision detection. U tvom slučaju to možeš uraditi uz malo proste matematike...
Recimo ako se image zove Image1 a command button Command1, možeš da proveriš ovako
If Command1.Top + Command1.Height >= Image1.Top Then
If Command1.Left + Command1.Width > Image1.Left And Image1.Left + Image1.Width < Command1.Left Then
'imamo koliziju, uradi nesto
End If
End If

SK fan
25.5.2008, 19:27
Upisao sam:
Private Sub Image1_Click()
If Command1.Top + Command1.Height >= Image1.Top Then
If Command1.Left + Command1.Width > Image1.Left And Image1.Left + Image1.Width < Command1.Left Then
End
End If
End If
End Sub

ali ne dešava se to što ja želim :(
Upisao sam isti kod i za Command button1 i ništa :n-cc2:

Marko_L
26.5.2008, 0:04
Pa normalno da se ništa ne dešava kada si stavio kod u click event. Stavi kod u neki tajmer ili petlju.

SK fan
26.5.2008, 16:21
OK uradio sam ono što mi treba ali malo drugačije
u timer1 sam napisao:
Private Sub Timer1_Timer()
Static BrTim As Integer
Command2.Top = Command2.Top + 40
Command3.Top = Command3.Top + 40
Command4.Top = Command4.Top + 40
Command5.Top = Command5.Top + 40
Command6.Top = Command6.Top + 40
Command7.Top = Command7.Top + 40
If Command2.Top > 12000 Then
Command2.Top = 0
End If
If Command3.Top > 12000 Then
Command3.Top = 0
End If
If Command4.Top > 12000 Then
Command4.Top = 0
End If
If Command5.Top > 12000 Then
Command5.Top = 0
End If
If Command1.Left = Command2.Left And Command1.Top = Command2.Top Then
End
End If
If Command1.Left = Command3.Left And Command1.Top = Command3.Top Then
End
End If
If Command1.Left = Command4.Left And Command1.Top = Command4.Top Then
End
End If
If Command1.Left = Command5.Left And Command1.Top = Command5.Top Then
End
End If


End Sub

Ali često se desi da ne bude kraj već da se promaše za vrlo malo može li to da se ispravi da ili da nastavim da podešavam brzine kretanja?

KarloBasic
26.5.2008, 20:04
Probaj ovako:

Rastojanje=10 ' Ili neka druga vrednost u zavinosti od potrebne blizine dodira
If Abs(Command1.Left - Command2.Left)<Rastojanje And Abs(Command1.Top - Command2.Top)<Rastojanje Then
End
End If

i tako za preostala 3 slucaja.

SK fan
27.5.2008, 18:48
Hvala svima na pomoći
reći ću vam kako je prošlo:)

SK fan
27.5.2008, 19:40
Probaj ovako:

Rastojanje=10 ' Ili neka druga vrednost u zavinosti od potrebne blizine dodira
If Abs(Command1.Left - Command2.Left)<Rastojanje And Abs(Command1.Top - Command2.Top)<Rastojanje Then
End
End If

i tako za preostala 3 slucaja.


Može tačno objašnjenje šta radi ovaj kod? jer mi nismo radili sa naredbom Abs
moram li ja da raspoređujem command buttone ili ih ovaj kod sam pomera?
Rekao bih da je ovo drugo ali morao sam da pitam:)

KarloBasic
28.5.2008, 3:23
Abs nije naredba nego funkcija (absolutna vrednost).

Kod proverava da li je razlika izmedju Command1 i Command2 po X(Left) i Y(Top) osi manja od Rastojanja ( u ovom slucaju 10 ) . Naravno da moras da pomeras Command buttone ne mogu se oni pomerati sami od sebe.

SK fan
28.5.2008, 8:34
OK OK hvala na pomoći
kao što sam rekao ja sam početnik ali ovo moram da završim