Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Miten sais liikku picture boxin formilla luvun mukaa?

aloitteleva [15.07.2005 22:50:32]

#

Juu eli mä oon tehny formille mun monopoly pelin Sitku heittää noppaa niin sen ukon pitäis liikkua sen noppa luvun verran siellä oisko kellää ideoita?

Antti Laaksonen [15.07.2005 23:05:55]

#

Tarvitset muuttujan, joka kertoo pelaajan senhetkisen paikan. Jokaisella pelilaudan paikalla on oma numero, esim. lähtöruutu voisi olla 0, Korkeavuorenkatu 1, yhteismaa 2 jne., kunnes Erottajalla on viimeinen numero (39, jos laskin oikein). Nopanheiton jälkeen paikka muuttuu näin:

paikka = (paikka + noppa) Mod 40

Jakojäännöksen ansiosta pelaaja lähtee kiertämään lautaa uudestaan lähtöruudun kohdalta. Jos esim. ollaan Erottajalla ja heitetään 3, tulos on (39 + 3) Mod 40 eli 42 Mod 40 eli 2, joka on yhteismaa niin kuin pitääkin.

Tämän lisäksi pitää tietenkin tietää, missä kohdassa mikäkin paikka on kuvassa. Jos olet piirtänyt kuvan jotenkin säännöllisesti, tämän voi ehkä laskea suoraan, mutta voit myös kirjoittaa taulukkoon kunkin paikan koordinaatit. Sitten pelaaja onkin helppo liikuttaa oikeaan paikkaan nopanheiton jälkeen.

aloitteleva [15.07.2005 23:46:00]

#

Antti voisitkos selittää vähän tarkemmin jotenkin? Esim onko sulla msn messengeriä?

Antti Laaksonen [15.07.2005 23:53:04]

#

No tuo oli jo kohtalaisen tarkasti selitetty. Mutta kerro, mikä kohta jäi epäselväksi.

nomic [16.07.2005 00:13:40]

#

Toivottavasti alla oleva esimerkki selittää sitä, mitä Antti kertoili, tässä nytten koodilla selitettynä.

'pieni esimerkki siitä mitä Antti kertoi, ei kovin hyvää koodia, mutta eiköhän se aja asiaansa...

Dim noppa As Integer, paikka As Integer 'tarvitaan pari muuttujaa
Dim vanhapaikka As Integer

Dim kadut

Private Sub Form_Click()
    heitänoppaa 'mennääs funktioon riehumaan

    Form1.Caption = "paikka on nytten: " & paikka & ". vanhapaikka on: " & vanhapaikka & " ja noppa pisti luvun: " & noppa 'debuggausta varten
End Sub

Private Sub Form_Load()
    Randomize Timer 'alustetaan satunnaistin
    paikka = 0 'laitataas ukko lähtöruutuun
    kadut = Array("lähtöruutu", "ensimmäinenkatu", "toinen", "kolmas", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39") 'jokaiselle paikalle omat nimet, en jaksanut kirjoitella noita, kun en muistanut, niin pistin numerot ja krääsää.
End Sub

Function heitänoppaa()
    vanhapaikka = paikka 'vanhapaikka talteen (debuggausta varten)
    noppa = Int(Rnd * 6) + 1 'arvotaan luku 1...6 väliltä
    paikka = (paikka + noppa) Mod 40 'Antin viestistä, jonka Antti selitti hyvin.

    TarkistetaanPaikka paikka 'hypätään funkkariin ja parametrina toimikoon paikka, johon ollaan hypätty.
End Function

Function TarkistetaanPaikka(numero As Integer)
    MsgBox kadut(numero) 'viskataan paikan nimi messagepoksilla ruutuun
End Function

Vastaus

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

Tietoa sivustosta