xxxxxxxxxx
249
deck=[];
piles=[];
var discard;
deckx=5;
decky=5;
cw=65;
ch=100;
function setup() {
createCanvas(800, 600);
background(0);
deck=newDeck(); //Create unshuffled deck of 52 cards
deck=shuffleDeck(deck); // Shuffle deck just created
initializePiles(); // Deal the cards!
drawBoard(); // Shows outlines of card positions
showPiles();
//console.log(piles[1].cards.length);
}
function draw() {
}
function newDeck() // Creates a new deck of 52 cards.
{
tdeck=[]; // Temporary Deck used for builing
var suits=["HEARTS", "DIAMONDS", "CLUBS", "SPADES"];
var names=["A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"];
for(var i=0; i<4; i++)
{
for(var j=0; j<13; j++)
{
tdeck.push(new Card(j+1, names[j], suits[i]));
}
}
return tdeck;
}
function shuffleDeck (inDeck){
var unshuffled=inDeck;
var temp=0;
for(var i=0; i<unshuffled.length; i++)
{
temp=unshuffled[i];
swap=floor(random(unshuffled.length));
unshuffled[i]=unshuffled[swap];
unshuffled[swap]=temp;
}
return unshuffled;
}
function showCard(x,y,incard)
{
if(incard.shown)
{
stroke('black');
if(incard.selected)
{
fill(125,200,125,200);
}
else{
fill(255);
}
textSize(20);
push();
translate(x,y);
rect(0,0, cw,ch);
fill(0);
text(incard.name, 0+5,0+20);
text(incard.pic, 0+25, 0+20);
rotate(radians(180));
//rect(0,0, cw,ch);
text(incard.name, -cw+5, 25-ch);
text(incard.pic, -cw+25, 25-ch);
pop();
}
else
{
{
fill('blue');
rect(x, y, cw, ch);
fill('red');
rectMode(CENTER)
rect(x+cw/2, y+30, cw/4, cw/4);
rect(x+cw/2-cw/8, (y+ch)-ch/4, 10, 25);
rect(x+cw/2+cw/8, (y+ch)-ch/4, 10, 25);
rect(x+cw/2, y+20+cw/4*2, cw/2, cw/2);
ellipse(x+15, y+15+cw/2, 5,25);
ellipse(x+18+cw/2, y+15+cw/2, 5,25);
//fill('yellow);
rectMode(CORNER)
}
}
}
function touchStarted()
//function mouseClicked()
{
for (p of piles)
{
//console.table(p.cards);
if(mouseX>p.x && mouseX<p.x+cw && mouseY>p.y && mouseY<p.y+ch)
{
if(p.cards.length){
//console.table(p.cards);
if(deck.length){
p.cards[p.cards.length-1].selected=true;
p.cards.push(deck.pop());}}
// else{console.table(p.cards);}}
fill('green');
rect(p.x,p.y+(10*p.cards.length-1),cw,ch);
//p.cards.pop();
drawBoard();
showPiles();
}
}
if(mouseX>deckx&& mouseX <deckx+cw && mouseY>decky && mouseY<decky+ch)
{
if(deck.length)
{
discard.cards.push(deck.pop());
discard.cards[discard.cards.length-1].shown=true;
showCard(discard.x, discard.y, discard.cards[discard.cards.length-1])
drawBoard();
showPiles();
}
else {
if(discard.cards.length)
{
for(c of discard.cards)
{
c.shown=false;
deck.push(discard.cards.pop());
}
}
}
}
}
function drawBoard()
{
background(0);
if(deck.length)
{
fill('blue');
rect(deckx, decky, cw, ch);
fill('red');
rectMode(CENTER)
rect(deckx+cw/2, decky+30, cw/4, cw/4);
rect(deckx+cw/2-cw/8, (decky+20+cw/4)*2, 10, 25);
rect(deckx+cw/2+cw/8, (decky+20+cw/4)*2, 10, 25);
rect(deckx+cw/2, decky+20+cw/4*2, cw/2, cw/2);
ellipse(deckx+15, decky+15+cw/2, 5,25);
ellipse(deckx+18+cw/2, decky+15+cw/2, 5,25);
rectMode(CORNER)
}
else {
console.log("HERE");
fill('green');
rect(deckx, decky, cw, ch);
noFill();
stroke('red');
strokeWeight(3);
circle(deckx+cw/2, decky+ch/2, cw-5);
strokeWeight(1);
fill(0);
//drawBoard();
}
space = (width - (cw*7))/7;
stroke('grey');
fill('grey');
for(var i=0; i<7; i++)
{
noFill()
if(i<2)
{
rect(5+(i*(cw+space)), 5, cw, ch); // Draw/ Discard
}
if(i>2)
{
rect(5+(i*(cw+space)), 5, cw, ch); // 4 Aces
}
rect(5+(i*(cw+space)), ch+(ch/2), cw, ch); // 7 Piles
}
stroke(0);
}
function initializePiles(){
space = (width - (cw*7))/7;
for(var i=0; i<7; i++)
{
if(i==1)
{
discard=new Pile(5+(i*(cw+space)), 5);
discard.cascade=false;
}
piles.push(new Pile(5+(i*(cw+space)), ch+(ch/2)))
for(var j=i; j>=0; j--)
{
piles[i].cards.push(deck.pop());
//piles[i].cards[piles[i].cards.length-1].shown=true;
}
piles[i].cards[i].shown=true;
}
}
function showPiles(){
for (p of piles)
{
p.show();
}
discard.show();
}
function doubleClickedtest()
{
for(p of piles)
{
for (i=0; i<p.cards.length; i++)
{
p.cards[i].shown=true;
}
drawBoard();
showPiles();
}
}