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ä.
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.
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.
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.
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
Aihe on jo aika vanha, joten et voi enää vastata siihen.