
7.2 Animal.javaimport java.awt.Graphics;import java.awt.Image;import java.io.File;public abstract class Animal { String name ; Point [] allCanAtPoint; //全部点位置 Point point; //动物当前所在的点位置 ViewForAnimal animalView; //动物的外观视图 public void setAtPoint(Point p) { if(p!=null){ point = p; point.setIsHaveAnimal(true); point.setAtPointAnimal(this); } } public Point getAtPoint() { return point; } public void setAllCanAtPoint(Point [] point){ allCanAtPoint = point; } public void setAnimalView(ViewForAnimal animalView) { this.animalView = animalView; animalView.setAnimal(this); } public ViewForAnimal getAnimalView() { return animalView; } public void setName(String s) { name = s; } public String getName() { return name; } public abstract boolean move();}7.3 LeftAnimal.javapublicclassLeftAnimalextendsAnimal{ publicbooleanmove(){ intk = -1; booleansuccessMove =false; Point p = getAtPoint(); for(inti=0;iallCanAtPoint.length;i++){ if(allCanAtPoint[i].equals(p)){ k = i; //找到动物当前所处的位置:allCanAtPoint[k] break; } } if(k==allCanAtPoint.length-1){//已经在最右面的点位置 returnfalse; } if(allCanAtPoint[k+1].isHaveAnimal()==false) { //前面位置上没有动物 this.setAtPoint(allCanAtPoint[k+1]); successMove =true; p.setAtPointAnimal(null); returnsuccessMove ; } if((k+1)==allCanAtPoint.length-1){ //前面位置上是已经到达终点的动物 returnfalse; } if(allCanAtPoint[k+2].isHaveAnimal()==false) {//前方隔位上没有动物 this.setAtPoint(allCanAtPoint[k+2]); successMove =true; p.setAtPointAnimal(null); returnsuccessMove ; } returnsuccessMove ; } }7.3 Point.javapublicclassPoint{intx,y;booleanhaveAnimal; Animal animal=null; //在该点位置上的动物publicvoidsetX(intx){this.x=x; }publicvoidsetY(inty){this.y=y; }publicbooleanisHaveAnimal(){returnhaveAnimal; }publicvoidsetIsHaveAnimal(booleanboo){ haveAnimal=boo; }publicintgetX(){returnx; }publicintgetY(){returny; }publicvoidsetAtPointAnimal(Animal animal){this.animal=animal;if(animal!=null) { haveAnimal =true; }else{ haveAnimal =false; } }publicAnimal getAtPointAnimal(){returnanimal; }}7.4 RightAnimal.javaimport java.awt.Graphics;import java.awt.Toolkit;import java.io.File;public class RightAnimal extends Animal{ boolean isLeft; File leftImage, rightImage; Toolkit tool; public boolean move(){ int k = -1; boolean successMove = false; Point p = getAtPoint(); for(int i=0;iallCanAtPoint.length;i++){ if(allCanAtPoint[i].equals(p)){ k = i; break; } } if(k==0){ //已经在最左面的点位置 return false; } if(allCanAtPoint[k-1].isHaveAnimal()==false) {//前面位置上没有动物 this.setAtPoint(allCanAtPoint[k-1]);//动物到达allCanAtPoint[k-1]点 successMove = true; p.setAtPointAnimal(null); //p点设置为无动物 return successMove ; } if((k-1)==0){ //前面位置上是已经到达终点的动物 return false; } if(allCanAtPoint[k-2].isHaveAnimal()==false) {//前方隔位上没有动物 this.setAtPoint(allCanAtPoint[k-2]); //动物到达allCanAtPoint[k-2]点 successMove = true; p.setAtPointAnimal(null); //p点设置为无动物 return successMove ;/