public SetGame() {
		players = new HashSet<Player>();
		numPlayers = 0;
		numPlayersRemoved = 0;
		cardsInDeck = new String[81];
		pcs = new PropertyChangeSupport(this);
		
		// Make a shuffled deck of Set cards
		char[] colors = {'b', 'g', 'r'};
		char[] shapes = {'d', 'o', 's'};
		char[] fills = {'f', 'o', 's'};
		char[] numbers = {'1', '2', '3'};
		for(int a=0; a<colors.length; a++){
			for(int b=0; b<shapes.length; b++){
				for(int c=0; c<fills.length; c++){
					for(int d=0; d<numbers.length; d++){
						char[] card = {colors[a], shapes[b], fills[c], numbers[d]};
						cardsInDeck[a*27+b*9+c*3+d] = String.valueOf(card);
					}
				}
			}
		}
		Collections.shuffle(Arrays.asList(cardsInDeck));

		
		// Draw the first 12 cards from the deck to create the field of cards
		cardsInField = new String[21];
		for (int i=0; i<12; i++) {
			cardsInField[i] = cardsInDeck[i];
		}
		currentCardIndex = 12;
		cardsOnField = 12;
		
		playerCallingSet=0;
		timesSetCalled = 0;
		playersAskingDraw = new ArrayList<Byte>();
		gameRunning = true;
		t = new Timer();
	}