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
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.
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
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...
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.
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.
Aihe on jo aika vanha, joten et voi enää vastata siihen.