Ti 84 plus blackjack probleem

Status
Niet open voor verdere reacties.

Subplayer52

Gebruiker
Lid geworden
30 aug 2012
Berichten
996
Hallo helpmijers :),

Het zijn weer examens en ik verveelde mij even en ik dacht dat ik een spelletje op mijn rekenmachine ging zetten.
Ik was dus begonnen (ik ben een absolute beginner dus lach niet om mijn code :p) en het was sneller gedaan als ik dacht.
Nu, er zit een fout in, want elke 20 keer of zo dan neem ikzelf 2 kaarten maar dan kom ik bijvoorbeeld 28 uit. Ik snap niet hoe dit kan, ik heb er meerdere keren over gelezen.
Kan iemand mij helpen ajb?
Code:
(randInt(1,10)+randInt(1,10))-->A
While A<=13
(A+randInt(1,10))-->A
End
If A>21
Then
Dips "COMP HEEFT"
Disp "VERLOREN",A
Goto N
Else 
If A=21
Then 
Goto F
Else
Goto Z
End
Lbl Z
Disp "COMP HEEFT",A
Lbl I
(randInt(1,10)+randInt(1,10))-->C
Disp "JIJ HEBT",C
Lbl H
Disp "WIL JE NOG EEN KAART?"
Input D
If D=1
Then 
Goto E
Else
Goto F
End
Lbl E
(C+randInt(1,10)-->C
If C>21
Then
Goto F
Else 
Disp "JE HEBT NU",C
Goto H
Lbl F
If A>=C or C>21 or A=21
Then 
Disp "JE HEBT VERLOREN"
Disp "JIJ",C
Disp "COMP",A
Goto N
Else 
Disp "JE HEBT GEWONNEN"
Disp "JIJ",C
Disp "COMP",A
End
Lbl N
Pause
Menu("HALLO","SPEEL",Y,"STOP",X
Lbl Y
ClrHome
prgrmBLAKJAK
Lbl X
Disp "DAAAG"
Stop

Het probleem is dus dat soms het programma meteen zegt dat ik verloren heb en dan dat ik bijvoorbeeld 28 heb, ik snap niet hoe dit komt.
Als er iemand verbeteringen heeft (die er ongetwijfeld zijn ;)) zou ik het leuk vinden moest die die vermelden.
 
Ik snap de structuur van je programma niet goed.
Zou zoiets moeten zijn:

Code:
Menu (M)
Random getal ([COLOR="#FF0000"]R[/COLOR])

Check of totaal > 21
     Zo ja: terug naar menu
     Zo nee:
          totaal = 21 -> [COLOR="#FF0000"][B]Gewonnen[/B] -> evt. highscorelijst toevoegen[/COLOR]
          totaal < 21 [COLOR="#FF0000"][B]stoppen j/n[/B][/COLOR] ?
                 Wel stoppen: naar menu en evt. highscorelijst toevoegen
                 Niet stoppen: ga naar R


En hoe wordt de strategie van de computerspeler dan precies bepaald?

Verder staat er één keer Dips i.p.v. Disp.
 
Het was op mijn rekenmachine voor wat tijdverdrijf :),
de computer neemt 2 kaarten (dit is zogezegd de randInt) en hij blijft er nemen totdat hij minstens 13 heeft.
Maar voor de rest werkt het wel allemaal, maar ik verstond gewoon niet hoe het soms kwam dat ikzelf meteen verloor doordat ik 28 had bijvoorbeeld.

Voor de rest ben ik niet erg thuis in de meer advanced commands van mijn rekenmachine, daarom gebruik ik veel Lbl en Goto.
Maar toch bedankt voor de tips, ik zal proberen om er een scorelijst in te implementeren.

Nu de structuur bespreken:

Code:
(randInt(1,10)+randInt(1,10))-->A [COLOR=#ff0000]Hier trekt de computer 2 kaarten[/COLOR]
While A<=13 [COLOR=#ff0000]Hier dacht ik de computer kaarten bij te laten trekken[/COLOR]
(A+randInt(1,10))-->A
End
If A>21
Then
Dips "COMP HEEFT"
Disp "VERLOREN",A [COLOR=#ff0000]Hier gaat hij naar N, het einde[/COLOR]
Goto N
Else 
If A=21 [COLOR=#ff0000]Als hij al 21 had dan was ik zeker verloren[/COLOR]
Then 
Goto F
Else
Goto Z
End
Lbl Z
Disp "COMP HEEFT",A
Lbl I
(randInt(1,10)+randInt(1,10))-->C [COLOR=#ff0000]Hier begin ik, ik trek al zeker 2 kaarten[/COLOR]
Disp "JIJ HEBT",C
Lbl H
Disp "WIL JE NOG EEN KAART?"
Input D
If D=1 [COLOR=#ff0000]1 staat gelijk aan ja :)[/COLOR]
Then 
Goto E
Else
Goto F
End
Lbl E
(C+randInt(1,10)-->C [COLOR=#ff0000]Hier neem ik een kaart erbij, ik sla het dan terug op in C omdat dat mij gemakkelijk leek[/COLOR]
If C>21
Then
Goto F
Else 
Disp "JE HEBT NU",C
Goto H
Lbl F
If A>=C or C>21 or A=21
Then 
Disp "JE HEBT VERLOREN"
Disp "JIJ",C
Disp "COMP",A
Goto N
Else 
Disp "JE HEBT GEWONNEN"
Disp "JIJ",C
Disp "COMP",A
End
Lbl N
Pause
Menu("HALLO","SPEEL",Y,"STOP",X
Lbl Y
ClrHome
prgrmBLAKJAK
Lbl X
Disp "DAAAG"
Stop


Voor alle duidelijkheid:
Ik heb nog nooit echt geprogrammeerd, dus dit ziet er zeer amateuristisch uit, maar het was en probeersel en er zit een foutje in, maar ik vind het gewoon niet.
Toch bedankt voor alle hulp, en ik denk dat het tijd wordt dat ik mij is ga verdiepen want dit vind ik wel leuk.
 
Probeer de code naar zoiets om te vormen.

Code:
Menu (M)

Random getal (R)
Check of totaal > 21
     Zo ja: Ga naar C en sowieso verloren
     Zo nee:
          totaal = 21 -> Gewonnen -> evt. highscorelijst toevoegen
          totaal < 21 Trek nog een kaart j/n ?
                 Nieuwe kaart -> naar R
                 Geen nieuwe kaart: Computer is aan de beurt (C)

Computer (C)
Random getal
Getal <= 13 ? Zo ja: stoppen, zo nee: nog een kaart.

Laat scores zien.

Als je vastloopt, hoor ik het wel.

Kijk ook eens naar:
- WabbitEmu;
- TokenIDE;
- Het 'Text'-commando (om kleine tekst weer te geven).
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan