Hoe kijken voor een small straight?

Status
Niet open voor verdere reacties.

profound

Nieuwe gebruiker
Lid geworden
30 mrt 2010
Berichten
2
Hey iedereen!

Ik zit nu al heel de dag te vloeken op dit probleem, en ik geef het op! Hopelijk kunne jullie mij wat helpen.
Ik ben in VB Yathzee aan het maken. Het enige wat me niet lukt is checken of ik een small straight heb (een kleine straat).
Dus;
1234x
2345x
3456x

de x kan elk getal van 1 tem 6 zijn, en daar knelt het schoentje.

Alles zit in een collectie, die gevuld zit met 5 dobbelstenen, met elk een waarde.

Ik dacht eerst te kijken of het getal 1 minder is dan het volgende getal
Code:
 If combinatie(teller).Value + 1 = combinatie(teller + 1).Value Then
        '            opeenvolgend += 1
           End If

En dan kijken of opeenvolgend gelijk is aan 3, maar als ik dan 12356 heb bijvoorbeeld kom ik ook uit op 3.
-> geen kleine straat, maar hij zou dan aangeven van wel

Als ik dan wil kijken of er 4 getallen achter elkaar 1 minder is dan het volgende getal, dan kom ik in de problemen bij 12334
-> wel een kleine straat maar hij zou aangeven van niet.

Dus ik weet het niet goed meer. Iemand die me kan helpen? :confused:

Sry als deze vraag wat vreemd overkomt, ik ben nog niet lang aan het programmeren :P
 
Laatst bewerkt:
wat je kunt doen is al je ge-gooide getallen in een string zetten.
en dan controlleren of alle nummers die je nodig hebt voor een small straight in die string zitten :D


vergeten er bij te zetten hoe je dat moet doen :D

komt ie:

dim s as string = nothing

if instr(s, 1) > 1 then
1 zit erin, test voor 2.
end if
 
Laatst bewerkt:
Of je doet het met een 'or' statement:

Code:
        If combinatie(teller).Value + 1 = combinatie(teller + 1).Value or combinatie(teller).Value = combinatie(teller + 1).Value Then
            '            opeenvolgend += 1
        End If


Ik heb het niet getest, maar volgens mij zou het moeten werken als de getallen van laag naar hoog staan.

Succes!:thumb:
 
Laatst bewerkt:
Of je doet het met een 'or' statement:

Code:
        If combinatie(teller).Value + 1 = combinatie(teller + 1).Value or combinatie(teller).Value = combinatie(teller + 1).Value Then
            '            opeenvolgend += 1
        End If


Ik heb het niet getest, maar volgens mij zou het moeten werken als de getallen van hoog naar laag staan.

Succes!:thumb:

Hier doe je toch net hetzelfde als hetgeen je doet voor de 'or'?
Hier heb je dan ook een straat als je 65321 hebt.


wat je kunt doen is al je ge-gooide getallen in een string zetten.
en dan controlleren of alle nummers die je nodig hebt voor een small straight in die string zitten :D


vergeten er bij te zetten hoe je dat moet doen :D

komt ie:

dim s as string = nothing

if instr(s, 1) > 1 then
1 zit erin, test voor 2.
end if

Tjah, dat is inderdaad een mogelijkheid, maar dit is wel heel omslachtig...


Bedankt alvast voor te antwoorden!
 
Nee, je doet niet hetzelfde, het verschil zit m in de "+ 1"....
En de getallen moeten daarvoor wel op volgorde van laag naar hoog staan...

Succes!


Sry, had het in mijn vorige post verkeerd om gezet....:o
 
Omslachtig? in feite is het precies zoals een mens dit zou doen.

wij kijken naar de dobbelstenen en onthouden ze (in een string zetten)
daarna kijken we of we yahtzee hebben (tenminste ik hoop daar altijd op!).
en dan gaan we steeds verder kijken (grote straat, kleine straat etc etc.)

als je een sub zou maken met dicecheck()
dan zou je het zo kunnen doen bijv.

Dim maak string

if alle dobelstenen gelijk dan > yahtzee end sub
else
kijk voor grote straat, ja dan > grote straatend sub
else
kijk voor kleine straat.end sub

msgbox (of iets) je hebt yathzee, of een grote straat!

dat is hoe ik het zou doen. =D
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan