diff --git a/assets/archer.svg b/assets/archer.svg new file mode 100644 index 0000000..8ea98ae --- /dev/null +++ b/assets/archer.svg @@ -0,0 +1,55 @@ + + + + diff --git a/assets/horse.svg b/assets/horse.svg new file mode 100644 index 0000000..35c33db --- /dev/null +++ b/assets/horse.svg @@ -0,0 +1,45 @@ + + + + diff --git a/assets/king.svg b/assets/king.svg new file mode 100644 index 0000000..eb5e84b --- /dev/null +++ b/assets/king.svg @@ -0,0 +1,63 @@ + + + + diff --git a/assets/pawn.svg b/assets/pawn.svg new file mode 100644 index 0000000..920d6f5 --- /dev/null +++ b/assets/pawn.svg @@ -0,0 +1,50 @@ + + + + diff --git a/assets/queen.svg b/assets/queen.svg new file mode 100644 index 0000000..6825a6e --- /dev/null +++ b/assets/queen.svg @@ -0,0 +1,45 @@ + + + + diff --git a/assets/tower.svg b/assets/tower.svg new file mode 100644 index 0000000..39df223 --- /dev/null +++ b/assets/tower.svg @@ -0,0 +1,45 @@ + + + + diff --git a/src/Archer.java b/src/Archer.java new file mode 100644 index 0000000..554cdda --- /dev/null +++ b/src/Archer.java @@ -0,0 +1,32 @@ +import java.awt.*; +import java.awt.geom.Area; +import java.awt.geom.Ellipse2D; +import java.awt.geom.Path2D; + +public class Archer extends AbstractPiece { + + public Archer(Chessboard c, int x, int y) { + super(c, x, y); + } + + @Override + public void paint(Graphics2D g2) { + + double[] xObject1 = new double[]{50, 75, 70, 70, 30, 30, 25, 50}; + double[] yObject1 = new double[]{0, 21, 57, 64, 64, 57, 21, 0}; + + double[] xObjectSubtract = new double[]{47, 53, 53, 62, 62, 53, 53, 47, 47, 38, 38, 47, 47}; + double[] yObjectSubtract = new double[]{19, 19, 28, 28, 34, 34, 48, 48, 34, 34, 28, 28, 19}; + + Ellipse2D ellipse = getEllipse(18, 11.412, 64, 51); + + Area area = new Area(getStand()); + area.add(new Area(getObject(xObject1, yObject1))); + area.add(new Area(ellipse)); + area.subtract(new Area(getObject(xObjectSubtract, yObjectSubtract))); + + paintObjects(g2, new Shape[]{area}); + + } + +} diff --git a/src/DrawingPanel.java b/src/DrawingPanel.java index ee8aec9..51440b9 100755 --- a/src/DrawingPanel.java +++ b/src/DrawingPanel.java @@ -11,6 +11,17 @@ public class DrawingPanel extends JPanel { public DrawingPanel() { this.setPreferredSize(new Dimension(800, 600)); chessboard = new Chessboard(this); + new Tower(chessboard, 0, 7); + new Horse(chessboard, 1, 7); + new Tower(chessboard, 7, 7); + new Horse(chessboard, 6, 7); + new Queen(chessboard, 4, 7); + new Archer(chessboard, 5, 7); + new Archer(chessboard, 2, 7); + new King(chessboard, 3, 7); + for (int i = 0; i < 8; i++) { + new Pawn(chessboard, i, 6); + } } private Chessboard chessboard; diff --git a/src/Horse.java b/src/Horse.java new file mode 100644 index 0000000..3d7500c --- /dev/null +++ b/src/Horse.java @@ -0,0 +1,19 @@ +import java.awt.*; + +public class Horse extends AbstractPiece { + + public Horse(Chessboard c, int x, int y) { + super(c, x, y); + } + + @Override + public void paint(Graphics2D g2) { + + double[] xObject1 = new double[]{21, 62, 82, 82, 70, 30, 30, 44, 41, 30, 15, 14, 28, 21}; + double[] yObject1 = new double[]{0, 0, 18, 44, 58, 58, 50, 33, 30, 43, 43, 31, 10, 0}; + + paintObjects(g2, new Shape[]{getStand(), getObject(xObject1, yObject1)}); + + } + +} diff --git a/src/King.java b/src/King.java new file mode 100644 index 0000000..8ae0575 --- /dev/null +++ b/src/King.java @@ -0,0 +1,32 @@ +import java.awt.*; +import java.awt.geom.Area; +import java.awt.geom.Ellipse2D; +import java.awt.geom.Path2D; + +public class King extends AbstractPiece { + + public King(Chessboard c, int x, int y) { + super(c, x, y); + } + + @Override + public void paint(Graphics2D g2) { + + double[] xObject1 = new double[]{18, 27, 34, 43, 50, 57, 66, 73, 82, 70, 70, 30, 30, 18}; + double[] yObject1 = new double[]{27, 33, 26, 33, 26, 33, 26, 33, 27, 52, 58, 58, 52, 27}; + + double[] xObjectClip = new double[]{27, 73, 73, 66, 57, 50, 43, 34, 27, 27}; + double[] yObjectClip = new double[]{0, 0, 28, 21, 28, 21, 28, 21, 28, 0}; + + Path2D objectClip = getObject(xObjectClip, yObjectClip); + Ellipse2D ellipse = getEllipse(30, 6, 40, 40); + Area intersection = new Area(ellipse); + intersection.intersect(new Area(objectClip)); + Ellipse2D ellipse2 = getEllipse(44, 0, 12, 12); + intersection.add(new Area(ellipse2)); + + paintObjects(g2, new Shape[]{getStand(), getObject(xObject1, yObject1), intersection}); + + } + +} diff --git a/src/Pawn.java b/src/Pawn.java new file mode 100644 index 0000000..f37b5f1 --- /dev/null +++ b/src/Pawn.java @@ -0,0 +1,17 @@ +import java.awt.*; +import java.awt.geom.Ellipse2D; + +public class Pawn extends AbstractPiece { + + public Pawn(Chessboard c, int x, int y) { + super(c, x, y); + } + + @Override + public void paint(Graphics2D g2) { + + paintObjects(g2, new Shape[]{getStand(), getEllipse(30, 20, 40, 40)}); + + } + +} diff --git a/src/Queen.java b/src/Queen.java new file mode 100644 index 0000000..c46fd45 --- /dev/null +++ b/src/Queen.java @@ -0,0 +1,22 @@ +import java.awt.*; + +public class Queen extends AbstractPiece { + + public Queen(Chessboard c, int x, int y) { + super(c, x, y); + } + + @Override + public void paint(Graphics2D g2) { + + double[] xObject1 = new double[]{46, 54, 54, 63, 63, 54, 54, 66, 77, 85, 15, 23, 34, 46, 46, 37, 37, 46, 46}; + double[] yObject1 = new double[]{0, 0, 8, 8, 16, 16, 19, 24, 24, 31, 31, 24, 24, 19, 16, 16, 8, 8, 0}; + + double[] xObject2 = new double[]{15, 85, 70, 70, 30, 30, 15}; + double[] yObject2 = new double[]{35, 35, 51, 58, 58, 51, 35}; + + paintObjects(g2, new Shape[]{getStand(), getObject(xObject1, yObject1), getObject(xObject2, yObject2)}); + + } + +} diff --git a/src/Tower.java b/src/Tower.java new file mode 100644 index 0000000..b469f64 --- /dev/null +++ b/src/Tower.java @@ -0,0 +1,20 @@ +import java.awt.*; +import java.awt.geom.Path2D; + +public class Tower extends AbstractPiece { + + public Tower(Chessboard c, int x, int y) { + super(c, x, y); + } + + @Override + public void paint(Graphics2D g2) { + + double[] xObject1 = new double[]{17, 30, 30, 38, 38, 62, 62, 70, 70, 83, 83, 70, 30, 17, 17}; + double[] yObject1 = new double[]{10, 10, 21, 21, 10, 10, 21, 21, 10, 10, 46, 58, 58, 46, 10}; + + paintObjects(g2, new Shape[]{getStand(), getObject(xObject1, yObject1)}); + + } + +}