Конспектзанятия
Созданиеигры SnakeGame.
Для начала зайдемв класс MyWorld и изменим цвет фона. Получим доступ к фону мира, установим и сделаемзаливку фона черным цветом.
GreenfootImage image =getBackground();
image.setColor(Color.BLACK);
Скомпилируем.
У нас должно быть2 игрока (2 змеи), они будут двигаться по экрану и съедать яблоки. Если один изигроков соберет определенное количество яблок, то выиграет игру. При этом онине должны врезаться в свой собственный хвост или в хвост партнера.
Нам нужно создатькласс игрока. Мы не будем добавлять изображение, создадим его сами. Для этого,нам нужно создать конструктор.
Игроки будут двухразных цветов.
Дадим наборпараметров игроку в конструкторе.
public Player (int r, intg, int b)
Мы знаем, длятого, чтобы был красный (255, 0, 0), зеленый (0,255,0), голубой (0, 0, 255).
Итак, мы хотимпоместить игроков в мир, для этого нам нужно добавить их в конструктор мира,так как они должны быть в начале игры. Но мы не хотим, чтобы они размещалисьлокально, только в конструкторе, поэтому создадим глобальные переменные.
Игроки у нас будутголубого и зеленого цветов.
Player bluePLayer = newPlayer (0,0,255);
Player greenPlayer = newPlayer (0,255,0);
Затем, поместимигроков в мир.
addObject(bluePlayer,450,300);
addObject(greenPlayer,150,300);
Скомпилируем.
Нам нужноустановить новый цвет, чтобы параметры конструктора были видны, и сделатьзаливку.
Затем, направим ихвверх.
setRotation(270);
И пропишем методдвижения. Создадим переменную скорости.
int speed= 3;
public void act()
{
move(speed);
}
Скомпилируем изапустим.
Теперь, сделаем ихуправляемыми, пропишем метод проверки клавиш (направо, налево, вверх, вниз).
Скомпилируеми запустим.
Создадим хвост.Создадим новый подкласс актера Tail.
Добавим этот хвостк игрокам, для этого создадим счетчик.
int counter = 0;
ВподклассеPlayer.
Скомпилируеми запустим.
Теперь нашазадача, чтобы хвост был не бесконечный. Работаем в подклассе Tail.Создадим переменную, счетчик.
Если счетчикбольше 60, то получаем доступ к миру и удаляем хвост из него.
Скомпилируеми запустим.
Следующая задача,сделать разное управление змеям.
public Player(intplayer,int r, int g, int b) – создадимномеригрока.
int r,g,b,player
У нас их два,поэтому присвоим им номера 1 и 2.
ВподклассеMyWorld.
Player bluePlayer = newPlayer (1,0,0,255);
Player greenPlayer= new Player(2,0,255,0);
В подклассе Playerпропишем разное управление 1 и 2 игроку.
Проверку клавишвынесем в отдельный метод checkKeys().
Скомпилируеми запустим.
Создадим счетчикиочков. Подкласс Counter.
В классе MyWorld,создадим глобальные переменные этих счетчиков для каждого игрока.
Counter blueCounter = newCounter();
Counter greenCounter =new Counter();
Поместим счетчик вмир.
Скомпилируем.
Нам нужноустановить изображение счетчика.
Заходим в подклассCounter.
Создадим конструктор. GreenfootImage(java.lang.String string, int size, Color foreground, Color background)(строка, размер шрифта,цвет переднего фона, цвет заднего фона).
Скомпилируем.
Создадимпеременную оценки и добавим ее к строке.
Создадим новыйметод подсчета очков.
Очки будутначисляться за съеденную еду.
Создаем новыйподкласс Food.
В нем будет точнотакой же код, как и у хвоста, копируем конструктор хвоста и вставляем в еду.
Теперь нам нужнодобавлять нашу еду случайным образом по всему экрану. Перейдем в подкласс MyWorld.
Создадим метод act().Добавим еду в мир, она будет красного цвета. Будет случайная ширина и высотамира.
Увеличим размерымира. Соответственно и поменять значения расположений объектов.
Подкласс Player.
Создадим новыйметод eatFood().Указываем первого игрока.
Получаем доступмира в локальной переменной типа MyWorld.
Продублируем этодля второго игрока.
Скомпилируеми запустим, счетчик считает.
Затем, нам нужно,чтобы еда исчезала после того, как змеи ее съедает.
Подкласс Food.
Скомпилируем.
