Я начинающий программист, использующий Java. Я делаю свою первую простую игру. Мне нужна монета (пункты LinkedList в моем классе контроллера) должны быть удален после того, как они были собраны, и еще лучше было бы, когда они могут быть порождали снова в другом место (я использую это:Как удалить (и респаун) элемент (монета) в java. (Использование класса контроллера для нереста)
Random randomGenerator = new Random();
for (int idx = 1; idx <= 1; ++idx){
int r1 = randomGenerator.nextInt(590);
this.r1=r1;
}
for (int idx = 1; idx <= 1; ++idx){
int r2 = randomGenerator.nextInt(380);
this.r2=r2;
установить мою «монету» случайную переменную x и y). Я уже сделал все правильно, когда дело дошло до их появления в этом случайном месте, и я также сделал метод Collision() внутри моего класса Player. Похоже, что:
private void Collision(){
for(int i = 0; i < c.size(); i++){
if(getBounds().intersects(c.get(i).getBounds())){
Game.points++;
}
}
}
Точки работают нормально (вроде), но я просто не могу понять, что нужно сделать, чтобы удалить монету после того, как он был «взял». Я, конечно, иметь надстройку и метод RemoveItem внутри моего класса контроллера:
public void removeItem(Coin coin){
c.remove(coin);
}
public void addItem(Coin coin){
c.add(coin);
}
AddItem вызывается в конструкторе контроллера ... я знаю, что это немного долго, но я хотел сделать все ясно. Я был бы очень рад, если бы кто-то помог мне, потому что без этой помощи игра бессмысленна. Спасибо всем, кто мне помогает, и если вам нужна дополнительная информация, просто скажите.
EDIT: Это мой код:
private void Collision(){
int newCount = 0;
while(iter.hasNext()){
iter.next();
for(int i=0; i<cb.size(); i++){
if(getBounds().intersects(cb.get(i).getBounds())){
Game.points++;
newCount++;
iter.remove();
}
}
}
for(int i = 0; i < newCount; i++){
controller.addItem(new Coin());
newCount--;
}
}
Я итератор объявлен в контроллере:
static Iterator<Coin> iter = c.iterator();
и функция чтения, так что я могу использовать его в своем классе игроков:
public static Iterator<Coin> getCoinIterator(){
return iter;
}
И здесь он получает итератор от контроллера до класса игрока
private Iterator<Coin> iter = Controller.getCoinIterator();
Я даже создал методы next() и hasNext() в контроллере, но я все еще получаю кучу ошибок.
Вы должны написать, что цикл в методе, который проверяет наличие столкновений, так что в вашем случае в плеере –
Ok. Спасибо за ваш ответ. c - переменная для связанного списка в классе игроков, чтобы получить оценки монеты. Я еще не знаю, как петли итератора еще ... но я думаю, что это должно сработать. Мой вопрос: в инструкции if не следует добавлять 1 к newCount для того, чтобы цикл for работал? 3. Монета получает случайную позицию, но в конструкторе контроллера не в конструкторе монет. Должен ли я изменить его? Дай мне знать. Я до сих пор не понимаю многих вещей: D –
Ragnar
Хорошо, я попытаюсь прояснить некоторые вещи в своем ответе –