import java.util.Random; public class HardGeneric { T[] planes; U[] engines; private int planesNumber; private int enginesNumber; private int pictureBoxWidth; private int pictureBoxHeight; public HardGeneric(int planesCount, int enginesCount, int width, int height) { planesNumber = 0; enginesNumber = 0; planes = (T[]) new EntityAir[planesCount]; engines = (U[]) new IDrawEngines[enginesCount]; pictureBoxHeight = height; pictureBoxWidth = width; } public int InsertPlanes(T entityPlane) { if (planes[planes.length - 1] != null) return -1; for (int i = planesNumber - 1; i >= 0; i--) { planes[i + 1] = planes[i]; } planesNumber++; planes[0] = entityPlane; return 0; } public int InsertEngine(U engine) { if (engines[engines.length - 1] != null) return -1; for (int i = enginesNumber - 1; i >= 0; i--) { engines[i + 1] = engines[i]; } enginesNumber++; engines[0] = engine; return 0; } public DrawingAir makeObject() { Random rand = new Random(); EntityAir entity = planes[rand.nextInt(0, planesNumber)]; IDrawEngines engine = engines[rand.nextInt(0, enginesNumber)]; if(entity instanceof EntityAirBomber) return new DrawingAirBomber(entity.getSpeed(), entity.getWeight(), entity.getBodyColor(), ((EntityAirBomber) entity).getAdditionalColor(), ((EntityAirBomber) entity).getBombs(), ((EntityAirBomber) entity).getFuel(), pictureBoxWidth, pictureBoxHeight, engine.getType(), engine.getNumber()); return new DrawingAir(entity.getSpeed(), entity.getWeight(), entity.getBodyColor(), pictureBoxWidth, pictureBoxHeight, engine.getType(), engine.getNumber()); } }