【发布时间】:2015-04-04 22:18:46
【问题描述】:
所以我正在上高中在线 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 = "这张图片"
他们说 key = keyname
key = "key"
编辑: 所以设置它的方式和我最初设置的方式是
private int rotation;
public Capsule(int rot)
{
rotation = rot
setRotation(rotation);
}
但据我所知,下面的工作非常好。有什么理由我会做上面的代码而不是下面的代码
public Capsule(int rot)
{
setRotation(rot);
}
【问题讨论】:
-
您将构造函数与移动代码进行比较。我不清楚哪一部分过于复杂。我会说您的移动代码并不理想,因为您可以轻松地将特定移动绑定到特定键并避免所有检查,这就是“他们的”代码中的 cmets 似乎暗示他们正在计划的内容。
-
好吧,既然如此。那么你将如何改进代码呢?这就是本课向我们展示的如何编写运动代码。
-
那么别担心那部分。你能澄清一下你认为他们的更复杂的地方吗?那是一个构造函数,所以如果你要比较它们,似乎你必须比较相同的东西,例如构造函数、方法、变量等。我看到的主要是它们引用了图像和你没有。他们的会更好,因为每次设置图像时都必须获取文件;不是吗? IOW,他们
setImage(image)而你setImage(string)。 -
好吧,他们的代码使用了一个中间变量,他们有参数
keyName,然后创建一个名为key的新变量,然后设置key = keyName,但为什么不直接设置keyName = "key"where "key " 是您将使用的键,例如 w。
标签: variables abstraction greenfoot