МК "Моя первая игра в Greenfoot"
г.Северобайкальск МАОУ ДО «ДДТ «Эврика»
Педагог дополнительного образования
программирование на языке Java
Барабанщикова Анастасия Евгеньевна
МАСТЕР КЛАСС
«Моя первая игра в Greenfoot
Создание игры в Greenfoot
Greenfoot - это среда разработки, предназначенная для обучения объектно-ориентированному программированию на Java через создание игр и симуляций. В этом мастер-классе мы создадим простую игру, где игрок управляет персонажем, который должен собирать предметы, избегая врагов.
Подготовка к работе
Установка Greenfoot:
Скачайте Greenfoot с официального сайта
Установите программу, следуя инструкциям установщика
Запустите Greenfoot
Создание нового проекта:
Нажмите "Scenario" → "New Java Scenario"
Введите имя проекта (например, "MyFirstGame")
Нажмите "Create"
Создание классов
1. Создание мира (World)
Правой кнопкой мыши на "World" в панели классов → "New subclass..."
Выберите изображение для фона (можно использовать стандартные или загрузить свои)
Назовите класс (например, "GameWorld")
Нажмите "OK"
2. Создание актера (Actor) - игрока
Правой кнопкой на "Actor" → "New subclass..."
Выберите изображение для игрока (например, краба из стандартных)
Назовите класс "Player"
Нажмите "OK"
3. Создание других актеров
Повторите процесс для:
"Food" - еда, которую нужно собирать
"Enemy" - враги, которых нужно избегать
Написание кода
1. Класс GameWorld
import greenfoot.*; // Импорт необходимых классов
public class GameWorld extends World
{
public GameWorld()
{
super(600, 400, 1); // Создание мира размером 600x400 пикселей
prepare(); // Вызов метода подготовки мира
}
private void prepare()
{
Player player = new Player(); // Созданиеигрока
addObject(player, 300, 200); // Добавление игрока в центр экрана
// Добавление 10 единиц еды в случайных местах
For(int i = 0; i < 10; i++) {
addObject(new Food(), Greenfoot.getRandomNumber(600), Greenfoot.getRandomNumber(400));
}
// Добавление 3 врагов в случайных местах
For (int i = 0; i < 3; i++) {
addObject(new Enemy(), Greenfoot.getRandomNumber(600), Greenfoot.getRandomNumber(400));
}
}
}
2. Класс Player
importgreenfoot.*; // Импорт необходимых классов
public class Player extends Actor
{
private int score = 0; // Счетигрока
public void act()
{
checkKeys(); // Проверка нажатия клавиш
checkCollision(); // Проверка столкновений
}
private void checkKeys()
{
// Движение с помощью стрелок
if(Greenfoot.isKeyDown("left")) {
setLocation(getX()-3, getY());
}
if(Greenfoot.isKeyDown("right")) {
setLocation(getX()+3, getY());
}
if(Greenfoot.isKeyDown("up")) {
setLocation(getX(), getY()-3);
}
if(Greenfoot.isKeyDown("down")) {
setLocation(getX(), getY()+3);
}
}
private void checkCollision()
{
//Проверкастолкновенияседой
if(isTouching(Food.class)) {
removeTouching(Food.class); // Удалениееды
score++; // Увеличениесчета
getWorld().showText("Score: " + score, 50, 25); // Отображениесчета
// Добавление новой еды
if(score % 5 == 0) {
getWorld().addObject(new Food(),
Greenfoot.getRandomNumber(getWorld().getWidth()),
Greenfoot.getRandomNumber(getWorld().getHeight()));
}
}
//Проверкастолкновениясврагом
if(isTouching(Enemy.class)) {
Greenfoot.playSound("game-over.wav"); // Звукпроигрыша
getWorld().showText("Game Over! Final Score: " + score, 300, 200);
Greenfoot.stop(); // Остановка игры
}
}
}
3. Класс Food
import greenfoot.*; // Импорт необходимых классов
public class Food extends Actor
{
public void act()
{
// Еда может вращаться случайным образом
if(Greenfoot.getRandomNumber(100) < 2) {
turn(Greenfoot.getRandomNumber(90) - 45);
}
move(1); // Медленноедвижение
// Если еда вышла за границы мира, появляется с другой стороны
if(isAtEdge()) {
turn(180);
}
}
}
4. Класс Enemy
import greenfoot.*; // Импорт необходимых классов
public class Enemy extends Actor
{
public void act()
{
followPlayer(); // Преледованиеигрока
if(isAtEdge()) {
turn(180); // Разворот при достижении края
}
}
private void followPlayer()
{
//Поискигрокавмире
Player player = (Player)getWorld().getObjects(Player.class).get(0);
//Поворотвсторонуигрока
turnTowards(player.getX(), player.getY());
// Движение к игроку
move(2);
}
}
Добавление звуков
Загрузите звуковые файлы (например, game-over.wav) в проект
Перетащите их в панель "Sounds" в Greenfoot
Используйте Greenfoot.playSound("имя_файла.wav") в коде
Тестирование и запуск
Нажмите кнопку "Compile" для проверки кода на ошибки
Нажмите "Run" для запуска игры
Управляйте персонажем с помощью стрелок
Собирайте еду и избегайте врагов
Советы по улучшению игры
Добавление уровней:
if(score == 10) {
Greenfoot.setWorld(new Level2());
}
Жизни игрока:
private int lives = 3;
//Вметоде checkCollision класса Player
if(isTouching(Enemy.class)) {
lives--;
if(lives <= 0) {
// Конец игры
}
}
Разная еда с разными очками:
Создайте подклассы Food (например, Apple, Banana) с разными значениями scoreПауза в игре:
if(Greenfoot.isKeyDown("space")) {
Greenfoot.delay(100); // Пауза на 100 кадров
}
Таймер:
private int time = 1000;
public void act() {
time--;
getWorld().showText("Time: " + time, 550, 25);
if(time <= 0) {
// Конец игры по времени
}
}
Публикация игры
Нажмите "Scenario" → "Share..."
Выберите платформу для публикации (Greenfoot Gallery или экспорт)
Следуйте инструкциям для завершения публикации
Теперь у вас есть рабочая игра в Greenfoot! Вы можете продолжать развивать её, добавляя новые функции и улучшая геймплей.



Чтобы оставлять комментарии, вам необходимо авторизоваться на сайте. Если у вас еще нет учетной записи на нашем сайте, предлагаем зарегистрироваться. Это займет не более 5 минут.