public void processTime() { for (FarmObject obj : list) { if (obj instanceof Cow) { trace("Cow!"); Cow temp = (Cow) obj; // dead if (obj.doStuffInAHour(WorldObject.currentHour)) { obj.removeObjectFromFarm(this); } trace("Cow! pass"); if (temp.awake() && obj.generateNewLocation(grid.length)) { if (grid[obj.getNewX()][obj.getNewY()] == null) { move(obj); temp.UpdateToNewLocation(); } else if (grid[obj.getNewX()][obj.getNewY()] instanceof Grass) { Grass grass = (Grass) grid[obj.getNewX()][obj.getNewY()]; if (grid[obj.getNewX()][obj.getNewY()] instanceof PoisonedGrass) { temp.setSicknessLevel(temp.getSicknessLevel() + grass.getAmount()); } temp.setHungriness(temp.getHungriness() - grass.getAmount()); grass.removeObjectFromFarm(this); move(obj); temp.UpdateToNewLocation(); } } } if (obj instanceof Grass) { Grass grass = (Grass) obj; if (grass.doStuffInAHour(WorldObject.currentHour)) { if (grass.generateNewLocation(grid.length)) { Grass newGrass = new Grass(grass.getNewX(), grass.getNewY()); addFarmObjectToGrid(newGrass); addFarmObjectToList(newGrass); } } } } }
public void paintComponent(Graphics g) { // рисуем всех животных и всю траву super.paintComponent(g); int sizeOfCell = Information.getSizeOfCell(); g.drawImage( Information.getImageGround(), 0, 0, this.getSize().width, this.getSize().height, null); if (Information.worldCreated()) { for (Iterator<Grass> current = Information.getLinkedListOfGrass().iterator(); current.hasNext(); ) { // аналогично для травы Grass val1 = current.next(); if (val1.getGrassImage() == null) return; if (val1.getAge() > val1.getStartAge() - 20) { g.drawImage( Information.getImageVeryYoungTree(), val1.getXPosition() * Information.getSizeOfCell(), val1.getYPosition() * Information.getSizeOfCell(), sizeOfCell / 2, sizeOfCell / 2, null); } else { g.drawImage( val1.getGrassImage(), val1.getXPosition() * Information.getSizeOfCell(), val1.getYPosition() * Information.getSizeOfCell(), sizeOfCell, sizeOfCell, null); } } for (Iterator<Leo> current = Information.getLinkedListOfLeos().iterator(); current.hasNext(); ) { Leo val = current.next(); Image image; if ((image = val.getAnimalImage()) == null) return; if (val.isChild()) { g.drawImage( image, // вот здесь с помощью getAnimalImage можно в зависимости от состояния объекта // (гапример, он спит) ставить разные картинки val.getXPosition(), val.getYPosition(), sizeOfCell * (30 - val.timeOfInertion) / 30, sizeOfCell * (30 - val.timeOfInertion) / 30, null); } else g.drawImage( image, // вот здесь с помощью getAnimalImage можно в зависимости от состояния объекта // (гапример, он спит) ставить разные картинки val.getXPosition(), val.getYPosition(), sizeOfCell, sizeOfCell, null); if (val.haveBigCursor()) { g.drawImage( Information.getImageBigCursor(), val.getXPosition() - 25, val.getYPosition() - 25, 25, 25, null); } } for (Iterator<Herbivore> current = Information.getLinkedListOfHerbivores().iterator(); current.hasNext(); ) { Herbivore val = current.next(); Image image; if ((image = val.getAnimalImage()) == null) return; if ((val.isChild()) && (val.isAlive())) { g.drawImage( image, // вот здесь с помощью getAnimalImage можно в зависимости от состояния объекта // (гапример, он спит) ставить разные картинки val.getXPosition(), val.getYPosition(), sizeOfCell * (30 - val.timeOfInertion) / 30, sizeOfCell * (30 - val.timeOfInertion) / 30, null); } else g.drawImage( image, // вот здесь с помощью getAnimalImage можно в зависимости от состояния объекта // (гапример, он спит) ставить разные картинки val.getXPosition(), val.getYPosition(), sizeOfCell, sizeOfCell, null); if (val.haveBigCursor()) { g.drawImage( Information.getImageBigCursor(), val.getXPosition() - 25, val.getYPosition() - 25, 25, 25, null); } } if (isEvent) { this.showInformationAboutAnimal(); isEvent = false; } if (info != null) { info.repaintInfo(); } } }