Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Törmäys (VB)

Sivun loppuun

makeuu [15.02.2004 15:55:06]

#

Miten tämän voisi toteuttaa vb:llä, että ukkelia liikutettaisi tällaisella scriptillä

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
   Case vbKeyLeft 'Vasemmalle
       Picture1.Left = Picture1.Left - 100
   Case vbKeyRight 'Oikeelle
       Picture1.Left = Picture1.Left + 100
   Case vbKeyUp 'Ylös
       Picture1.Top = Picture1.Top - 100
   Case vbKeyDown 'Alas
       Picture1.Top = Picture1.Top + 100
End Select
End Sub

niin miten tuohon sisällyttäisi että kun ukkeli menee rajan 120x120 yli.. (ainakin vb sanoi = framen leveys ja korkeus) että se ei menisi sen rajan yli :D?

hunajavohveli [15.02.2004 16:15:51]

#

If Picture1.Left > 120 Then Picture1.Left = 120

makeuu [15.02.2004 20:09:34]

#

lainaus:

If Picture1.Left > 120 Then Picture1.Left = 120

Tapahtuu vain että kun painaa vasenta nuolinäppistä niin se menee pisteeseen 120.. koko koodi menee näin ja mihin sijoitan tuo koodin?

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
   Case vbKeyLeft 'Vasemmalle
       Picture1.Left = Picture1.Left - 100
   Case vbKeyRight 'Oikeelle
       Picture1.Left = Picture1.Left + 100
   Case vbKeyUp 'Ylös
       Picture1.Top = Picture1.Top - 100
   Case vbKeyDown 'Alas
       Picture1.Top = Picture1.Top + 100
End Select
End Sub

edit: siis tuon koodinpätkäsi?

hunajavohveli [15.02.2004 20:20:30]

#

No ensinnäkin haluaisin kysyä, että miksi kummassa pitää hypätä 100 pikseliä kerralla?`Pari klikkausta mihin tahansa suuntaan ja heti tulee raja vastaan...

Sijoita se vaikka End Selectin ja End Subin väliin. Sama se kunhan testaat, mennäänkö yli, sen jälkeen kun olet liikuttanut kuvaa.

setä [15.02.2004 20:21:15]

#

Määrittele muuttujat X ja Y ja muuta koodia hieman

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Dim X As Sinngle, Y As Single
Select Case KeyCode
  Case vbKeyLeft 'Vasemmalle
      X = Picture1.Left - 100
  Case vbKeyRight 'Oikeelle
      X = Picture1.Left + 100
  Case vbKeyUp 'Ylös
      Y = Picture1.Top - 100
  Case vbKeyDown 'Alas
      Y = Picture1.Top + 100
End Select
If X > 120 Then X = 120
If Y > 120 Then Y = 120
Picture1.Move X, Y
End Sub

Nuo rajat on kyllä aika ahtaat vai pitikö se olla toisinpäin. Onko Scalemode 1 vai 3. Kuten hunajavohveli sanoi, hetihän tossa raja vastaan tulee.

makeuu [15.02.2004 20:23:30]

#

eiei.. ei se mene 100 pikseliä kerrallaan.. se menee noin 2pikseliä mutta tuo sinun pätkäsi vain siirtää tuota ukkelia siihen 120 kohdalle, kummallista eikö vain?

hunajavohveli [15.02.2004 20:27:13]

#

lainaus:

eiei.. ei se mene 100 pikseliä kerrallaan.. se menee noin 2pikseliä mutta tuo sinun pätkäsi vain siirtää tuota ukkelia siihen 120 kohdalle, kummallista eikö vain?

Sinulla on ilmeisesti käytössä mittayksikkönä Twit, joka on viidestoistaosa-pikseli. Kannattaa vaihtaa se Pixeliksi.

Tuo sedän vinkki on siitä parempi, että tuossa tapauksessa tarkistetaan uusi sijainti ennalta ja katsotaan siirrytäänkö siihen vai ei.
Tuo mitä minä ehdotin aiheuttaisi sen, että ensin siirretään kuva uuteen kohtaan (ja siirtyminen näkyy näytöllä) Sitten tarkistetaan onko epäkelpo sijainti. Ja jos on siirretään kuva takaisin (ja siirtyminen näkyy taas, eli kaikenkaikkiaan näkyy pieni nykäys kuvassa)

makeuu [15.02.2004 20:27:21]

#

JA muuten nuita muuttujia ei voi määrittää saman "viivan" alapuolelle.. ne menee väkisin ylempään.. :( mutta kokeilen joskus myöhemmin.. nyt on lähdettävä.. :)

hunajavohveli [15.02.2004 20:29:24]

#

Ai minkä saman "viivan"?

makeuu [15.02.2004 21:13:07]

#

Tarkoitan sen joka jaottelee eri subit.

makeuu [16.02.2004 10:02:18]

#

Mitä nuo x ja y tarkoittaa? ai sitä että x on yläkulma ja y alakulma.. tai jotain vastaavaa?

setä [16.02.2004 10:46:08]

#

Piste X, Y on PictureBoxin vasen ylänurkka. Siis X = vasen reuna ja Y = yläreuna.

makeuu [16.02.2004 14:26:09]

#

Okei...


Sivun alkuun

Vastaus

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

Tietoa sivustosta