Java Implementation of the game set.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

128 lines
3.1 KiB

package net.jrtechs.setgame;
public class Hand
{
private Card[] hand;
Hand(Card[] temp)
{
hand= temp;
}
public void resize(int newSize, Deck deckT)
{
Card[] transfer = new Card[newSize];
int count = 0;
for(Card c: hand)
{
if(c != null)
{
transfer[count] = c;
count++;
}
}
for(int i = count; i < newSize; i++)
{
transfer[i] = deckT.deal();
}
hand = transfer;
}
public Card getCard(int e)
{
return hand[e];
}
public void display()
{
for(Card elem : hand)
System.out.print(elem + " ");
System.out.println("");
}
public Card[] getHand()
{
return hand;
}
public Card[] findSet()
{
Card[] match = new Card[3];
//checks each possible combination of three on the hand to find a set
for(Card one: hand)
for(Card two: hand)
for(Card three : hand)
if(Card.isSet(one, two, three) && Card.equals(one, two, three))
if(one.getInUse() && two.getInUse() && three.getInUse())
{
match[0] = one;
match[1] = two;
match[2] = three;
return match;
}
return match;
}
public int setsLeft()
{
int count = 0;
for(Card one: hand)
for(Card two: hand)
for(Card three : hand)
if(Card.isSet(one, two, three) && Card.equals(one, two, three))
if(one.getInUse() && two.getInUse() && three.getInUse())
count++;
//gets rid of all permutations
return count/6;
}
public int location(Card find)
{
for(int i = 0; i < hand.length; i++)
{
if(hand[i] == null)
{
}
else if(find.equals(hand[i]))
{
return i;
}
}
return -1;
}
public void removePair(Card[] remove, Deck deckT)
{
if(deckT.cardsLeft() < 2)
{
//not enough cards in deck to replace w/ new cards
for(Card c : remove)
{
hand[this.location(c)] = null;
}
}
else if(hand.length > 12)
{
for(Card c : remove)
{
hand[location(c)] = null;
}
//condense the deck
this.resize(hand.length -3, deckT);
}
else
{
//removes a set and replaces it with new cards
int i = 0;
Card[] replace = deckT.dealMany(remove.length);
for(Card c : remove)
{
hand[this.location(c)] = replace[i];
i++;
}
}
}
public void disableCard(Card c)
{
hand[this.location(c)].setInUse(false);
}
}