Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: VB-ongelma

LL [18.02.2003 17:11:57]

#

Private Sub Form_Activate()
Liiku.Interval = 10
Randomize Timer
suunta = 2
Robo.Left = Int(Rnd * Form1.Height)
Robo.Top = Int(Rnd * Form1.Width)
End Sub

Private Sub Liiku_Timer()
If suunta = 1 Then Robo.Top = Robo.Top + 100 'alas
If suunta = 2 Then Robo.Top = Robo.Top - 100 'ylös
If suunta = 3 Then Robo.Left = Robo.Left - 100 'vasemmalle
If suunta = 4 Then Robo.Left = Robo.Left + 100 'oikealle
End Sub

Tuonhan pitäisi liikuttaa tuoa Roboa ylöspäin, mutta ei liikuta. Jos laitan suunnan tuohon Liiku_Timer():in kohdalle, se toimii, mutta haluaisin tietää metenkä voi määritellä tuon muuttajan johonkin toiseen subiin niin että se toimii...

Antti Laaksonen [18.02.2003 17:37:52]

#

Sinun täytyy tehdä suunta-muuttujasta globaali eli kaikissa aliohjelmissa säilyvä. Globaalit muuttujat määritellään kooditiedoston alussa, (declarations)-osassa. Muuta siis tuon koodin alkuun esimerkiksi muotoon:

Dim suunta As Integer

Private Sub Form_Activate()
'jne...

trinit [18.02.2003 17:42:56]

#

lainaus:

Jos laitan suunnan tuohon Liiku_Timer():in kohdalle, se toimii, mutta haluaisin tietää metenkä voi määritellä tuon muuttajan johonkin toiseen subiin niin että se toimii...

Laita formin General-osioon (eli koodissa ihan sinne ylös) rivi

Dim suunta As Integer (tai As Byte käy ihan hyvin)

Nyt suunta muuttuja näkyy formilla kaikille aliohjelmille.

PS. Tuo Form_Activate subissa olevat Robo.Left ja Robo.Top kannattaisi laittaa näin päin niin liikkuu loogisesti:

Robo.Left = Int(Rnd * Form1.Width)
Robo.Top = Int(Rnd * Form1.Height)

edit: Antti ehti kirjoittaa ennemmin :)

thefox [18.02.2003 19:18:01]

#

Kannattaa muuten myös käyttää "Option Explicit" -avainsanaa niin muuttujat on muistaakseni pakko määritellä.. tuossahan VB luo kummallekin funktiolle oman "suunta"-muuttujan.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta