Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: voittojärjestelmä

sami_jokimies [17.05.2004 10:53:47]

#

miten saisin tehtyä pokeripeliin voittojärjestelmän (ja tuplauksen), peli toimii muuten erittäin hyvin (paitsi ilman voittoja), kortit jakaa ruudulle randomgeneraattori joka lataa kuvat resource tiedostosta randomilla valitun id:n mukaan...

VB4.0 PRO + WIN98 SE

hunajavohveli [17.05.2004 14:11:29]

#

Tarkistat vain, että jos löytyy kaksi samaa korttia, on kyseessä pari, tai jos löytyy kolme samaa niin kolmoset, jne. Näiden totetus voi aluksi olla mutkikasta, mutta ne kannattaa kuitenkin yrittää keksiä itse. Mutta jotta pääset alkuun, niin pari voidaan etsiä vaikka seuraavasti:

'oletetaan, että kortteja on viisi
'oletetaan, että kortit on tallennettu kortti-taulukkoon.

For a = 1 TO 5
For b = 1 TO 5

If kortti(a) = kortti(b) And a <> b Then Print "LÖYTYI SAMA!"

Next b
Next a

Edit: Epähuomios tuli ensin QB-tagit.

JoreSoft [18.05.2004 11:40:59]

#

Tässä yksinkertainen, tarkistus aliohjelma, olen käyttänyt sitä omassa... ohjelmssa. tää PL!Card(I) on oma kontrolli, mutta voit käyttää tilalla Integer-taulukkoa. otat vain pois PL! -osan alusta...(Form)
Esim:

Type CardType
    Value as Integer
    Suit as Integer
end type
Dim Card(0 to 4) as CardType    '5 Pelikorttia
Dim Deck(1 to 52) as CardType   '52 Korttia Korttipakkaan

Alkuperäinen koodi.

Sub TarkistaVoitot()
Dim N%, N1%, PP%

'Neljä samanlaista
S4 = 0
  For I = 0 To 1
    If S4 <> 4 Then S4 = 0
    For J = I To I + 3
      If PL!Card(I).Value = PL!Card(J).Value Then S4 = S4 + 1
    Next J
    If S4 = 4 Then Exit For
  Next I
  If S4 <> 4 Then S4 = 0
'Kolme Samanlaista
S3 = 0: N = 0
  For I = 0 To 2
    If S3 <> 3 Then S3 = 0
    For J = I To I + 2
      If PL!Card(I).Value = PL!Card(J).Value And S3 < 3 Then
        S3 = S3 + 1
        N = PL!Card(I).Value
      End If
    Next
  Next
  If S3 <> 3 Then N = 0
  If S3 <> 3 Then S3 = 0
'Kaksi Samanlaista
S2 = 0: N1 = 0
  For I = 0 To 3
    If S2 <> 2 Then S2 = 0
    For J = I To I + 1
      If PL!Card(I).Value = PL!Card(J).Value And PL!Card(I).Value <> N And S2 < 2 Then S2 = S2 + 1: N1 = PL!Card(I).Value
    Next
  Next
If S2 <> 2 Then S2 = 0
S1 = 0
N = 0
  For I = 0 To 3
    If S1 <> 2 Then S1 = 0
    For J = I To I + 1
      If PL!Card(I).Value = PL!Card(J).Value And PL!Card(I).Value <> N1 And S1 < 2 Then S1 = S1 + 1
    Next
  Next
If S1 <> 2 Then S1 = 0
'Onko Suora?
Suora = True
'Normaali suora Ilman jokeria.
For I = 0 To 3
  If PL!Card(I).Value + 1 <> PL!Card(I + 1).Value Then Suora = False
Next I

'sort in, 0, 4
'Onko Kaikki samaa maata?
Väri = True
For I = 1 To 4
  'Jos ei ole samaa maata
  If PL!Card(I).Suit <> PL!Card(0).Suit Then
    Väri = False
    Exit For
  End If
Next
End Sub

hunajavohveli [18.05.2004 12:05:05]

#

Tuo on tosiaan aika kattava koodi. Eri korttiryhmien tarkistukset voisi olla kätevintä pistää kaikki omiin funktiohinsa. Voisi kutsua vain kätevästi:

If Pari Then Print "Pari"
If Kolmoset Then Print "Kolmoset"
If Suora Then Print "Suora"
'jne...

ez [18.05.2004 21:12:46]

#

Ite tein joskus C:llä pokerin ja voiton tarkastukset oli kiva koodata :-)

Kannattaa miettiä tarkastus järjestystä, että tulee hyvä koodi, eikä kone tee turhaa työtä :-)

Esim jos on pari, niin ei tartte tarkastaa onko suoraa tai väriä jne.

Professori [22.05.2004 20:55:49]

#

Mä taas tein noi tarkistukset yhteen funktioon. Tarkastus alko epätodennäköisimmästä (värisuora) ja päätty kahteen pariin. Jos löyty vaikka suora, niin sitten hypättiin pois funktiosta.

Vastaus

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

Tietoa sivustosta