/    Sign up×
Community /Pin to ProfileBookmark

check array for existing element

Hello,I’m writing a blackjack game for class,it generates two random numbers that select from a switch statement that creates a string file name of a card e.g “AceDiamonds.gif”, it then fills an array deck[] with these strings,I want to fill the array with the full deck of 52 cards,and not have any duplicates, how do I check the array for an existing element remove it and replace with another card not in the deck??
Here is the code,thanks in advance

[CODE]
<script>
var dealer_hand = new Array();
var player_hand = new Array();
var deck = [];
function cardToString(value,suit)
{
var cvalue=””;
var csuit=””;
switch(value)
{
case 1:
cvalue = “Ace”;
break;
case 2:
cvalue = “Two”;
break;
case 3:
cvalue = “Three”;
break;
case 4:
cvalue = “Four”;
break;
case 5:
cvalue = “Five”;
break;
case 6:
cvalue = “Six”;
break;
case 7:
cvalue = “Seven”;
break;
case 8:
cvalue = “Eight”;
break;
case 9:
cvalue = “Nine”;
break;
case 10:
cvalue = “Ten”;
break;
case 11:
cvalue = “Jack”;
break;

case 12:
cvalue = “Queen”;
break;
case 13:
cvalue = “King”;
break;
default:
cvalue=null;
break;
}

switch(suit)
{
case 1:
csuit=”Clubs”;
break;
case 2:
csuit=”Hearts”;
break;
case 3:
csuit=”Diamonds”;
break;
case 4:
csuit=”Spades”;
break;
default:
csuit=null;
break;
}
if(value==null||suit==null)
return””;

var myCard = cvalue + csuit +”.gif”;

return myCard;
}//End of cardToString Function

function shuffle()
{
var i=0;
var j=0;

for( i=0;i<52;i++)
{

var num1 = Math.floor(Math.random()* 13)+1;
var num2 = Math.floor(Math.random()* 4)+1;

myCard = cardToString(num1,num2);

deck[i]=myCard;

}
deck.sort();
for(j=1;j<52;j++)
{

while(deck[j] == deck[j-1])
{

var num1 = Math.floor(Math.random()* 13)+1;
var num2 = Math.floor(Math.random()* 4)+1;

myCard = cardToString(num1,num2);

deck[j]=myCard;

}

}
alert(deck);
}

</script>
<input type=button value=”Shuffle” onclick=”shuffle()”/>
</body>

</html>

[/CODE]

to post a comment
JavaScript

6 Comments(s)

Copy linkTweet thisAlerts:
@mrhooDec 08.2011 — //Better all around to make the deck array in [B]order [/B]and then shuffle it-

[CODE]function getDeckGifs(){
var suits= ['Clubs', 'Diamonds', 'Hearts', 'Spades'],
names= [
'Deuce', 'Three', 'Four', 'Five', 'Six', 'Seven',
'Eight', 'Nine', 'Ten', 'Jack', 'Queen', 'King', 'Ace'
],
deck= [], suitcount= 0, namecount, suit;
while(suitcount<4){
namecount= 0;
suit= suits[suitcount++];
while(namecount< 13){
string= names[namecount++]+suit+'.gif'
deck.push(string);
}
}
return deck.sort(function(){
return Math.random()<.5? -1:1;
});
}[/CODE]

[B]var dg= getDeckGifs();[/B]

//sample:

dg.join(', ')

/* returned value: (String)

ThreeHearts.gif, EightHearts.gif, TenHearts.gif, AceSpades.gif, NineDiamonds.gif,

TenDiamonds.gif, AceDiamonds.gif, JackDiamonds.gif, JackSpades.gif, AceClubs.gif,

FiveClubs.gif, JackHearts.gif, KingSpades.gif, QueenDiamonds.gif, NineHearts.gif,

DeuceHearts.gif, FiveDiamonds.gif, QueenSpades.gif, KingDiamonds.gif, KingHearts.gif,

FourHearts.gif, SixDiamonds.gif, DeuceClubs.gif, QueenHearts.gif, AceHearts.gif,

KingClubs.gif, DeuceSpades.gif, FiveHearts.gif, FiveSpades.gif, SixHearts.gif,

ThreeSpades.gif, ThreeClubs.gif, DeuceDiamonds.gif, SevenHearts.gif, FourSpades.gif,

SixSpades.gif, SevenSpades.gif, EightDiamonds.gif, SevenDiamonds.gif, QueenClubs.gif,

EightSpades.gif, NineSpades.gif, TenSpades.gif, FourClubs.gif, NineClubs.gif,

FourDiamonds.gif, ThreeDiamonds.gif, TenClubs.gif, JackClubs.gif, SixClubs.gif,

SevenClubs.gif, EightClubs.gif

*
/
Copy linkTweet thisAlerts:
@buzzykerboxauthorDec 08.2011 — Thanks man that works a treat
Copy linkTweet thisAlerts:
@Ay__351_eDec 08.2011 —  <br/>
&lt;html&gt;
&lt;head&gt;
&lt;style type="text/css"&gt;
#heceler { font-family:Hand writing Mutlu; font-size: 36pt; }
.turkuaz { color:turquoise; }
.pembe { color: pink; }

&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;p id="heceler"&gt;&lt;/p&gt;

&lt;script type="text/javascript"&gt;
// http://www.webdeveloper.com/forum/showthread.php?t=253880

Array.prototype.rastgeleDizdir=function() {
var L = this.length, B = [], r;
for(var i = 0; i &lt; L; i++) {
r = Math.floor(Math.random() * this.length);
B[i] = this[r];
this.splice(r,1); // http://www.w3schools.com/jsref/jsref_splice.asp
}
return B;
}

// heceleri &amp;#246;&amp;#287;ren

var sessizHarf = [ "k","n","r","t" ];
var sesliHarf = ["a","e","i","u"];

var hece = [];
for(var i=0; i&lt; sessizHarf.length; i++) {

for(var n = 0; n &lt; sesliHarf.length; n++) {

hece[hece.length] = "&lt;span class="turkuaz"&gt;"+sessizHarf[i] + "&lt;/span&gt;&lt;span class="pembe"&gt;" + sesliHarf[n] + "&lt;/span&gt;";
}
}

// alert( hece );
var el= document.getElementById('heceler');
el.innerHTML = hece.rastgeleDizdir().join(' ');

&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;
Copy linkTweet thisAlerts:
@007JulienDec 08.2011 — You have interests not to rebuild the game all the times, but only to shuffle it with the separate function shuffle();
[CODE]var dg=getDeckGifs();// mrhoo function whit or without shuffle
// For each new game
function shuffle(dg){
return dg.sort(function(){return Math.random()-0.5});
}[/CODE]
Otherwise the number of obtained permutations is very small in front of their theoretical number (52 !) !
Copy linkTweet thisAlerts:
@007JulienDec 10.2011 — It could be better to store only card numbers...
[CODE]
deck=[];
for (i=0;i<52;i++) deck[i]=i;
function shuffle(d){
return d.sort(function(){return Math.random()-0.5});
}

deck=shuffle(deck);

suits= ['Clubs', 'Diamonds', 'Hearts', 'Spades'],
names= ['Deuce', 'Three', 'Four', 'Five', 'Six', 'Seven',
'Eight', 'Nine', 'Ten', 'Jack', 'Queen', 'King', 'Ace'];

// The gif from card c
function getGif(c){
if (isNaN(c) || c<0 || 51<c) return 'back.gif';
return names[card&#37;13]+suits[Math.floor(card/13)]+'.gif';}

// Without images
function get Img(c){var n=card%13,m=Math.floor(c/13),f,g=' class="red"';
s=n<8?String.fromCharCode(n+50):n<9?"10":n<12?"JQK".substr(n-9,1):"As";
switch (m){case 0:f='&#9827;';g=' class="blk"';break;case 1:f='&#9829;';break;
case 2:f='&#9829;';break;case 3:f='&#9824;';g=' class="blk"';}
return '<span '+g+'>'+s+f+'</span>';
}
[/CODE]

The images are obtained with the characters 9427, 9430, 9429, 9424 precede by &# and followed by ; (other choices are possible, see this page).
Copy linkTweet thisAlerts:
@007JulienDec 14.2011 — What do you think about this code without images ?
[CODE]<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="fr">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="generator" content="PSPad editor, www.pspad.com">
<title>Untitled</title>
<style type="text/css">
body{background:#060;font-family:Garamond;line-height:26px;font-size:14px;}
.crd {display:block;float:left;margin:2px;padding:0px 2px 6px;width:26px;height:16px;text-align:center;background:#fff}
.red {color:#f00;}
.blk {color:#000;}
</style>
</head>
<body>
<div id="pge"></div>
<script type="text/javascript">
function Game(){
//------------------------ Constants --------------------------
var
suits= ['Clubs', 'Diamonds', 'Hearts', 'Spades'],
names= ['Deuce', 'Three', 'Four', 'Five', 'Six', 'Seven',
'Eight', 'Nine', 'Ten', 'Jack', 'Queen', 'King', 'Ace'],
//----------------------- Local Variables ---------------------
pack= [],
packNumber= 52;
//---------------------- Initialization -----------------------
// init pack
for (var i=0;i<packNumber;i++) pack[i] = i;
//----------------------- Public Functions ------------------------
return {
deckNumber: packNumber,
shuffle: function(){
pack.sort(function(a,b){ return Math.random()-0.5});
},
deck: function() {this.shuffle();return pack;
},
getCardGif: function(card){
if (isNaN(card) || card<0 || packNumber<card) return 'back.gif';
return name[card&#37;13]+suits[Math.floor(card/13)]+'.gif';
},
getCardImg: function(card){var n=card%13,c=Math.floor(card/13),f,g=' class="red"';
s=n<8?String.fromCharCode(n+50):n<9?"10":n<12?"JQK".substr(n-9,1):"As";
switch (c){case 0:f='&#9827;';g=' class="blk"';break;case 1:f='&#9830;';
break;case 2:f='&#9829;';break;case 3:f='&#9824;';g=' class="blk"';}
return '<p class="crd">'+s+'<span '+g+'>'+f+'</span></p>';
}
}
}
var game=new Game();
var deck=game.deck();//alert(deck)
var c='';
for (var i=0;i<game.deckNumber;i++) {if (!(i%13)) c+='<br>';c+=game.getCardImg(i);}
document.getElementById('pge').innerHTML=c;
</script>
</body>
</html>[/CODE]

an unique background gif (with transparency) could round off corners and make represent a border...
×

Success!

Help @buzzykerbox spread the word by sharing this article on Twitter...

Tweet This
Sign in
Forgot password?
Sign in with TwitchSign in with GithubCreate Account
about: ({
version: 0.1.9 BETA 6.2,
whats_new: community page,
up_next: more Davinci•003 tasks,
coming_soon: events calendar,
social: @webDeveloperHQ
});

legal: ({
terms: of use,
privacy: policy
});
changelog: (
version: 0.1.9,
notes: added community page

version: 0.1.8,
notes: added Davinci•003

version: 0.1.7,
notes: upvote answers to bounties

version: 0.1.6,
notes: article editor refresh
)...
recent_tips: (
tipper: @meenaratha,
tipped: article
amount: 1000 SATS,

tipper: @meenaratha,
tipped: article
amount: 1000 SATS,

tipper: @AriseFacilitySolutions09,
tipped: article
amount: 1000 SATS,
)...