Scriptkiddi3
Nieuwe gebruiker
- Lid geworden
- 2 apr 2008
- Berichten
- 1
Dag programmeurs (in spe),
Ik ben bezig met een experimenteel javascript pokerprogramma. De bedoeling is om op een simpele manier willekeurige kaarten op tafel (5 stuks) en kaarten in de hand (2 stuks) te krijgen, en de computer daar dan de beste combinatie uit te laten kiezen.
Dat laatste aspect is echter moeilijker dan ik eerst had gedacht.
Ik laat de computer 7 verschillende kaarten willekeurig kiezen:
array[0]
array[1]
...
array[6]
Elke array is op zich nog eens een array, met 2 eigenschappen erin:
array[n][0] = 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K, A
array[n][1] = h, r, s, k
[0] is het getal (2 tot aas)
[1] is de soort (harten, ruiten, schoppen, klaveren)
De moeilijkheid is nu om te checken welke de hoogste combinatie is.
Ik wil de gewone Texas Hold'em volgorde gebruiken, zijnde van laag naar hoog:
high card
pair
double pair
3 of a kind
straight
flush
full house
4 of a kind
straight flush
royal flush
Voor info over deze kaartencombinaties verwijs ik je naar Wikipedia.
Nu zou ik aan de ervaren programmeurs willen vragen of ze me willen helpen een functie te schrijven:
Ik weet dat het een hele taak is, maar wel een uitdagende. Je moet er immers rekening mee houden dat een 'full house' tegelijk een 'high card', 'pair', 'double pair', '3 of a kind' en 'full house' is.
Zet hieronder eventuele bedenkingen, tips, stukken code, of andere dingen die me in dit project kunnen helpen. Een toekomstig student informatica is je dankbaar!
Scriptkiddie
P.S.: hieronder zet ik het volledige htmlbestand. Open het gerust eens in je browser om te zien hoe het pokerexperiment in zijn werk zou moeten gaan.
Ik ben bezig met een experimenteel javascript pokerprogramma. De bedoeling is om op een simpele manier willekeurige kaarten op tafel (5 stuks) en kaarten in de hand (2 stuks) te krijgen, en de computer daar dan de beste combinatie uit te laten kiezen.
Dat laatste aspect is echter moeilijker dan ik eerst had gedacht.
Ik laat de computer 7 verschillende kaarten willekeurig kiezen:
array[0]
array[1]
...
array[6]
Elke array is op zich nog eens een array, met 2 eigenschappen erin:
array[n][0] = 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K, A
array[n][1] = h, r, s, k
[0] is het getal (2 tot aas)
[1] is de soort (harten, ruiten, schoppen, klaveren)
De moeilijkheid is nu om te checken welke de hoogste combinatie is.
Ik wil de gewone Texas Hold'em volgorde gebruiken, zijnde van laag naar hoog:
high card
pair
double pair
3 of a kind
straight
flush
full house
4 of a kind
straight flush
royal flush
Voor info over deze kaartencombinaties verwijs ik je naar Wikipedia.
Nu zou ik aan de ervaren programmeurs willen vragen of ze me willen helpen een functie te schrijven:
Code:
function checkCombination(array){
// ...
output[0] = subarray; //de 5 beste kaarten uit de 7 die beschikbaar zijn
output[1] = combinationName; //de naam van de combinatie, bijvoorbeeld "straight flush"
return output;
}
Ik weet dat het een hele taak is, maar wel een uitdagende. Je moet er immers rekening mee houden dat een 'full house' tegelijk een 'high card', 'pair', 'double pair', '3 of a kind' en 'full house' is.
Zet hieronder eventuele bedenkingen, tips, stukken code, of andere dingen die me in dit project kunnen helpen. Een toekomstig student informatica is je dankbaar!
Scriptkiddie
P.S.: hieronder zet ik het volledige htmlbestand. Open het gerust eens in je browser om te zien hoe het pokerexperiment in zijn werk zou moeten gaan.
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Poker - Scriptkiddie @ Helpmij.nl</title>
<script type="text/javascript">
function getCard(type){
a = "noNumber";
b = "noSuit";
if(type == "number"){
a = Math.round(Math.random()*13) + 2;
switch(a)
{
case 11:
a = "J";
break;
case 12:
a = "Q";
break;
case 13:
a = "K";
break;
case 14:
a = "A";
break;
case 15:
a = 2;
break;
}
return a;
}
if (type == "suit"){
b = Math.round(Math.random()*4);
switch(b)
{
case 0:
b = "s";
break;
case 1:
b = "k";
break;
case 2:
b = "h";
break;
case 3:
b = "r";
break;
case 4:
b = "s";
break;
}
return b;
}
}
function checkUnique(array){
ok = 1;
maxindex = array.length -1;
for (x=0; x<=maxindex; x++){
for (y=0; y<=maxindex; y++){
if (x != y){
if ((array[x][0] == array[y][0]) && (array[x][1] == array[y][1])){
ok = 0;
}
}
}
}
return ok;
}
function burnandturn(){
if (document.getElementById('button').value != 'burn and river'){
document.getElementById('turn').src = 'cards/' + array[3][0] + array[3][1] + '.png';
document.getElementById('turn').alt = array[3][0] + array[3][1];
document.getElementById('button').value = 'burn and river';
}
else{
document.getElementById('river').src = 'cards/' + array[4][0] + array[4][1] + '.png';
document.getElementById('button').style.display = 'none';
}
}
</script>
</head>
<body>
<script type="text/javascript">
var array = new Array(7);
do{
for (n=0 ; n <= 6 ; n++){
array[n] = new Array(2);
array[n][0] = getCard("number");
array[n][1] = getCard("suit");
}
} while (!checkUnique(array))
for (n=0 ; n <= 2 ; n++){
document.write("<img src='cards/" + array[n][0] + array[n][1] + ".png' alt='" + array[n][0] + array[n][1] + "' id='flop" + eval(n+1) + "'> ");
}
document.write("<img src='cards/" + "b1fv" + ".png' alt='" + "turn" + "' id='turn'> ");
document.write("<img src='cards/" + "b1fv" + ".png' alt='" + "river" + "' id='river'> ");
document.write("<br /><br />");
for (n=5 ; n<=6; n++){
document.write("<img src='cards/" + array[n][0] + array[n][1] + ".png' alt='" + array[n][0] + array[n][1] + "'> ");
}
</script>
<form>
<input type="button" value="burn and turn" onClick="burnandturn()" id="button" /><br />
<input type="button" value="refresh" onClick="location.reload()" />
</form>
</body>
</html>