Pure JavaScript poker hand analyzer to be used (also) in puzzle games
Talking about Poker game, Game development and Javascript.
Learn cross platform HTML5 game development
Check my Gumroad page for commented source code, games and books.
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<div id = "table"></div>
<div id = "result" style = "font:normal 32px arial;margin:10px;"></div>
<script>
var hand = [];
var valuesArray = [];
var suitsArray = [];
function checkHand(){
var resultString = "";
for(var i = 0; i < 5; i++){
hand[i] = document.getElementById("card_" + i).value;
}
convertHand();
console.log(duplicateCards())
switch(duplicateCards()){
case "2":
resultString = "1 Pair";
break;
case "22":
resultString = "2 Pairs";
break;
case "3":
resultString = "3 of a Kind";
break;
case "23":
case "32":
resultString = "Full House";
break;
case "4":
resultString = "4 of a Kind";
break;
case "5":
resultString = "5 of a Kind";
break;
default:
if(isStraight()){
resultString = "Straight";
}
if(isAceStraight()){
resultString = "Ace Straight";
}
break;
}
if(isFlush()){
if(resultString){
resultString += " and Flush";
}
else{
resultString = "Flush";
}
}
if(!resultString){
resultString = "nothing...";
}
document.getElementById("result").innerHTML = resultString;
}
function convertHand(){
for(var i = 0; i < 5; i ++){
valuesArray[i] = hand[i] % 13;
suitsArray[i] = Math.floor(hand[i] / 13);
}
}
function isFlush(){
for(var i = 0; i < 4; i ++){
if(suitsArray[i] != suitsArray[i+1]){
return false;
}
}
return true;
}
function isStraight(){
var lowest = getLowest();
for(var i = 1; i < 5; i++){
if(occurrencesOf(lowest + i) != 1){
return false
}
}
return true;
}
function isAceStraight(){
var lowest = 9;
for(var i = 1; i < 4; i++){
if(occurrencesOf(lowest + i) != 1){
return false
}
}
return occurrencesOf(1) == 0;
}
function getLowest(){
var min = 12;
for(var i = 0; i < valuesArray.length; i++){
min = Math.min(min, valuesArray[i]);
}
return min;
}
function duplicateCards(){
var occurrencesFound = [];
var result = "";
for(var i = 0; i < valuesArray.length; i++){
var occurrences = occurrencesOf(valuesArray[i]);
if(occurrences > 1 && occurrencesFound.indexOf(valuesArray[i]) == -1){
result += occurrences;
occurrencesFound.push(valuesArray[i]);
}
}
return result;
}
function occurrencesOf(n){
var count = 0;
var index = 0;
do{
index = valuesArray.indexOf(n, index) + 1;
if(index == 0){
break;
}
else{
count ++;
}
} while(index < valuesArray.length);
return count;
}
</script>
<script>
var cardSymbols = ["A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"];
var suitSymbols = ["?", "?", "?", "?"];
var tableHTML = '';
for(var j = 0; j < 5; j ++){
tableHTML += '<select style = "padding:3px;font:normal 32px arial;margin:10px" id = "card_' + j + '" onchange = "checkHand();">';
for(var i = 0; i < 52; i ++){
tableHTML += '<option value = "' + i + '">' + cardSymbols[i % 13] + " " + suitSymbols[Math.floor(i / 13)] + '</option>';
}
tableHTML += '</select>';
}
document.getElementById("table").innerHTML = tableHTML;
checkHand();
</script>
</body>
</html>
Never miss an update! Subscribe, and I will bother you by email only when a new game or full source code comes out.