X-PDF

Конспект занятия Eclipse. Игровой цикл

Поделиться статьей

Конспектзанятия №3

Игровойцикл

Каждой игре нуженигровой цикл, иначе не будет никаких изменений, будет просто неподвижноеизображение.

Задача:добавить счетчик кадров в секунду.

Уберем метод repaint()– перекраска из всех вызовов, и пропишем его в методе рисования. Этот блок кодаявляется циклом. Изменений в проекте не будет.

Работаем в классе GamePanel.Добавим переменную private int frames = 0;

(frames – кадры).

Начнем ее считатьв методе рисования. frames++;

Добавим какой –нибудь тип проверки, который будет проверять сколько кадров 2 секунды.

Пропишемусловиеif(System.currentTimeMillis()-lastCheck >= 1000){

 

(System.currentTimeMillis())—  возвращает время в миллисекундах

1сек = 1000мс

Затем,какой время было при проверке lastCheck.

Послепроверяем >= 1000.

Условие:если с момента последней проверки кадра прошла одна секунда, мы выполняем новуюпроверку кадров. Сохраните новую проверку кадров в секунду как последнююпроверку в секунду и повторите.

Добавим последнююпроверку как глобальную переменную.

privatelong lastCheck = 0;

Long– это самая большая с точки зрения размера переменная (8 байтов памяти). Онаможет принимать значения от -9223372036854775808 до 9223372036854775807.

В условии пропишем,что последняя проверка равна текущему времени.

lastCheck= System.currentTimeMillis();

Выведем подсчеткадров в консоль.

System.out.println(FPS:+ frames);

Запустим.В итоге у нас примерно около 1000 кадров в секунду.

Следующее,что мы сделаем: добавим визуальныеэффекты для нашего прямоугольника, чтобы он перемещался без нашего участия.Продолжаем работать в классе GamePanel.

Добавим метод вметоде перерисовке updateRectangle() — обновить прямоугольник. Создадимэтот метод.

Вметоде пропишем xDelta,yDelta.

Прямоугольник унас исчез.

Добавим переменныеxDir(направлениепо x),xDir(направлениепо y).

privateint xDir = 1, yDir = 1;

В методеобновления прямоугольника добавим условие:

if(xDelta> 400 || xDelta < 0)

                   {

                            xDir*= -1;

                   }

Если xDelta больше ширины (высоты) окна или xDelta меньше 0, то xDir меняетнаправление на обратное (1*-1 = -1, -1*-1 = 1).

Сделаем все то жесамое для yDelta.                                        x*= y

Представленная информация была полезной?
ДА
58.67%
НЕТ
41.33%
Проголосовало: 963

                                                   x = x*y

Запустим.Прямоугольник двигается по диагонали.

Замедлим движение прямоугольника.Поменяем тип int  на тип float (числа с плавающей точкой).

private float xDelta =100, yDelta = 100;

         private floatxDir = 1, yDir = 1;

float: хранитчисло сплавающейточкой от-3.4*1038 до3.4*1038 и занимает4 байта.

В методе рисованияпрямоугольника будет ошибка, так как он принимает только тип int,поэтому сделаем преобразование.

g.fillRect((int)xDelta,(int)yDelta, 200, 50);

Изменим значения xDir,yDir.

private float xDir =0.01f, yDir = 0.01f;

Запустим.

Добавим большецветов.

g.setColor(newColor(150,20,90)); —  новыйкомпозитный цвет.

Импорт пакета сцветом.

Запустими посмотрим какой цвет получим.

Теперь,мы сделаем так, чтобы прямоугольник менял цвет при смене направления.

Сохраним наш новыйцвет в глобальной переменной.

private Color color = newColor(150,20,90);

Объявимэту переменную.

Сделаем цветслучайным, для этого создаем новый метод.

color= getRndColor(); — Создать метод

Создадим случайныйобъект.

private Random random; 

random= new Random();

Импорт пакета с Random.

И с помощью этогослучайного объекта мы можем получать случайные числа.

random.nextInt(255);—  диапазон цвета 0-255.

Нам нужно сделатьто же самое для yDelta.

Запустим.

 


Поделиться статьей
Автор статьи
Анастасия
Анастасия
Задать вопрос
Эксперт
Представленная информация была полезной?
ДА
58.67%
НЕТ
41.33%
Проголосовало: 963

или напишите нам прямо сейчас:

Написать в WhatsApp Написать в Telegram

ОБРАЗЦЫ ВОПРОСОВ ДЛЯ ТУРНИРА ЧГК

Поделиться статьей

Поделиться статьей(Выдержка из Чемпионата Днепропетровской области по «Что? Где? Когда?» среди юношей (09.11.2008) Редакторы: Оксана Балазанова, Александр Чижов) [Указания ведущим:


Поделиться статьей

ЛИТЕЙНЫЕ ДЕФЕКТЫ

Поделиться статьей

Поделиться статьейЛитейные дефекты — понятие относительное. Строго говоря, де­фект отливки следует рассматривать лишь как отступление от заданных требований. Например, одни


Поделиться статьей

Введение. Псковская Судная грамота – крупнейший памятник феодального права эпохи феодальной раздробленности на Руси

Поделиться статьей

Поделиться статьей1. Псковская Судная грамота – крупнейший памятник феодального права эпохи феодальной раздробленности на Руси. Специфика периода феодальной раздробленности –


Поделиться статьей

Нравственные проблемы современной биологии

Поделиться статьей

Поделиться статьейЭтические проблемы современной науки являются чрезвычайно актуальными и значимыми. В связи с экспоненциальным ростом той силы, которая попадает в


Поделиться статьей

Семейство Первоцветные — Primulaceae

Поделиться статьей

Поделиться статьейВключает 30 родов, около 1000 видов. Распространение: горные и умеренные области Северного полушария . многие виды произрастают в горах


Поделиться статьей

Вопрос 1. Понятие цены, функции и виды. Порядок ценообразования

Поделиться статьей

Поделиться статьейЦенообразование является важнейшим рычагом экономического управления. Цена как экономическая категория отражает общественно необходимые затраты на производство и реализацию туристского


Поделиться статьей

или напишите нам прямо сейчас:

Написать в WhatsApp Написать в Telegram
Заявка
на расчет