变量抽象
Abstraction with variables
所以我要在线上一所高中 Java class 好吧,我的老师没有帮助...
所以我们正在学习抽象,我已经用我的 "alien" class 移动了,他将通过切换两个图像面对一个前进的方向和另一个后退的方向......但是当他们展示示例中的代码似乎过于复杂,我想知道我是否只是遗漏了什么。
我的代码
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();
}
(超class含移动方法)
/**
* 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);
}
}
这里直接说头像吧="this image"
他们说 key = keyname
关键="key"
编辑:
所以设置它的方式和我最初设置我的方式是
private int rotation;
public Capsule(int rot)
{
rotation = rot
setRotation(rotation);
}
但据我所知,下面的那个工作得很好。有什么理由我会做上面的代码而不是下面的代码
public Capsule(int rot)
{
setRotation(rot);
}
好的,根据评论,我倾向于说你不是在比较相同的东西。
Where I just say avatarRight = "this image" they say key = keyname key
= "key"
这似乎并不准确。你说的地方
private String avatarRight = "Alien.png";
和
private String avatarLeft = "Alien1.png";
他们在构造函数中将 png 硬编码为 "Duke.png"
和 "duke2.png"
,其中包含一个错误,因为据我所知,没有 image3
。
所以 keyName
似乎并没有像你说的那样直接映射。也许您应该进一步研究代码以了解它们如何使用 key
或为两个示例提供相同的代码以便我们进一步了解差异。
通过查看它,也许某处有一张地图,key
将用于访问特定的 alien
或其他类型的游戏对象。
解决您的编辑问题。
Is there any reason why I would do the above code rather than the one
below
无法通过该代码判断原因是否有价值;它似乎不是你所展示的。我可以告诉你,我这样做的原因是因为我在别处需要这种价值,但不是现在。这可能出于多种原因。您必须查看所有可用的代码,看看他们是否曾在其他任何地方使用该变量 而没有传递它。然后您找到了原因或缺少的原因。
所以我要在线上一所高中 Java class 好吧,我的老师没有帮助... 所以我们正在学习抽象,我已经用我的 "alien" class 移动了,他将通过切换两个图像面对一个前进的方向和另一个后退的方向......但是当他们展示示例中的代码似乎过于复杂,我想知道我是否只是遗漏了什么。
我的代码
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();
}
(超class含移动方法)
/**
* 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);
}
}
这里直接说头像吧="this image"
他们说 key = keyname
关键="key"
编辑: 所以设置它的方式和我最初设置我的方式是
private int rotation;
public Capsule(int rot)
{
rotation = rot
setRotation(rotation);
}
但据我所知,下面的那个工作得很好。有什么理由我会做上面的代码而不是下面的代码
public Capsule(int rot)
{
setRotation(rot);
}
好的,根据评论,我倾向于说你不是在比较相同的东西。
Where I just say avatarRight = "this image" they say key = keyname key = "key"
这似乎并不准确。你说的地方
private String avatarRight = "Alien.png";
和
private String avatarLeft = "Alien1.png";
他们在构造函数中将 png 硬编码为 "Duke.png"
和 "duke2.png"
,其中包含一个错误,因为据我所知,没有 image3
。
所以 keyName
似乎并没有像你说的那样直接映射。也许您应该进一步研究代码以了解它们如何使用 key
或为两个示例提供相同的代码以便我们进一步了解差异。
通过查看它,也许某处有一张地图,key
将用于访问特定的 alien
或其他类型的游戏对象。
解决您的编辑问题。
Is there any reason why I would do the above code rather than the one below
无法通过该代码判断原因是否有价值;它似乎不是你所展示的。我可以告诉你,我这样做的原因是因为我在别处需要这种价值,但不是现在。这可能出于多种原因。您必须查看所有可用的代码,看看他们是否曾在其他任何地方使用该变量 而没有传递它。然后您找到了原因或缺少的原因。