Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Potti.textistä pitäisi saada (rahat) omiin rahoihin tai vastustajan

Sivun loppuun

aloitteleva [24.07.2005 19:45:26]

#

Potti.textistä pitäisi saada (rahat) omiin rahoihin tai vastustajan

Eli mä oon nyt kirjottanu semmosta jänää peliä missä nyt ollaa kasinossa. Potti.textistä pitäis saada luvut siirrettyy omatr.text tai vastr.text oon yrittäny

Potti.Text = Potti.Text - Potti
vastr.Text = vastr.Text + Potti
Potti.Text = Potti.Text - Potti
omatr.Text = omatr.Text + Potti

Mut ei onnistu kiitos etukäteen

Harrastelija [24.07.2005 20:41:18]

#

Näin tekisin itse:

Dim SaatuSumma
Dim OmaSumma
SaatuSumma = Potti.text
OmaSumma = omatr.text
OmaSumma = Omasumma + SaatuSumma

Ja muistithan asettaa aluksi textboxin textiksi 0? ;)

ilman sitä ei homma pelaa.

>>Harrastelija>>

neau33 [24.07.2005 21:02:07]

#

Hei "aloitteleva"...kokeile seuraavaa juttua...

'ekaks moduuliin vaikkapa näin..
Global Potti As Variant, pelaaja As Integer, panos As Variant, orahat As Variant, vrahat As Variant

'ja sit aliohjelmat...
Private Sub Satsaus_aliohjelma
 'Potti kasvaa...
 Select Case pelaaja
  Case 0: 'omat rahat vähenee
   orahat = orahat - panos: omatr.Text = Str$(orahat)
  Case 1: 'vastustajan rahat vähenee
   vrahat = vrahat - panos: vastr.Text = Str$(vrahat)
  End Select
   Potti = Potti + panos: Potti.Text = Str$(Potti)
 End Sub

Private Sub Voitto_aliohjelma
  'Potti tyhjenee...
 Select Case pelaaja
  Case 0 'jos voittaa itse
   orahat = orahat + Potti: Potti = 0: omatr.Text = Str$(orahat)
  Case 1 'jos vatustaja voitaa
   vrahat = vrahat + Potti: Potti = 0: vastr.Text = Str$(vrahat)
 End Select
   Potti.Text = ""
End Sub

aloitteleva [24.07.2005 21:36:12]

#

Potti.Text = Potti.Text - Potti
omatr.Text = omatr.Text + Potti

tekee saman asian kuin

Dim SaatuSumma
Dim OmaSumma
SaatuSumma = Potti.text
OmaSumma = omatr.text
OmaSumma = Omasumma + SaatuSumma

ja nea toi sunkaan ei toiminu niinku piti

Juice [24.07.2005 22:21:42]

#

Mutta kumpikohan on selkeämpää; pitää noita summia omissa muuttujissaan vaiko tekstikenttien teksteissä ;)
Lisäksi olisi kiva tietää, että miten ei toimi?

aloitteleva kirjoitti:

Potti.textistä pitäis saada luvut siirrettyy omatr.text tai vastr.text oon yrittäny

Mikäli nyt oikein käsitin, niin

omatr.Text = Potti.Text
vastr.Text = Potti.Text

neau33 [24.07.2005 22:59:54]

#

Toimii... kunhan muistat kutsua aliohjelmia oikeaan aikaan, oikeassa paikassa ja annat jossain tapahtumassa arvot muuttujille: panos ja pelaaja sekä jonkin alkusumman molemmille (kaikille) pelaajille vaikkapa Form_Load tapahtuman yhteydessä... Eli siis testaa homma uudestaan vaikkapa seuraavasti: Avaat uuden Projektin ja lisäät siihen moduulin jonka Declarations osaan leikkaat ja liität tosta mun aikasemmasta laatikosta sen koko rivin, joka alkaa sanalla Global. Sen jälkeen tuplaklikkaat sitä Form1:stä ja sit leikkaat kaikki ne loput rivit siitä mun edellisestä laatikosta alkaen riviltä, jossa lukee ensimmäisen kerran Private... ja liität sen sinne Formiin johonkin kohtaan missä lukee End Sub alapuolelle. Sit seuraavaks lisäät Form_Load tapahtumaan seuraavan rivin:

Private Sub Form_Load()
orahat = 100: vrahat = 100 'alkaa tästä
End Sub

Sit sä ootkin jo laittanut sinne ne ne kolme TextBox'ia joiden name- arvoiksi sä oot laittanut Potti, omatr ja vastr. Sit sä voit vielä laittaa yhden TextBox'in lisää vaikkapa Text1. Sit laita sen TextBox'in Change tapahtumaan seuraava rivi:

Private Sub Text1_Change()
 panos = Val(Text1.Text) 'alkaa tästä
End Sub

Sit sä ihan kylmästi laitat sinne formiin yhden napin, vaikkapa "Command1" ja pistät sen napin MouseUp tapahtumaan seuraavat rivit:

Private Sub Command1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
if pelaaja = 0 Then 'alkaa tästä
pelaaja = 1:Satsaus_aliohjelma: Exit Sub
Else: Peleaaja = 0: Satsaus_aliohjelma: Exit Sub
End  if 'loppuu tähän
End Sub

Sit sä ihan kylmästi laitat sinne formiin toisen napin, vaikkapa "Command2" ja pistät sen napin MouseUp tapahtumaan seuraavat rivit

Private Sub Command2_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
if pelaaja = 0 Then 'alkaa tästä
pelaaja = 1:Voitto_aliohjelma: Exit Sub
Else: Peleaaja = 0: Voitto_aliohjelma: Exit Sub
End  if 'loppuu tähän
End Sub

Sit kun sä ajat sitä testausohjelmaa niin kirjota siihen Text1 box'iin joku luku esim. 10 ja painele niitä kahta nappia ja kato mitä tapahtuu

nomic [24.07.2005 23:29:40]

#

Näin itse tekisin, pari tarkistusta mukana eli periaate:
Kun haluamme pelata, tarkistetaan rahatilanne.
Jos meillä on varaa, pelaamme, jos ei ole, meidät viskotaan veke, pelierän jälkeen tarkistetaan taas rahat.

Dim potti_luku As Integer, omatrahat As Integer  'tarvitaan pari muuttujaa, potin oma luku sekä omatrahat

Private Sub Command1_Click()
    onkorahaa 'mennään tarkistamaan onko meillä rahaa enään pelaamista varten
    pelaas 'hypätään aliohjelmaan

End Sub

Private Sub Form_Load()
    Randomize Timer 'alustetaan randomimimimimimi
    omatrahat = 0 'meidän rahat
    onkorahaa 'tarkistetaan voidaanko ylipäätänsä pelata enään
End Sub

Sub pelaas()
        'randomilla joku potti vain
        potti_luku = Int(Rnd * 100) - 80 'eli -50 ... +50 -väliltä jotain randomilla
        potti.Text = potti_luku 'tulostetaan luku

        If potti_luku > 0 Then 'arvo on enemmän kuin nolla
            potti.Text = potti.Text & ". plussalle men" 'näytetään miten kävi (meni plussan puolelle)
        ElseIf potti_luku < 0 Then 'arvo on vähemmän kuin nolla
            potti.Text = potti.Text & ". miinuksel men" 'näytetään miten kävi (miinukselle meni)
        Else 'jos ei muutakaan niin...
            potti.Text = potti.Text & ". et hävinyt, etkä voittanut" 'näytetään miten kävi (tuli nolla)
        End If

        omatrahat = omatrahat + potti_luku 'lisätään muuttujaan voitettu/hävitty summa. ja jos meni miinukselle silloin negatiivinen luku plussataan päälle, eli meidän potista miinustetaan se tietty määrä
        omatr.Text = omatrahat 'näytetään nykyinen tilanne

        onkorahaa 'mennään tarkistamaan onko meillä rahaa enään, pelin jälkeen
End Sub

Function onkorahaa()
    If omatrahat <= 0 Then 'jos rahaa ei ole enään, ehto toteutuu
        MsgBox "sulta on rahat loppu, et voi pelata!" 'huudellaas vähän
        End 'lopetamme itsemme
    End If
End Function

En nytten tiedä oliko tuo nytten se mitä hait, mutta ainaskin ajaa asiansa.
Jos tulee ongelmia, kerro missä ja miten, mitä herjaa jne...

aloitteleva [24.07.2005 23:53:10]

#

Eli siis nomic toikaa ei ollu se mitä hain oon ite ton jo koodannu mutku mul on omissa rahoissa 50 ja vastustajalla on 50 sitteki painan nappulaa pottiin menee rahaa sitteki peli on pelattu niin se laittaa näil koodeil iha miljoonii rahoihin

Potti.Text = Potti.Text - Potti
vastr.Text = vastr.Text + Potti
Potti.Text = Potti.Text - Potti
omatr.Text = omatr.Text + Potti

semmosta hain

neau33 [25.07.2005 00:01:20]

#

Hei aloitteleva!
Eiks se oo ihan hyvä juttu ainakin jos tulee omiin rahoihin miljoonii koko ajan ja varsinkin sitten, kun peli on pelattu...

nomic [25.07.2005 00:28:59]

#

Dim koko_potti As Integer, mun_rahat As Integer, vastustajan_rahat As Integer
Dim vastustajan_rahat_pottiin As Integer, mun_rahat_pottiin As Integer 'pottiin laitettavat rahat

Private Sub Command1_Click()

    mun_rahat = mun_rahat - mun_rahat_pottiin 'nää nyt tulee pottiin, eli miinustetaan sen verran kuin pottiin pistetään
    vastustajan_rahat = vastustajan_rahat - vastustajan_rahat_pottiin

    koko_potti = vastustajan_rahat_pottiin + mun_rahat_pottiin 'laitetaan pottiin tietty määrä rahaa, joka tässä tapauksessa on kummaltakin 50, eli 100 yhteensä
    potti.Text = koko_potti 'näytetään koko roska

    randomi = Int(Rnd * 2)

    MsgBox koko_potti

    If randomi = 0 Then 'voitettiin
        MsgBox "voitettiin!"
        mun_rahat = mun_rahat + koko_potti 'saatiin kaikki rahat tottakai
        'vastustajan_rahat = vastustajan_rahat - vastustajan_rahat_pottiin 'vastustaja joutuu luopumaan, rahasta jotka laittoi pottiin
    Else
        MsgBox "hävittiin :(((((((((((!" 'eli ei saada mitään takaisin, pelkästään vihu saa rahaa, meidän ei enään tarvii maksaa mitään kun se tehtiin jo aikaisemmin, kun tungettiin rahaa pottiin
        vastustajan_rahat = vastustajan_rahat + koko_potti
    End If

    kokopotti = 0

    Form1.Caption = "tilanne: meillä on rahaa: " & mun_rahat & ". ja vihulla on rahaa: " & vastustajan_rahat

End Sub

Private Sub Form_Load()
    mun_rahat = 50
    vastustajan_rahat = 50
    mun_rahat_pottiin = 10 'annetaan jänskät arvot
    vastustajan_rahat_pottiin = 10
End Sub

olisikohan toi lähempänä sitä mitä haet? oon sen verran väsynyt että koodi on mitä on ja virheitä varmaankin on seassa.

neau33 [25.07.2005 08:13:10]

#

Hei aloitteleva!
alla olevalla koodilla voitat varmasti joka kerta, mutta jos selvität miten antaa vastustajankin voitaa aina silloin tällöin, niin olet ainakin hieman alkua pidemmällä

'Moduuliin
Global Potti As Variant, panos As Variant, orahat As Variant, vrahat As Variant, pelaaja As Integer

'Tapahtumiin
Private Sub Command1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
If pelaaja = 0 Then
pelaaja = 1: Satsaus_aliohjelma: Exit Sub
ElseIf pelaaja = 1 Then
pelaaja = 0: Satsaus_aliohjelma:  Exit Sub
End If
End Sub
Private Sub Command2_Click()
 Voitto_aliohjelma
End Sub

Private Sub Form_Load()
orahat = 100: vrahat = 100: Potti = 0
End Sub

Private Sub Text1_Change()
panos = Val(Text1.Text)
End Sub

'aliohjelmat
Private Sub Satsaus_aliohjelma()
 'Potti kasvaa...
 Select Case pelaaja
   Case 0: 'omat rahat vähenee
   orahat = orahat - panos: omatr.Text = Str$(orahat)
   Case 1: 'vastustajan rahat vähenee
   vrahat = vrahat - panos: vastr.Text = Str$(vrahat)
   End Select
   Potti = Potti + panos: panos = 0: Text1.Text = "0": Potti.Text = Str$(Potti)
 End Sub

Private Sub Voitto_aliohjelma()
  'Potti tyhjenee...
 Select Case pelaaja
  Case 0 'jos voittaa itse
   orahat = orahat + Potti: Potti = 0: omatr.Text = Str$(orahat)
  Case 1 'jos vatustaja voitaa
   vrahat = vrahat + Potti: Potti = 0: vastr.Text = Str$(vrahat)
 End Select
   Potti.Text = "0"
End Sub

Harrastelija [25.07.2005 10:30:40]

#

neau33 kirjoitti:

Hei aloitteleva!
Eiks se oo ihan hyvä juttu ainakin jos tulee omiin rahoihin miljoonii koko ajan ja varsinkin sitten, kun peli on pelattu...

mutta ehkä se ei ole Aloittelevan tarkoitus.. ;)

Joo, mulla oli sama ongelma kun yritin tehdä maalinmyyntipeliä. Eli siinä myytiin maalipurkkeja ja jos oli hyvä ilma niin meni enemmän jne.. ja voitot kasattiin sitten omaan taskuun.

Muistaakseni ratkaisin sen vaihtamalla textboxit labeleihin.

>>Harrastelija>>


Sivun alkuun

Vastaus

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

Tietoa sivustosta