Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Editori peliin

tuomas [31.08.2004 16:29:44]

#

Teen Erääseen peliini kenttäeditoria.
Kenttä on yhdessä suuressa pictureboxissa (picture1)
ja vierestä valitaan minkälaista palaa halutaan kenttään tyrkätä. Palan lisäys tapahtuu blittamaalla valittu pala kursorin alla olevaan x ja y kordinaattiin.
Ongelmana on se että palat eivät mene oikein kohdilleen.
Palojen koko on 40x40 pikseliä ja ne kuuluisi saada tuohon kenttään 40 pikselin välein, niin että ne eivät mene toistensa päälle osittain vaan aina toisen viereen.
Keksisikö joku hyvän tavan jolla voitaisiin manipuloida hiiren liikkeittä niin että se liikkuisi 40 pikseliä kerrallaan? näin palat menisivät aina paikoilleen.
Toivottavasti ymmärsitte mitä tarkoitan..

Jaska [31.08.2004 16:37:57]

#

Eikös Windows huolehdi itse hiiren näytöstä joten sitä ei voi muuttaa. Voit kuitenkin tarkistaa missä 40x40 -neliössä kursori on ja jos neliö vaihtuu, päivitä palikan sijainti.

tuomas [31.08.2004 16:43:18]

#

eli haen x ja y kordinaatin ja katson missä palikassa kursori on mutta tulee miljoona riviä iffiä...
Mitenköhän onnistuisi helposti minkä palan kohdalla ollaan..?

Antti Laaksonen [31.08.2004 16:44:30]

#

Hiiren muuttaminen nykiväksi ei ole järkevää. Sen sijaan sinun kannattaa laskea palikan paikka hiiren sijainnin perusteella niin, että se osuu aina kohdalleen. Jaa molemmat hiiren koordinaatit palikan koolla niin, että tulos on kokonaisluku. Sitten kerro tulos jälleen palikan koolla. Näin saat selville sen palikan vasemman ylänurkan koordinaatit, jonka alueella hiiri on.

Tämä esimerkki piirtää pisteen aina 40 pikselin välein, jos Scalemode on 3.

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    PSet ((X \ 40) * 40, (Y \ 40) * 40)
End Sub

tuomas [31.08.2004 16:58:47]

#

Sehän lähti toimimaan oikein hyvin ilman tuota miljoonaa if riviä. Kiitos paljon.

tuomas [01.09.2004 20:18:17]

#

Editori toimii jo nyt hyvin..

Vastaus

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

Tietoa sivustosta