Игра «Червь (Змея), рост/перемещение фигур»JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Игра «Червь (Змея), рост/перемещение фигур»

Сообщение Anonymous »

Я работаю над программированием игры, похожей на Snake. На данный момент я изо всех сил пытаюсь закодировать свои методы move() и Grow(). Суть этой игры заключается в том, что червь начинается с 1 фигуры и увеличивается на 1 часть с каждым ходом, пока не достигнет 3 частей. После того, как он достигнет 3 штук, он сможет вырасти, только съев яблоко. Движение в этой игре осуществляется путем удаления первой фигуры и добавления новой, расположенной в направлении движения червяка. Предполагается, что функция Move() должна переместить червяка на одну часть, а функция Grove() должна увеличить червяка на одну часть. Однако, когда вызывается функция Grove(), червь не должен расти до тех пор, пока не будет вызвана функция move(). Я добавил частную переменную «growPiece», чтобы сохранять фрагмент при вызове метода Groove(), а затем добавлять его при вызове метода move(). Однако я не получаю ожидаемых результатов.

Код: Выделить всё

public class Worm {

private int x;
private int y;
private Direction direction;
private List
 pieces;
private Piece growPiece;

public Worm(int originalX, int originalY, Direction originalDirection) {
this.x = originalX;
this.y = originalY;
this.direction = originalDirection;
this.pieces = new ArrayList();
this.pieces.add(new Piece(this.x, this.y));
this.growPiece = null;
}

public List getPieces() {
return this.pieces;
}

public void move() {
if (this.direction == Direction.RIGHT) {
this.pieces.add(new Piece(this.pieces.get(this.pieces.size() - 1).getX() + 1, this.pieces.get(this.pieces.size() - 1).getY()));
} else if (this.direction == Direction.LEFT) {
this.pieces.add(new Piece(this.pieces.get(this.pieces.size() - 1).getX() + 1, this.pieces.get(this.pieces.size() - 1).getY()));
} else if (this.direction == Direction.DOWN) {
this.pieces.add(new Piece(this.pieces.get(this.pieces.size() - 1).getX(), this.pieces.get(this.pieces.size() - 1).getY() + 1));
} else if (this.direction == Direction.UP) {
this.pieces.add(new Piece(this.pieces.get(this.pieces.size() - 1).getX(), this.pieces.get(this.pieces.size() - 1).getY() - 1));
}
if (this.growPiece != null) {
this.pieces.add(growPiece);
this.growPiece = null;
}
if (this.pieces.size() > 3 && this.growPiece == null) {
this.pieces.remove(0);
}
}

public void grow() {
if (this.direction == Direction.RIGHT) {
this.growPiece = new Piece(this.pieces.get(this.pieces.size() - 1).getX() + 2, this.pieces.get(this.pieces.size() - 1).getY());
} else if (this.direction == Direction.LEFT) {
this.growPiece = new Piece(this.pieces.get(this.pieces.size() - 1).getX() - 2, this.pieces.get(this.pieces.size() - 1).getY());
} else if (this.direction == Direction.DOWN) {
this.growPiece = new Piece(this.pieces.get(this.pieces.size() - 1).getX(), this.pieces.get(this.pieces.size() - 1).getY() + 2);
} else if (this.direction == Direction.UP) {
this.growPiece = new Piece(this.pieces.get(this.pieces.size() - 1).getX(), this.pieces.get(this.pieces.size() - 1).getY() - 2);
}
}
Мне не удается заставить методы взаимодействовать друг с другом без использования параметров.


Подробнее здесь: https://stackoverflow.com/questions/345 ... ing-moving
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»