diff --git a/src/card/Card.java b/src/card/Card.java new file mode 100644 index 0000000..83c2c26 --- /dev/null +++ b/src/card/Card.java @@ -0,0 +1,89 @@ +package card; +import game.Game; + +import java.awt.Color; + +/* + * COLORS: + * GREEN + * RED + * YELLOW + * WHITE + * BLUE + * (COLORED) + */ +public class Card { + protected int color; + protected int value; + protected int playerId; + protected Game g; + + public Card(int color, int value, int playerId, Game g){ + this.color = color; + this.value = value; + this.playerId = playerId; + this.g = g; + } + + @Override + public String toString(){ + return "Color: " + color + "; Value: " + value; + } + + public Color getColor(){ + Color c = null; + switch(color){ + case 0: + c = Color.green; + break; + case 1: + c = Color.red; + break; + case 2: + c = Color.yellow; + break; + case 3: + c = Color.white; + break; + case 4: + c = Color.blue; + break; + } + return c; + } + + public static String intColorToText(int id){ + String color = ""; + switch(id){ + case 0: + color = "green"; + break; + case 1: + color = "red"; + break; + case 2: + color = "yellow"; + break; + case 3: + color = "white"; + break; + case 4: + color = "blue"; + break; + } + return color; + } + + public int getColorInt(){ + return color; + } + + public int getValue(){ + return value; + } + + public void setProps(Card c){ + this.value = c.getValue(); + this.color = c.getColorInt(); + } +} \ No newline at end of file diff --git a/src/card/SwingCard.java b/src/card/SwingCard.java new file mode 100644 index 0000000..e6ebd31 --- /dev/null +++ b/src/card/SwingCard.java @@ -0,0 +1,116 @@ +package card; + +import game.Game; + +import java.awt.Color; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; + +import javax.swing.BorderFactory; +import javax.swing.JLabel; + +public class SwingCard extends Card { + JLabel face; + + public SwingCard(int color, int value, int playerId, Game g) { + super(color, value, playerId, g); + } + + public void setFace(JLabel face){ + this.face = face; + face.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); + //uiCards[i].setHorizontalAlignment(SwingConstants.CENTER); + face.setFont(g.getFont().deriveFont(g.getFontSize()*2)); + addMouseListener(); + } + + public JLabel getFace(){ + return face; + } + + + private void addMouseListener(){ + face.addMouseListener(new MouseListener() { + @Override + public void mouseReleased(MouseEvent e) { + if(face.getBackground() == Color.pink){ + g.removeSelectedCards(); + face.setBackground(Color.black); + //System.out.println("Removed card #" + clickedCard + "(" + card.getColorInt() + ", " + card.getValue() + ")"); + if(g.getSelectedCards() == 0){ + g.resetMoveValues(); + } + } + if(!g.isUseColor() && !g.isUseValue() && !g.isTrashCard() && !g.isPlaceCard()){ + //System.out.println("Please choose move type first"); + return; + } + if(playerId == g.getCurrentPlayerIndex()){ + if(g.isUseColor() || g.isUseValue()){ + //System.out.println("Please don't select your own cards!"); + return; + } else if((g.isTrashCard() || g.isPlaceCard()) && g.getSelectedCards() == 1){ + //System.out.println("You already selected a card!"); + return; + } + } else if(playerId != g.getCurrentPlayerIndex() && (g.isTrashCard() || g.isPlaceCard())){ + //System.out.println("Please select your own cards"); + return; + } + if(g.getSelectedPlayer() == -1){ + g.setSelectedPlayer(playerId); + g.setChosenColor(color); + g.setChosenValue(value); + g.addSelectedCards(); + face.setBackground(Color.pink); + return; + } + if(g.getSelectedPlayer() != playerId){ + //System.out.println("Please choose a card of the selected player or unselect all cards and choose another player."); + return; + } + if(g.getChosenColor() == -1){ + g.setChosenColor(color); + } + if(g.getChosenValue() == -1){ + g.setChosenValue(value); + } + if(face.getBackground() == Color.black){ + if(g.isUseColor()){ + if(g.getChosenColor() == color){ + if(face.getBackground() != Color.pink){ + g.addSelectedCards(); + face.setBackground(Color.pink); + //System.out.println("Added card #" + clickedCard + "(" + intColorToText(card.getColorInt()) + ", " + card.getValue() + ")"); + } + } + } else if(g.isUseValue()){ + if(g.getChosenValue() == value){ + if(face.getBackground() != Color.pink){ + g.addSelectedCards(); + face.setBackground(Color.pink); + //System.out.println("Added card #" + clickedCard + "(" + intColorToText(card.getColorInt()) + ", " + card.getValue() + ")"); + } + } + } + } + } + + @Override + public void mousePressed(MouseEvent e) { + } + + @Override + public void mouseExited(MouseEvent e) { + } + + @Override + public void mouseEntered(MouseEvent e) { + } + + @Override + public void mouseClicked(MouseEvent e) { + } + }); + } +} diff --git a/src/game/AbstractGame.java b/src/game/AbstractGame.java new file mode 100644 index 0000000..a591202 --- /dev/null +++ b/src/game/AbstractGame.java @@ -0,0 +1,5 @@ +package game; + +public class AbstractGame { + +} diff --git a/src/game/Card.java b/src/game/Card.java deleted file mode 100644 index 8fbd3b9..0000000 --- a/src/game/Card.java +++ /dev/null @@ -1,78 +0,0 @@ -package game; -import java.awt.Color; - -/* - * COLORS: - * GREEN - * RED - * YELLOW - * WHITE - * BLUE - * (COLORED) - */ -public class Card { - private int color; - private int value; - - public Card(int color, int value){ - this.color = color; - this.value = value; - } - - @Override - public String toString(){ - return "Color: " + color + "; Value: " + value; - } - - public Color getColor(){ - Color c = null; - switch(color){ - case 0: - c = Color.green; - break; - case 1: - c = Color.red; - break; - case 2: - c = Color.yellow; - break; - case 3: - c = Color.white; - break; - case 4: - c = Color.blue; - break; - } - return c; - } - - public static String intColorToText(int id){ - String color = ""; - switch(id){ - case 0: - color = "green"; - break; - case 1: - color = "red"; - break; - case 2: - color = "yellow"; - break; - case 3: - color = "white"; - break; - case 4: - color = "blue"; - break; - } - return color; - } - - public int getColorInt(){ - return color; - } - - public int getValue(){ - return value; - } -} \ No newline at end of file diff --git a/src/game/ConsoleGame.java b/src/game/ConsoleGame.java new file mode 100644 index 0000000..da50352 --- /dev/null +++ b/src/game/ConsoleGame.java @@ -0,0 +1,5 @@ +package game; + +public class ConsoleGame { + +} diff --git a/src/game/Game.java b/src/game/Game.java index 9292b92..528ce2b 100644 --- a/src/game/Game.java +++ b/src/game/Game.java @@ -1,7 +1,7 @@ package game; import player.AbstractPlayer; import player.SwingPlayer; -import static game.Card.intColorToText; +import static card.Card.intColorToText; import java.awt.BorderLayout; import java.awt.Color; @@ -23,6 +23,9 @@ import org.json.*; +import card.Card; +import card.SwingCard; + public class Game { /* * COLORS: @@ -120,6 +123,10 @@ root = new JSONObject(tokener); difficulty = root.getInt("difficulty"); fontSize = root.getInt("fontSize"); + if(difficulty < 0) difficulty = 0; + if(fontSize <= 0) fontSize = 20; + System.out.println("FontSize: " + fontSize); + System.out.println("Difficulty: " + difficulty); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -143,7 +150,7 @@ private void createPlayers(){ players = new AbstractPlayer[NR_PLAYERS]; for(int i=0; i 0){ int index = random(CARDS_IN_DECK--); - card = cards.remove(index); + card = (SwingCard) cards.remove(index); } else { - card = new Card(3, -1); + card = new SwingCard(3, -1, playerID, this); } players[playerID].setCard(cardID, card); } @@ -482,7 +489,7 @@ for(; dealtCards < CARDS_PER_PLAYER; ++dealtCards){ for(int i=0; i