3. Доп.задание

This commit is contained in:
prodigygirl 2022-12-06 09:46:47 +04:00
parent b15fd30fb1
commit e9261e6b51
4 changed files with 72 additions and 4 deletions

View File

@ -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<Object> getParts() {
ArrayList<Object> 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<Object> 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();
}
}
}

View File

@ -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;

View File

@ -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<Object> getParts() {
ArrayList<Object> 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;
}
}

View File

@ -4,7 +4,7 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
public class MapWithSetArmoredCarsGeneric<T extends IDrawingObject, U extends AbstractMap> {
public class MapWithSetArmoredCarsGeneric<T extends IDrawingObject, U extends AbstractMap> implements Comparable{
private int _pictureWidth;
@ -175,4 +175,18 @@ public class MapWithSetArmoredCarsGeneric<T extends IDrawingObject, U extends Ab
public void Sort(Comparator<T> 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;
}
}