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.
 

213 lines
5.3 KiB

/*
jeffery r
12-26-15
Game class keeps track of the score hand and deck
*/
package net.jrtechs.setgame;
import java.awt.Color;
import java.util.ArrayList;
public class Game
{
//properties
private Deck deck;
private Hand hand;
private int sets;
private int score;
private int setsLeft;
private int currentDisplay = 12;
private int time;
private int timeOnSet;
//constructor
Game()
{
deck = new Deck();
deck.shuffle();
hand = new Hand(deck.dealMany(12));
setsLeft = hand.setsLeft();
sets = 0;
time = 0;
score = 0;
currentDisplay = 12;
timeOnSet = 0;
}
public void timerTic()
{
time++;
timeOnSet++;
}
public Card[] getHand()
{
return hand.getHand();
}
public void clicked(SetButton[] cards)
{
ArrayList<Card> sel;
sel = selected(cards);
if(sel.size() == 3)
{
//there is a set selected
if(Card.isSet(sel.get(0),sel.get(1), sel.get(2)))
{
sets++;
//calculates score to be given baised on time took and cards on board
if(currentDisplay ==12)
{
int temp = 100 - timeOnSet;
if(temp > 0)
{
score +=temp;
}
}
score += 50; //base score
timeOnSet = 0;
Card[] remove = {sel.get(0),sel.get(1), sel.get(2)};
if(deck.cardsLeft() > 2)
{
hand.removePair(remove, deck);
if(currentDisplay > 12)
{
currentDisplay -= 3;
hand.resize(currentDisplay, deck);
for(int i = 12; i < 15; i ++)
{
cards[i].setVisible(false);
}
}
updateBoard(cards);
}
else
{
for(SetButton elem : cards)
{
if(elem.getPressed())
{
hand.disableCard(elem.getCard());
elem.setEnabled(false);
elem.setBackground(Color.black);
}
}
}
if(deck.cardsLeft() < 3)
{
setsLeft = 0;
}
else
{
setsLeft= hand.setsLeft();
}
}
diselectCards(cards);
}
}
public void openThree(SetButton[] cards)
{
if(currentDisplay == 12)
{
currentDisplay += 3;
hand.resize(currentDisplay, deck);
//hand.display();
for(int i = 12; i < cards.length; i++)
{
cards[i].setVisible(true);
}
this.updateBoard(cards);
}
else
{
}
}
public void updateBoard(SetButton[] cards)
{
int count = 0;
for(Card elem : hand.getHand())
{
if(count >= currentDisplay)
{
}
else
{
cards[count].setCard(elem);
count ++;
}
}
for(SetButton elem : cards)
{
elem.update();
elem.setBackground(Color.white);
elem.setSelected(false);
elem.setEnabled(true);
}
}
public void findSet(SetButton[] cards)
{
Card[] set = hand.findSet();
for(Card elem : set)
{
int loc = hand.location(elem);
//row * (4) + col
cards[loc].setBackground(Color.PINK);
}
}
public int getTime()
{
return time;
}
public int getNumSets()
{
return sets;
}
public int getScore()
{
return score;
}
public int modScore(int change)
{
score +=change;
return score;
}
public Deck getDeck()
{
return deck;
}
public int getSetsLeft()
{
setsLeft = hand.setsLeft();
return setsLeft;
}
public void setScore(int newScore)
{
score = newScore;
}
private void diselectCards(SetButton[] cards)
{
for(SetButton elem : cards)
{
if(elem.getPressed())
{
elem.setBackground(Color.white);
elem.setPressed(false);
}
}
}
private ArrayList<Card> selected(SetButton[] cards)
{
ArrayList<Card> selectedCards = new ArrayList<Card>();
for(SetButton elem : cards)
{
if(elem.getPressed())
{
selectedCards.add(elem.getCard());
}
}
return selectedCards;
}
}