From 482d7e7f86ed0343c0a4102562a82bd65dd52f37 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Sat, 30 Apr 2011 21:16:42 +0200 Subject: Paint stones on table git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@32 72836036-5685-4462-b002-a69064685172 --- src/jrummikub/JRummikub.java | 21 ++++++++++++++++++++- src/jrummikub/view/ITable.java | 6 ++++++ src/jrummikub/view/impl/StonePainter.java | 12 ++++++++++++ src/jrummikub/view/impl/Table.java | 28 +++++++++++++++++++++++++--- 4 files changed, 63 insertions(+), 4 deletions(-) (limited to 'src/jrummikub') diff --git a/src/jrummikub/JRummikub.java b/src/jrummikub/JRummikub.java index 1990fda..e4820bc 100644 --- a/src/jrummikub/JRummikub.java +++ b/src/jrummikub/JRummikub.java @@ -1,6 +1,8 @@ package jrummikub; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; import javax.swing.UIManager; @@ -8,6 +10,7 @@ import javax.swing.UIManager; import jrummikub.model.Position; import jrummikub.model.Stone; import jrummikub.model.StoneColor; +import jrummikub.model.StoneSet; import jrummikub.util.IListener; import jrummikub.util.IListener1; import jrummikub.view.IView; @@ -49,6 +52,7 @@ public class JRummikub { System.out.println("'End turn' fired"); }}); + //stones on the board Map stones = new HashMap(); stones.put(new Stone(1, StoneColor.ORANGE, false), new Position(0, 0)); stones.put(new Stone(10, StoneColor.BLUE, false), new Position(1, 0)); @@ -66,7 +70,22 @@ public class JRummikub { System.out.println("Board clicked at "+value); }}); - + + //stoneSets on the table + Map stoneSets = new HashMap(); + + stoneSets.put(new StoneSet(new Stone(5, StoneColor.ORANGE, false)), new Position(0.5f, 1)); + + List stoneList = new ArrayList(); + + stoneList.add(new Stone(7, StoneColor.BLACK, false)); + stoneList.add(new Stone(8, StoneColor.BLACK, false)); + stoneList.add(new Stone(9, StoneColor.BLACK, false)); + stoneList.add(new Stone(10, StoneColor.BLACK, false)); + + stoneSets.put(new StoneSet(stoneList), new Position(3.5f, 4)); + + view.getTable().setStoneSets(stoneSets); } diff --git a/src/jrummikub/view/ITable.java b/src/jrummikub/view/ITable.java index 30582d0..ce508bd 100644 --- a/src/jrummikub/view/ITable.java +++ b/src/jrummikub/view/ITable.java @@ -1,7 +1,13 @@ package jrummikub.view; +import java.util.Map; + +import jrummikub.model.Position; +import jrummikub.model.StoneSet; + public interface ITable { public void setLeftPlayerName(String playerName); public void setTopPlayerName(String playerName); public void setRightPlayerName(String playerName); + void setStoneSets(Map stoneSets); } \ No newline at end of file diff --git a/src/jrummikub/view/impl/StonePainter.java b/src/jrummikub/view/impl/StonePainter.java index 6fa5f38..c1b6d2c 100644 --- a/src/jrummikub/view/impl/StonePainter.java +++ b/src/jrummikub/view/impl/StonePainter.java @@ -12,6 +12,7 @@ import java.awt.geom.Rectangle2D; import jrummikub.model.Position; import jrummikub.model.Stone; import jrummikub.model.StoneColor; +import jrummikub.model.StoneSet; class StonePainter { private static final float ASPECT_RATIO = 0.75f; @@ -204,4 +205,15 @@ class StonePainter { paintCircle(g, x, y, width, height); } + + + public void paintStoneSet(Graphics2D g, StoneSet stoneSet, Position pos) { + float x = pos.getX(); + + for(Stone stone : stoneSet){ + paintStone(g, stone, new Position(x, pos.getY())); + x++; + } + + } } diff --git a/src/jrummikub/view/impl/Table.java b/src/jrummikub/view/impl/Table.java index c3c6a71..f7460e2 100644 --- a/src/jrummikub/view/impl/Table.java +++ b/src/jrummikub/view/impl/Table.java @@ -3,11 +3,18 @@ package jrummikub.view.impl; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.RenderingHints; +import java.util.Collections; +import java.util.Map; import javax.swing.ImageIcon; import javax.swing.JLabel; import javax.swing.JPanel; +import jrummikub.model.Position; +import jrummikub.model.Stone; +import jrummikub.model.StoneSet; import jrummikub.view.ITable; @SuppressWarnings("serial") @@ -17,7 +24,10 @@ public class Table extends JPanel implements ITable { private JLabel leftPlayerLabel, topPlayerLabel, rightPlayerLabel; private JPanel innerPanel; - + private StonePainter stonePainter = new StonePainter(1); + + private Map stoneSets = Collections.emptyMap(); + @Override public void setLeftPlayerName(String playerName) { leftPlayerLabel.setText(playerName); @@ -33,6 +43,11 @@ public class Table extends JPanel implements ITable { rightPlayerLabel.setText(playerName); } + @Override + public void setStoneSets(Map stoneSets) { + this.stoneSets = stoneSets; + } + Table() { super(true); // set double buffered setLayout(new BorderLayout()); @@ -57,13 +72,20 @@ public class Table extends JPanel implements ITable { } @Override - protected void paintComponent(Graphics g) { + protected void paintComponent(Graphics g1) { + Graphics2D g = (Graphics2D)g1; + for(int x = 0; x < getWidth(); x += background.getIconWidth()) { for(int y = 0; y < getHeight(); y += background.getIconHeight()) { background.paintIcon(this, g, x, y); } } - // TODO Rest of painting code + g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, + RenderingHints.VALUE_ANTIALIAS_ON); + + for (Map.Entry stoneSet : stoneSets.entrySet()) { + stonePainter.paintStoneSet(g, stoneSet.getKey(), stoneSet.getValue()); + } } } -- cgit v1.2.3