Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Miksi luku ei muutu oikein?

feltsu [05.10.2009 21:22:25]

#

Moikka! Elikkä koitan tehä semmosta character creation systeemiä, roolipelin alkuosioon ja mulla on moduuli missä on seuraavat tiedot:

Option Explicit

Public Type tPlayer
    name As String
    race As String
    age As Integer
'Attributes
    str As Integer
    dex As Integer
    con As Integer
    wis As Integer
    cha As Integer
'General stuff
    lvl As Integer
    nextlvl As Integer
    gold As Integer
    xp As Integer
    hp As Integer
    maxhp As Integer
    sp As Integer
    maxsp As Integer
    af As Single
    df As Single
    points As Integer
'Battle stuff
    hitfctr As Single
    dmgfctr As Single
    tohit As Single
    dice As Single
    dmg As Single
    realdmg As Integer
End Type

Ja sitte mulla on formissa buttoneita seuraavilla tiedoilla:

Private Sub btnChaApply_Click(Index As Integer)

    player.points = 38

    lblStr.Caption = player.str
    lblDex.Caption = player.dex
    lblCon.Caption = player.con
    lblWis.Caption = player.wis
    lblCha.Caption = player.cha

    Select Case (Index)

        Case 0
            player.str = player.str + 1
            player.points = player.points - 1
            lblPoints.Caption = player.points
        Case 1
            player.str = player.str - 1
            player.points = player.points + 1
            lblPoints.Caption = player.points
        Case 2
            player.dex = player.dex + 1
            player.points = player.points - 1
            lblPoints.Caption = player.points
        Case 3
            player.dex = player.dex - 1
            player.points = player.points + 1
            lblPoints.Caption = player.points
        Case 4
            player.con = player.con + 1
            player.points = player.points - 1
            lblPoints.Caption = player.points
        Case 5
            player.con = player.con - 1
            player.points = player.points + 1
            lblPoints.Caption = player.points
        Case 6
            player.wis = player.wis + 1
            player.points = player.points - 1
            lblPoints.Caption = player.points
        Case 7
            player.wis = player.wis - 1
            player.points = player.points + 1
            lblPoints.Caption = player.points
        Case 8
            player.cha = player.cha + 1
            player.points = player.points - 1
            lblPoints.Caption = player.points
        Case 9
            player.cha = player.cha - 1
            player.points = player.points + 1
            lblPoints.Caption = player.points

    End Select

End Sub

Private Sub cmdApply_Click()
    fraApply.Visible = True

    player.age = txtAge.Text
    player.name = txtName.Text

    lblName.Caption = player.name
    lblAge.Caption = player.age

    cmdRoll.Enabled = False
    cmdApply.Enabled = False

    txtName.Enabled = False
    txtAge.Enabled = False

    player.str = 5
    player.dex = 5
    player.con = 5
    player.wis = 5
    player.cha = 5

End Sub

Ja tossa btnChaApply-nappisekasikiössä on siis monta nappia (10) joista joka toinen on + captionilla ja joka toinen - captionilla. Eli tarkoitus ois siis että kun klikkaa plussaa niin (yllätys, yllätys) atribuutin pitäis nousta yhdellä ja käytössä olevien pisteiden pitäis vähentyä yhdellä jne. Seuraavanlaisia bugeja ainakin oli ku yritin kokeilla:

ku klikkaa plussaa mistä tahansa atribuutista niin total pointsit menee 37:ään ja kun klikkaa miinusta mistä tahansa atribuutista niin total pointsit menee 39:ään.
jos klikkaa esim dexterityn (dex) kohdalta plussaa niin se atribuutti ei nouse ennenku on klikannu jotain muuta nappia (ihan sama mitä niistä napeista, eli päivitys ei ilmeisesti ole ihan kohdallaan)
ja sitte ku koittaa vaihtaa atribuuttia mitä nostaa niin se muuttaa edellistä atribuuttia vielä kerran ennenkun alkaa muokkaamaan sitä mitä nyt klikkasit, eli esim klikkaan dexterity + 1 nappia ja sen jälkeen constitution + 1 nappia niin nostaa vielä yhden dexterityä vaikka painan sitä constitutionia.

Siinä formilla näkyy siis noi playerin tiedot labeleissa.

Muuten voisin hommaa googlettaakkin, mutta kun en oikein ymmärrä ongelmaa joten joudun teitä Putkalaisia häiritsemään taas vähän typerillä kysymyksillä :(

-Feltsu

RQ [05.10.2009 21:42:44]

#

feltsu kirjoitti:

ku klikkaa plussaa mistä tahansa atribuutista niin total pointsit menee 37:ään ja kun klikkaa miinusta mistä tahansa atribuutista niin total pointsit menee 39:ään.

Joka kerta, kun klikkaat btnChaApply-nappia, asetat player.pointsin uudestaan 38:ksi.

feltsu kirjoitti:

jos klikkaa esim dexterityn (dex) kohdalta plussaa niin se atribuutti ei nouse ennenku on klikannu jotain muuta nappia (ihan sama mitä niistä napeista, eli päivitys ei ilmeisesti ole ihan kohdallaan)

Klikatessa btnChaApplya päivität labelien captionit jo ennen kuin asetat attribuuteille uuden arvon. Eli vaihdat vain niiden paikkoja, niin pitäisi toimia.
Viimeiseen kysymykseen en nyt äkkiseltään löydä vastausta koodia katsomalla, kun ei ole VB6:tta asennettu enkä voi kokeilla.

feltsu [06.10.2009 11:47:47]

#

Aivan! Kiitos RQ, nyt lähti pelittää niinku halusinkin :) Mut tässä nyt vois samaan syssyyn kysästä että mistä löytää semmosen "optionin" tai mikä se nyt sitte oliskaan että formit avautuu aina samaan kohtaan, että ku tossa samaisessa pelissä nyt on useampi formi ja sitte vähä vaihtelee että mitä formei näkyy milläkin hetkellä niin miten saan sillai että form2 latautuu juuri piiloon menneen form1:sen päälle? Vähän meinaa rasittavaa ku kokoajan pomppii formit ruudulla paikasta toiseen :) Meni kyllä vähän offtopiciksi tähän alkuperäiseen kysymykseen nähden, mutta sattuu sitä paremmissakin piireissä :)

-Feltsu

Vastaus

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

Tietoa sivustosta