Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++, VB6: hiirellä klikaus (vb)

efteri [17.03.2004 14:23:22]

#

Miten tai mitä siis pitää kirjoittaa koodiin että kun paina t ukko niin se tulee valituksi ja sitten kun painat paikka mihin sen pitäisi mennä niin se menee siihen (sillein että se näkyy kun se liikkuu paikasta toiseen eli EI siis "teleportti siirtoja) jos et ällynyt tarkotan että siis samalla tavalla liikuminen kuin warcraft:issä tai comand&conkuer pelissä.

kaviaari [17.03.2004 15:32:05]

#

Ota hiiren paikka talteen ja lähde liikuttamaan ukkoa tälleen:

if(kohdepaikka.x<ukko.x)
  ukko.x++;
if(kohdepaikka.x>ukko.x)
  ukko.x--;


if(kohdepaikka.y<ukko.y)
  ukko.y++;
if(kohdepaikka.y>ukko.y)
  ukko.y--;

Toi on c++:lla mutta periaatteen tosta kyllä tajuaa eli se tarkistaa onko kohde missä ukkoon nähden jos vaikka kohteen x on pienempi kuin ukon x niin ukon x arvoa tiputetaan.

rndprogy [17.03.2004 16:16:19]

#

No tässä koodin alun tynkä jota voi itse kehittää eteenpäin

Sub Form_MouseDown (button As Integer, Shift As Integer, x As Single, Y As Single)
If button = 1 And picture1.Left > x Then
Do
picture1.Left = picture1.Left - 1
Loop Until picture1.Left < x
End If
End Sub

Klikkaa picture boxin vasemmalta puolelta.

hunajavohveli [17.03.2004 16:45:59]

#

Tuon if picture < kuin kohde systeemin voi unohtaa. Siihen olen kehittänyt paljon kätevämmän konstin SGN-funktiolla, joka palauttaa joko 1, -1 tai 0 luvun etumerkin mukaan.

Näin:

Picture1.Left = Picture1.Left + Sgn(X - Picture1.Left) * 15
Picture1.Top = Picture1.Top + Sgn(Y - Picture1.Top) * 15

Tuo 15 on se luku kuinka nopeasti se Picture liikkuu. Ja suosittelisen ottamaan sen pois, kunhan vaihdat vaan formin mittasuhteet Twitin sijasta Pixeliksi.

Antti Laaksonen [17.03.2004 18:47:10]

#

Tässä on esimerkki, joka edellyttää, että formilla on Picture1-kontrolli.

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Dim kx As Integer, ky As Integer, xp As Integer, yp As Integer
    kx = Picture1.Left + Picture1.Width / 2 'kuvan keskipisteen x
    ky = Picture1.Top + Picture1.Height / 2 'kuvan keskipisteen y
    xp = X - kx 'x-suuntainen matka
    yp = Y - ky 'y-suuntainen matka
    Do
        'x-suuntainen liikkuminen
        If xp <> 0 Then
            Picture1.Left = Picture1.Left + Sgn(xp)
            xp = xp - Sgn(xp)
        End If
        'y-suuntainen liikkuminen
        If yp <> 0 Then
            Picture1.Top = Picture1.Top + Sgn(yp)
            yp = yp - Sgn(yp)
        End If
        'lopetus, jos ollaan perillä
        If xp = 0 And yp = 0 Then
            Exit Do
        End If
        'tähän voi laittaa viiveen!
        DoEvents
    Loop
End Sub

Vastaus

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

Tietoa sivustosta