Итак, я беру класс 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 = "этот образ"
они говорят, ключ = имя_раздела
ключ = «ключ»
редактировать: Так то, как настроить его, и я установить мину вверх первоначально был
private int rotation;
public Capsule(int rot)
{
rotation = rot
setRotation(rotation);
}
но ниже один работает прекрасно , насколько я могу судить. Есть ли причина, почему я хотел бы сделать код выше, а не ниже одной
public Capsule(int rot)
{
setRotation(rot);
}
Вы сравниваете конструктор с кодом движения. Я не понимаю, на какой части сложнее. Я скажу, что ваш код движения не идеален, потому что вы можете легко привязать определенное движение к определенному ключу и избегать всех проверок, что, по-видимому, означает, что комментарии в «их» кодексе подразумевают, что они планируют. – ChiefTwoPencils
Хорошо, что делает с тех пор. Итак, как бы вы улучшили код? так урок показал нам, чтобы написать код движения hte. – power5000
Хорошо, тогда не беспокойтесь об этой части. Можете ли вы уточнить, что, по вашему мнению, сложнее в их отношении. Это конструктор, поэтому, если вы собираетесь сравнивать их, похоже, вам придется сравнивать одни и те же вещи, например, конструкторы, методы, переменные и т. Д. Главное, что я вижу, это ссылки на изображения и вы этого не делаете. Их было бы лучше, потому что вам придется извлекать файл каждый раз, когда вы устанавливаете изображение; не так ли? IOW, они 'setImage (image)' и вы 'setImage (string)'. – ChiefTwoPencils