20 просмотров

Имя уже используется

Тег с указанным именем ветки уже существует. Многие команды Git принимают имена как тегов, так и веток, поэтому создание этой ветки может привести к неожиданному поведению. Вы уверены, что хотите создать эту ветку?

Отменить Создать

Астероиды /src/asteroids/ Game.java /

Определения кода
Актуальный индекс навигации по коду

  • Перейти к файлу Т
  • Перейти к строке L
  • Перейти к определению R
  • Копировать путь
  • Копировать постоянную ссылку

Этот коммит не принадлежит ни одной ветке в этом репозитории и может принадлежать форку за пределами репозитория.

В настоящее время не удается получить участников
418 строк (384 слота) 12,6 КБ

  • Открыть с рабочего стола
  • Просмотр в необработанном виде
  • Копировать необработанное содержимое Копировать необработанное содержимое Копировать необработанное содержимое

Копировать необработанное содержимое

Этот файл содержит двунаправленный текст Unicode, который может быть интерпретирован или скомпилирован не так, как показано ниже. Для просмотра откройте файл в редакторе, который показывает скрытые символы Unicode. Узнайте больше о двунаправленных символах Unicode

/*
* ]Клон астероидов Закари Стюарта
*
*/
пакет астероидов;
импортировать java. ох . Точка ;
импортировать java. ох . мероприятие . ключевое событие;
импортировать java. ой . геом. Прямоугольник2D ;
импортировать java. полезно . связанный список;
импортировать java. полезно . Список ;
импортировать java. полезно . Итератор списка;
импортировать java. полезно . Случайный ;
обработка импорта. основной . апплет ;
/**
*
* Этот класс является логическим центром игры. Он управляет списком объектов
* обработка всех операций, таких как добавление/удаление объектов, мониторинг столкновений,
* так далее.
*/
Классная игра
частный холст PApplet;
частный список spaceThings ;
личный список создаваемых объектов;
частный ListIterator li ;
частный ListIterator createablesLi ;
частная цель SpaceThing;
Случайный случайный = новый случайный ();
частный int gameState ;
частный внутренний кадр;
частное судно;
частный внутренний уровень;
частный личный счет;
частные астероиды Осталось ;
частные корабли Осталось ;
частный интервал bulletsActive ;
частные внутренние бонусы;
// Эти константы делают переключатели намного приятнее
окончательный интервал КОРАБЛЬ = 1 ;
конечный интервал ASTEROID = 2 ;
конечный интервал BULLET = 3 ;
конечный интервал NUKE = 4 ;
окончательный интервал МЕНЮ = 0 ;
окончательный int PLAYING = 1 ;
конечный интервал GAMEOVER = 2 ;
/**
*
* @param papp Главный апплет игры.
*
*/
публичная игра ( PApplet papp )
холст = папа ;
>
public void initMenu ()
gameState = МЕНЮ ;
>
/**
* Сбрасывает все списки объектов, оценки и т. д. и устанавливает уровень 1.
*/
public void newGame ()
spaceThings = новый LinkedList();
createables = новый LinkedList ();
корабли Осталось = 3 ;
оценка = 0;
создатьВещь ( КОРАБЛЬ );
уровень инициализации (1);
gameState = ИГРА ;
>
общественная пустота gameOver ()
космические вещи = ноль;
Создаваемые = ноль;
gameState = ИГРА КОНЕЦ ;
>
/**
* Создает уровень с newLeveL + 2 корабля
* @параметр нового уровня
*/
public void initLevel ( int newLevel )
уровень = новый уровень;
для ( int я = 0 ; я < уровень + 2 ; я ++)
создатьВещь (АСТЕРОИД);
>
>
/**
* Создает корабли, астероиды, пули и т. д. и добавляет их в основной
* список объектов.
* @param тип вещи SpaceThing. Корабль, астероид или пуля
*/
public void createThing (int вещь)
li = космические вещи. списокИтератор();
переключатель ( вещь )
чехол КОРАБЛЬ :
ли . добавить ( новый корабль ( холст ));
ломать ;
случай АСТЕРОИД:
ли . добавить (новый астероид (холст, 1+уровень));
ломать ;
>
>
/**
* Удаляет вещь из списка объектов.
* @парам вещь
*/
public void destroyThing ( штука SpaceThing )
li = космические вещи. списокИтератор();
ли . удалять ();
>
публичная недействительная ничья ()
холст . фон (0);
если (gameState == ИГРА)
рисоватьОбъекты();
нарисоватьХуд();
если (оставшиеся астероиды <= 0)
initLevel (уровень + 1);
>
если (shipsRemaining < 0)
игра закончена ();
>
> иначе если ( gameState == MENU )
рисоватьМеню();
> иначе если ( gameState == GAMEOVER )
нарисоватьИгровер();
>
>
/**
* Это нарисовано, когда состояние игры находится в МЕНЮ. Управление, вход в игру и т. д.
*/
public void drawMenu ()
холст . textAlign(PApplet.CENTER);
холст . текст ("ПЛОХИЕ АСТЕРОИДЫ", холст . ширина / 2 , 40 );
холст . текст ("Зак Стюарт", холст. ширина / 2, 60);
холст . текст ("zgstewart@gmail.com", холст. ширина / 2, 75);
холст . текст ("Элементы управления:", холст. ширина/2, 105);
холст . text ("W — Ускорить", canvas. width/2, 125);
холст . text ("A — Повернуть влево", canvas. width/2, 140);
холст . text ("D — Повернуть вправо", canvas. width/2, 155);
холст . text ("Космос — Огонь Первичный", canvas. width/2, 170);
холст . text("Используйте мышь, чтобы стрелять ядерными зарядами" , canvas .width / 2 , 200 );
холст . text ("Нажмите Enter, чтобы начать", canvas. width/2, 230);
>
/**
* 🙁 Оценка, вернитесь в главное меню.
*/
public void drawGameOver ()
холст . textAlign(PApplet.CENTER);
холст . текст ("ИГРА ЗАВЕРШЕНА", холст. ширина / 2, 40);
холст . text ("Оценка: " + оценка, холст. ширина / 2, 60);
холст . text ("Вставьте монеты, чтобы продолжить", canvas. width/2, 80);
холст . text ("Или нажмите Enter", canvas. width/2, 95);
>
/**
* Отображает информацию об игре, такую ​​как счет, оставшиеся корабли и т. д.
*/
public void drawHud ()
холст . ход ( 255 );
холст . заполнить ( 255 );
холст . textAlign ( PApplet . LEFT );
холст . текст ("Уровень: " + уровень, 10, 20);
холст . text ("Корабли: " + shipRemaining, 10, 40);
холст . text("Nukes:" +ship.getNukes(), 10, 60);
холст . textAlign ( PApplet .RIGHT );
холст . text("Оценка: " + оценка, холст. ширина — 10, 20);
>
/**
* Здесь много чего происходит. Главный центр управления игрой. Устанавливает корабль
* var для текущего корабля, удаляет мертвые объекты, добавляет предметы в каждый объект
* создаваемый массив в список объектов и очищает указанный массив. Мониторы
* коллизии через getCollision(), а затем активирует соответствующую коллизию.
*/
public void drawObjects ()
кадр += 1 ;
li = космические вещи. списокИтератор();
createablesLi = createables . списокИтератор();
астероиды Осталось = 0 ;
бонусы = 0 ;
цель = ноль;
в то время как ( li . hasNext ())
Объект х = li . следующий ();
если ( x экземпляр корабля )
Корабль = ( Корабль ) х ;
shipRemaining += корабль . incShips ;
судно . incShips = 0 ;
> еще если ( x экземпляр астероида )
Укажите mousePos = холст . получитьПоложениеМыши();
если (мышьПос!= ноль)
if ((( Астероид ) x ).getBounds (). содержит ( mousePos . x , mousePos . y ))
цель = (SpaceThing) x;
>
>
астероидыОсталось += 1 ;
> иначе если ( x instanceof PowerUp )
бонусы += 1 ;
>
если ( x экземпляр SpaceThing )
SpaceThing s = ( SpaceThing ) x ;
если ( s . createable != null )
for ( SpaceThing createable : s . createable )
if (!( createable instanceof Bullet ) || bulletsActive < 3 )
if (создаваемый экземпляр Bullet)
bulletsActive += 1 ;
>
createablesLi . добавить (можно создать);
>
>
с . создаваемый = ноль;
>
если ( с. удалить )
if (s instanceof Ship)
shipRemaining += (( Ship ) s ). incShips ;
((Корабль) с). incShips = 0 ;
пули Актив = 0 ;
> else if ( s instanceof Bullet )
bulletsActive -= 1 ;
> else if ( s instanceof Asteroid )
оценка += 10 ;
>
ли . удалять ();
> еще
с . рисовать ();
SpaceThing collidingObject = getCollision ( s );
если (colidingObject instanceof SpaceThing)
с . столкнуться (collidingObject);
если ( s . createable != null )
for ( SpaceThing createable : s . createable )
createablesLi . добавить (можно создать);
>
с . создаваемый = ноль;
>
>
>
>
>
// добавляем бонусы
если ( кадр % 100 == 0 && бонусы <= 0 )
intcoinToss = ранд. следующийInt ( 2 );
int type = ( coinToss == 1 ? SHIP : NUKE );
ли . добавить ( новый PowerUp ( холст , тип ));
>
Вставить Создаваемые ();
>
/**
* Это перебирает создаваемые объекты и добавляет их в список объектов.
* если место возрождения корабля заблокировано астероидом, он ждет, пока
* следующая итерация.
*/
public void insertCreateables ()
li = космические вещи. списокИтератор();
createablesLi = createables . списокИтератор();
в то время как ( createablesLi . hasNext ())
Создаваемый объект = createablesLi . следующий ();
если (создаваемый экземпляр корабля)
если (collisionAtPoint (холст. ширина / 2, холст. высота / 2) == ноль)
ли . добавить (можно создать);
createablesLi . удалять ();
>
> еще
ли . добавить (можно создать);
createablesLi . удалять ();
>
>
>
/**
* это используется, чтобы определить, есть ли объект в данной паре x, y.
* @параметр xPoint
* @параметр yPoint
* @возвращаться
*/
публичный SpaceThing CollisionAtPoint ( int xPoint , int yPoint )
Rectangle2D ghostShip = новый Rectangle2D . Поплавок (холст. ширина/2, холст.высота/2, 20, 20);
ListIterator it = spaceThings. списокИтератор();
в то время как ( это . hasNext ())
Объект х = это. следующий ();
если ( x экземпляр астероида )
Объект астероида = (Астероид) x;
если ( объект . сталкивается ( корабль-призрак ))
возвращаемый объект;
>
>
>
вернуть ноль;
>
/**
* Вложенные циклы ListIterator для проверки коллизий между объектом и
* все остальные элементы в списке объектов. Возвращает все, что SpaceThing
* столкновение с объектом.
* объект @param
* @возврат SpaceThing
*/
public SpaceThing getCollision (объект SpaceThing)
ListIterator it = spaceThings. списокИтератор();
в то время как ( это . hasNext ())
Объект х = это. следующий ();
если ( объект instanceof Asteroid )
если ((( астероид ) объект ). сталкивается ( x ))
возврат (SpaceThing) x;
>
>
если ( объект instanceof PowerUp && x instanceof Ship )
если ((( PowerUp ) объект ).сталкивается (( SpaceThing ) x ))
возврат (SpaceThing) x;
>
>
>
вернуть ноль;
>
/**
* Ключевой монитор. Сопоставляет клавиши и клавиши пробела с соответствующим кораблем
* методы или игровые методы в зависимости от gameState.
* Тип @параметра
* @параметр e
*/
управление public void (тип String, KeyEvent e)
// Система.out.println(e);
переключатель (состояние игры)
случай ИГРА:
если ( тип . равно ("keyDown"))
переключатель (например, getKeyCode ())
случай 87:
судно . Установить Акселераторинг (истина);
ломать ;
случай 65:
судно . установитьRotatingLeft (истина);
ломать ;
случай 68:
судно . установить RotatingRight (истина);
ломать ;
случай 32:
судно . огоньПервичный ();
ломать ;
дефолт :
ломать ;
>
> еще если ( тип . равно ("keyUp"))
переключатель (например, getKeyCode ())
случай 87:
судно . Установить Акселераторинг (ложь);
ломать ;
случай 65:
судно . установитьRotatingLeft (ложь);
ломать ;
случай 68:
судно . установить RotatingRight (false);
ломать ;
дефолт :
ломать ;
>
>
ломать ;
>
чехол МЕНЮ:
если ( тип . равно ("keyDown"))
переключатель (например, getKeyCode ())
случай 10:
новая игра ();
>
>
ломать ;
>
случай ИГРА:
если ( тип . равно ("keyDown"))
переключатель (например, getKeyCode ())
случай 10:
Меню инициализации ();
>
>
ломать ;
>
>
>
/**
* Монитор кликов мышью. Нацеливает и стреляет ядерными бомбами. Совет: нажмите на астероид
* и отслеживает астероид.Нажмите пробел, и он просто взорвется в этой точке.
*/
public void mouseControl ()
переключатель (состояние игры)
случай ИГРА:
если ( цель != ноль )
судно . fireNuke (цель);
> еще
судно . огненная ядерная бомба ();
>
>
>
>
>
  • Копировать строки
  • Копировать постоянную ссылку
  • Посмотреть git вину
  • Ссылка в новом выпуске
голоса
Рейтинг статьи
Статья в тему:  Сколько 20-метровых астероидов пролетает мимо Земли
Ссылка на основную публикацию
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x