Java 抽象类数组

Java 抽象类数组,java,arraylist,abstract-class,Java,Arraylist,Abstract Class,我有四节课。它们是:模型、视图、海龟和精灵。Sprite是一个抽象类,Turtle是从它扩展而来的。我在这方面做了很多工作,但我对自己无法理解这一点感到困惑和沮丧。我迫切需要一些帮助来理解需要做什么/为什么要做什么 我该怎么办 将模型类中的ArrayList修改为ArrayList 而不是正确列出ArrayList并将setDestination更改为 使用java.util.Random对象生成随机x坐标 介于0和宽度参数的值之间,且为随机y 0和高度参数之间的坐标。然后它应该创建一个 在点x

我有四节课。它们是:模型、视图、海龟和精灵。Sprite是一个抽象类,Turtle是从它扩展而来的。我在这方面做了很多工作,但我对自己无法理解这一点感到困惑和沮丧。我迫切需要一些帮助来理解需要做什么/为什么要做什么

我该怎么办

将模型类中的ArrayList修改为ArrayList 而不是正确列出ArrayList并将setDestination更改为 使用java.util.Random对象生成随机x坐标 介于0和宽度参数的值之间,且为随机y 0和高度参数之间的坐标。然后它应该创建一个 在点x,y处新建海龟,并将其添加到精灵的ArrayList中。 最初不再创造任何海龟,只创造它们 当用户单击鼠标时,即调用setDestination时

这是我的档案:我知道很多,但我不确定到底需要多少

Model.java:

Controller.java:


将我的模型类中的ArrayList修改为ArrayList而不是ArrayList什么?另外,您给出的代码没有编译,例如,Sprite没有声明为类。
import java.awt.Graphics;
import java.io.IOException;
import java.util.*;
class Model
{
    private List<Sprite> t = new ArrayList<>();
    private int turtleNumber = 3;

    Model() throws IOException
      {
           for (int i = 0; i <turtleNumber; i++)
            {
              int X = Math.round((float)Math.random()* 1000);
              int Y = Math.round((float)Math.random() *700);
              Sprite t1 = new Turtle(X,Y);
              t.Add(t1);
            }
        }

    public void update(Graphics g)
          {
              for(int i = 0; i <turtleNumber; i++)
              t.get(i).update(g);
          }

    public void setDestination(int x, int y, int width, int height) 
    {
        for(Turtle turt : t)
        {
            Turtle.setDest(x, y);
        }
    }
}
import java.awt.Graphics;

class Turtle extends Sprite
{

    private static int dest_x;
    private static int dest_y;

    Turtle(int x, int y) {
        super( x, y , "turtle.png");
    } 

    public int getX() { return x; }
    public int getY() { return y; }

    public void setX(int xIn) { x = xIn; }
    public void setY(int yIn) { y = yIn; }

    public void update(Graphics g) {
        // Move the turtle
        if (x < dest_x) {
            x += 1;
        } else if (x > dest_x) {
            x -= 1;
        }

        if (y < dest_y) {
            y += 1;
        } else if (y > dest_y) {
            y -= 1;
        }
    }

    public static void setDest(int x, int y) {
        dest_x = x;
        dest_y = y;
    }
}
import java.awt.Graphics;
import javax.imageio.ImageIO;
import java.awt.Image;
import java.io.File;
import java.io.IOException;

public abstract class Sprite
{

int x;
int y;
String imageName;

Image image;

//Sprite(){}

public Sprite(int x1, int y1, String im)
{
//Store variables
    imageName = im;
     x = x1;
     y = y1;

    try {
        image = ImageIO.read(new File(imageName));
    } catch (IOException ioe) {
        System.out.println("Unable to load image file.");
    }

    // Draw the turtle
      g.drawImage(imageName, x, y, 100, 100, null);
}

public abstract void update(Graphics g);

public Image getImage()
{
    return image;
}
}
import java.awt.Graphics;
import java.io.IOException;
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
import javax.swing.Timer;

class Controller implements MouseListener
{
    Model model;
    View view;

    Controller() throws IOException, Exception {
        model = new Model();
        view = new View(this);
        new Timer(50, view).start();
    }

    public void update(Graphics g) {
        model.update(g);
    }

    public void mousePressed(MouseEvent e) {
        model.setDestination(e.getX(), e.getY(), view.getWidth(), view.getHeight());
    }

    public void mouseReleased(MouseEvent e) {    }
    public void mouseEntered(MouseEvent e) {    }
    public void mouseExited(MouseEvent e) {    }
    public void mouseClicked(MouseEvent e) {    }

    public static void main(String[] args) throws Exception {
        //  Use the following line to determine which directory your program
        //  is being executed from, since that is where the image files will
        //  need to be.
        //System.out.println("cwd=" + System.getProperty("user.dir"));
        new Controller();
    }
}