Skip to content

Instantly share code, notes, and snippets.

@TerryMooreII
Last active December 27, 2015 04:39
Show Gist options
  • Save TerryMooreII/7268427 to your computer and use it in GitHub Desktop.
Save TerryMooreII/7268427 to your computer and use it in GitHub Desktop.
war
var suites = ['\u2660', '\u2665', '\u2666', '\u2663'];
var numbers = ['2','3','4','5','6','7','8','9','10','J','Q','K','A'];
var buildDeck = function(){
var deck = [];
for (var suite in suites)
for (var number in numbers)
deck.push(numbers[number] + suites[suite]);
return deck;
};
var shuffle = function(deck){
var i = deck.length, j, temp;
if ( i == 0 ) return;
while ( --i ) {
j = Math.floor( Math.random() * ( i + 1 ) );
temp = deck[i];
deck[i] = deck[j];
deck[j] = temp;
}
return deck;
};
var deck = shuffle(buildDeck());
var player1 = deck.splice(0, deck.length/2);
var player2 = deck.splice(0, deck.length);
var round = 0;
var getCard = function(hand){
return shuffle(hand).shift()
}
var game = setInterval(function(){
console.log('Round ' + round++ + ': Player1 ' + player1.length + ' - Player2 ' + player2.length);
var card1 = getCard(player1);
var card2 = getCard(player2);
console.log(card1 + ' vs. ' + card2);
if (player1.length === 0 || player2.length === 0){
console.log('Winner: ' + (player1.length === 0) ? 'Player2' : 'Player1');
clearInterval(game);
}else{
battle(card1, card2);
}
//clearTimeout(game)
}, 1000)
var battle = function(card1, card2, warCards){
var card1Value = getCardValue(card1.substr(0, card1.length - 1));
var card2Value = getCardValue(card2.substr(0, card2.length - 1));
if (card1Value === card2Value){
console.log('War!');
battle(getCard(player1), getCard(player2), (warCards || 0) + 3);
}else if (card1Value > card2Value){
player1.push(card1)
player1.push(card2);
if (warCards)
player1 = player1.concat(player2.splice(0, warCards))
}else if (card2Value > card1Value){
player2.push(card1)
player2.push(card2);
if (warCards)
player2 = player2.concat(player1.splice(0, warCards))
}
}
var getCardValue = function(card){
switch(card){
case "J":
return 11
break;
case "Q":
return 12;
break;
case "K":
return 13;
break;
case "A":
return 14;
break;
default:
return parseInt(card);
break;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment