0

所以我正在上高中在线 Java 课程,而且我的老师没有帮助......所以我们正在学习抽象,我已经用我的“外星人”课程做了这个,他将面临一种前进的方向和另一个通过切换两个图像向后退......但是,当他们在示例中显示代码时,它似乎过于复杂,我想知道我是否只是遗漏了一些东西。

我的代码

private String avatarRight = "Alien.png";
private String avatarLeft = "Alien1.png";
/**
  * Act - do whatever the Alien wants to do. This method is called   whenever
  * the 'Act' or 'Run' button gets pressed in the environment.
  */
public void act() 
 {
     movement(avatarRight, avatarLeft);
     gatherPart();
 }

(包含移动方法的超类)

/**
* Sets up the movement keys and facing for the Object
*/
public void movement(String avatarRight,String avatarLeft)
{
     if (atWorldEdge() == false)
      {
        if (Greenfoot.isKeyDown("w"))
         {
            setLocation(getX(), getY()-2);
         }
        if (Greenfoot.isKeyDown("d"))
         {
            setImage(avatarRight);
            setLocation(getX()+2, getY());
         }
        if (Greenfoot.isKeyDown("s"))
         {
            setLocation(getX(), getY()+2);
         }
        if (Greenfoot.isKeyDown("a"))
         {
            setImage(avatarLeft);
            setLocation(getX()-2, getY());
         }
      }
     else
      {
      }
}

他们的代码

{
    private GreenfootImage image1;
    private GreenfootImage image2;
    private boolean isKeyDown;
    private String key;
    private String sound;
    /**
    * Create a Duke and initialize his two images. Link Duke to a specific keyboard
    * key and sound.
    */
   public Duke(String keyName, String soundFile)
   {
        key = keyName;
        sound = soundFile
        image1 = new GreenfootImage("Duke.png")
        image3 = new GreenfootImage("duke2.png")
        setImage(image1);
    }

}

我只是说 avatarRight = "this image"

他们说键=键名

键=“键”

编辑:所以设置它的方式和我最初设置的方式是

private int rotation;
public Capsule(int rot)
{
    rotation = rot
    setRotation(rotation);
}

但据我所知,下面的工作非常好。有什么理由我会做上面的代码而不是下面的代码

public Capsule(int rot)
{
    setRotation(rot);
}
4

1 回答 1

0

好的,根据评论,我倾向于说您不是在比较相同的东西。

我只是说 avatarRight = "this image" 他们说 key = keyname key = "key"

这似乎并不完全准确。你说的地方

private String avatarRight = "Alien.png";private String avatarLeft = "Alien1.png";

他们在构造函数中将 png 硬编码为"Duke.png"and "duke2.png",顺便说一句,其中包含一个错误,因为据我所知,没有image3.

所以keyName看起来不像你说的那样直接映射。也许您应该进一步研究代码以了解它们如何使用key或为两个示例提供相同的代码,以便我们可以进一步看到差异。

通过查看它,也许某处有一张地图,key可用于访问特定alien或其他类型的游戏对象。


解决您的编辑问题。

有什么理由我会做上面的代码而不是下面的代码

无法通过该代码判断原因是否有任何价值。它似乎不是你所展示的。我可以告诉你,我这样做的原因是因为我在其他地方需要这种价值,但不是现在。这可能是出于多种原因。您必须查看所有可用的代码,看看他们是否曾在其他任何地方使用该变量而不将其传递。然后您就找到了原因或缺乏那里。

于 2015-04-04T22:46:35.760 回答