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)});
+
+ }
+
+}