Добавьте новые астероиды, когда все они будут очищены от зеленых пятен.
Зеленоглазый
Мероприятия
О
Документация
Скачать
Обсуждать
Сценарии
emonakter8 написал .
Добавление новых астероидов каждый раз, когда астероиды расчищаются.
Я пытаюсь добавлять новые астероиды каждый раз, когда один из двух астероидов исчезает из мира. Я пробовал много разных способов, но столкнулся с какой-то ошибкой. сегодня в полночь. пожалуйста, любая помощь приветствуется. благодарю вас.
импортировать зеленоногих.*; /** * Камень в космосе. * * @author Poul Henriksen * @author Michael Kölling */ public class Asteroid extends SmoothMover < /** Размер этого астероида */ private int size; /** Когда стабильность достигнет 0, астероид взорвется */ private int стабильности; /** * Создать астероид с размером по умолчанию и случайным направлением движения. */ public Asteroid() < this(50); >/** * Создать астероид с заданным размером и случайным направлением движения. */ public Asteroid(int size) < super(new Vector(Greenfoot.getRandomNumber(360), 2)); установитьРазмер(размер); >/** * Создать астероид с заданными размерами и направлением движения. */ общедоступный астероид (целый размер, векторная скорость) < super(velocity); установитьРазмер(размер); >public void act() < move(); пересекающиеся(); если (getObjects(Asteroid.class).isEmpty()) < addAsteroids(startAsteroids); >> /** * Установить размер этого астероида. Обратите внимание, что стабильность напрямую * связана с размером. Меньшие астероиды менее стабильны.*/ public void setSize(int size) < стабильности = размер; этот.размер = размер; Изображение GreenfootImage = getImage(); image.scale(размер, размер); >/** * Вернуть текущую стабильность этого астероида. (Если он опустится до * нуля, он разобьется.) */ public int getStability() < return стабильности; >/** * Ударьте по этому астероиду, нанеся заданное количество урона. */ public void hit(int damage) < стабильности = стабильности - урону; if (stability > /** * Разбить этот астероид. Если мы все еще достаточно большие, это создаст два * меньших астероида. Если мы уже маленькие, просто исчезнем. */ private void breakUp() < Greenfoot.playSound(" Explosion.wav"); if (size else < int r = getVelocity().getDirection() + Greenfoot.getRandomNumber(45); double l = getVelocity().getLength(); Vector speed1 = new Vector(r + 60, l * 1.2); Вектор speed2 = новый вектор (r - 60, l * 1.2); Астероид a1 = новый астероид (размер/2, скорость1); Астероид a2 = новый астероид (размер/2, скорость2); getWorld(). addObject(a1, getX(), getY()); getWorld().addObject(a2, getX(), getY()); a1.move(); a2.move(); ((Пробел)getWorld()) .countScore(15);getWorld().removeObject(this);>> public void intersecting() > >
Космический класс
импортировать зеленоногих.*; импортировать java.awt.Color; /** * Пространство. Кое-что для ракет. * * @author Michael Kölling * @version 1.1 */ public class Space extends World < private Counter scoreCounter; частный интервал startAsteroids = 1; добавить астероиды (начать астероиды); /** * Создать пространство и все объекты внутри него. */ public Space() < super(600, 500, 1); Фон GreenfootImage = getBackground(); background.setColor(Цвет.ЧЕРНЫЙ); фон.заполнить(); создатьзвезды (300); Ракета-ракета = новая Ракета(); addObject(ракета, getWidth()/2 + 100, getHeight()/2); добавить астероиды (начать астероиды); scoreCounter = новый счетчик («Оценка:»); addObject(scoreCounter, 60, 480); Взрыв.initializeImages(); ProtonWave.initializeImages(); >/** * Добавить заданное количество астероидов в наш мир. Астероиды добавлены только в * левую половину мира.*/ private int addAsteroids(int count) < for(int i = 0; i < count; i++) < int x = Greenfoot.getRandomNumber(getWidth()/2); int y = Greenfoot.getRandomNumber(getHeight()/2); addObject(новый астероид(), x, y); >количество возвратов; > публичный интервал numberOfObjects(); < возврат астероидов; >private void levelUp() < int asteroids = numberOfObjects(); if (asteroids == 0) < Space space = (Space) getWorld(); space.addAsteroids(2); >> /** * Крит заданного количества звезд в пространстве. */ private void createStars(int number) < GreenfootImage background = getBackground(); for(int i=0; i < number; i++) < int x = Greenfoot.getRandomNumber(getWidth()); int y = Greenfoot.getRandomNumber(getHeight()); int color = 120 - Greenfoot.getRandomNumber(100); background.setColor (новый цвет (цвет, цвет, цвет)); background.fillOval(х, у, 2, 2); >> public void countScore(int change) <scoreCounter.add(change); >/** * Этот метод вызывается по окончании игры для отображения окончательного счета. */ public void gameOver() < ScoreBoard gameBoard = new ScoreBoard(); addObject(gameBoard, getWidth()/2, getHeight()/2); >>
Я получаю сообщение об ошибке, когда я объявил addAsteroids (startAsteroids);
Что вы хотите там декларировать? Удалите строку 14. Вы также можете удалить строку 51, если вы измените первое «int» в строке 43 на «void», тип возвращаемого значения не кажется полезным. Метод «numberOfObjects» также не должен компилироваться как есть.
Если вы хотите, чтобы мир делал что-то во время игры (например, добавлял/повторно добавлял астероиды в мир, когда их нет), вам нужен метод 'act' в классе. Сюда пойдет строка 14; однако он должен быть заключен в условный блок. Используйте «isEmpty» в списке, возвращаемом «getObjects», чтобы проверить, нет ли в мире астероидов для условия.