From e9261e6b512792d87e35abdd9bebcc709e3a664b Mon Sep 17 00:00:00 2001 From: prodigygirl Date: Tue, 6 Dec 2022 09:46:47 +0400 Subject: [PATCH] =?UTF-8?q?3.=20=D0=94=D0=BE=D0=BF.=D0=B7=D0=B0=D0=B4?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/DrawingArmoredCar.java | 38 +++++++++++++++++-- src/main/java/DrawingObjectArmoredCar.java | 2 + src/main/java/DrawingTank.java | 20 ++++++++++ .../java/MapWithSetArmoredCarsGeneric.java | 16 +++++++- 4 files changed, 72 insertions(+), 4 deletions(-) diff --git a/src/main/java/DrawingArmoredCar.java b/src/main/java/DrawingArmoredCar.java index fc005a9..c312552 100644 --- a/src/main/java/DrawingArmoredCar.java +++ b/src/main/java/DrawingArmoredCar.java @@ -1,8 +1,7 @@ import java.awt.*; -import java.util.HashMap; -import java.util.Random; +import java.util.*; -public class DrawingArmoredCar { +public class DrawingArmoredCar implements Iterable{ protected EntityArmoredCar armoredCar; protected float startPosX; @@ -19,6 +18,8 @@ public class DrawingArmoredCar { protected IDrawingCaterpillar drawingCaterpillar; + private Object cursor = null; + public EntityArmoredCar getArmoredCar() { return armoredCar; } @@ -151,4 +152,35 @@ public class DrawingArmoredCar { hashMap.put("Bottom", startPosY + carHeight); return hashMap; } + + @Override + public Iterator iterator() { + return new ArmoredCarIterator(); + } + + protected ArrayList getParts() { + ArrayList list = new ArrayList<>(); + list.add(armoredCar.getSpeed()); + list.add(armoredCar.getWeight()); + list.add(armoredCar.getBodyColor()); + list.add(drawingCaterpillar); + list.add(drawingCaterpillar.getNumRinks()); + return list; + } + + protected class ArmoredCarIterator implements Iterator { + Deque partsCar = new LinkedList<>(getParts()); + @Override + public boolean hasNext() { + return !partsCar.isEmpty(); + } + + @Override + public Object next() throws NoSuchElementException{ + if (partsCar.isEmpty()) + throw new NoSuchElementException(); + return partsCar.pollFirst(); + } + } + } diff --git a/src/main/java/DrawingObjectArmoredCar.java b/src/main/java/DrawingObjectArmoredCar.java index fec881f..5fc2d13 100644 --- a/src/main/java/DrawingObjectArmoredCar.java +++ b/src/main/java/DrawingObjectArmoredCar.java @@ -64,6 +64,8 @@ public class DrawingObjectArmoredCar implements IDrawingObject{ { return false; } + if (armoredCar.drawingCaterpillar.getClass() != otherCar.armoredCar.drawingCaterpillar.getClass()) + return false; var car = armoredCar.armoredCar; var otherCarCar = otherCar.armoredCar.armoredCar; diff --git a/src/main/java/DrawingTank.java b/src/main/java/DrawingTank.java index 4c99b93..776800b 100644 --- a/src/main/java/DrawingTank.java +++ b/src/main/java/DrawingTank.java @@ -1,4 +1,5 @@ import java.awt.*; +import java.util.ArrayList; public class DrawingTank extends DrawingArmoredCar{ public DrawingTank(int speed, float weight, Color bodyColor, Color dopColor, @@ -40,4 +41,23 @@ public class DrawingTank extends DrawingArmoredCar{ armoredCar = new EntityTank(tank.getSpeed(), tank.getWeight(), tank.getBodyColor(), color, tank.isTowerWeapon(), tank.isAMachineGun()); } + + @Override + protected ArrayList getParts() { + ArrayList list = new ArrayList<>(); + list.add(armoredCar.getSpeed()); + list.add(armoredCar.getWeight()); + list.add(armoredCar.getBodyColor()); + + if (armoredCar instanceof EntityTank tank) { + list.add(tank.getDopColor()); + list.add(tank.isTowerWeapon()); + list.add(tank.isAMachineGun()); + } + + list.add(drawingCaterpillar); + list.add(drawingCaterpillar.getNumRinks()); + + return list; + } } diff --git a/src/main/java/MapWithSetArmoredCarsGeneric.java b/src/main/java/MapWithSetArmoredCarsGeneric.java index 8878387..717f93c 100644 --- a/src/main/java/MapWithSetArmoredCarsGeneric.java +++ b/src/main/java/MapWithSetArmoredCarsGeneric.java @@ -4,7 +4,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; -public class MapWithSetArmoredCarsGeneric { +public class MapWithSetArmoredCarsGeneric implements Comparable{ private int _pictureWidth; @@ -175,4 +175,18 @@ public class MapWithSetArmoredCarsGeneric comparator) { _setCars.SortSet(comparator); } + + @Override + public int compareTo(Object o) { + if (o == null) + return 1; + var other = (MapWithSetArmoredCarsGeneric) o; + if (_setCars.getCount() != other._setCars.getCount()) + return Integer.compare(_setCars.getCount(), other._setCars.getCount()); + if (_placeSizeHeight != other._placeSizeHeight) + return Integer.compare(_placeSizeHeight, other._placeSizeHeight); + if (_placeSizeWidth != other._placeSizeWidth) + return Integer.compare(_placeSizeWidth, other._placeSizeWidth); + return 0; + } }