- •Занятие 1. "Постановка задания для разработки игры Змейка. Работа с двумерным массивом"
- •Правила самостоятельной разработки игр данного курса
- •Работа с двумерным массивом в Java
- •Применение двумерного массива при создании игр
- •Постановка задания по созданию игры Змейка
- •Разделение задания для трех уровней сложности
- •План разработки проекта
- •Алгоритм для реализации игры Змейка
- •Перемещать голову змейки в нужном направлении.
- •Удалять хвост змейки. Удаление хвоста равносильно записи нулевого значения в элемент массива, где находилось число, отвечающее за хвост змейки.
- •Итог занятия
- •Занятие 2. "Постановка задания для разработки игры Морской бой"
- •Постановка задания по созданию игры Морской бой
- •Разделение задания для трех уровней сложности
- •Рекомендации для реализации игровых полей игры Морской бой
- •Алгоритм для реализации игры "Морской бой"
- •Генерация кораблей на игровом поле
- •Итог занятия
- •Занятие 3. "Постановка задания для разработки игры Пасьянс-Косынка"
- •Правила игры Пасьянс-Косынка
- •Упаковка файлов изображений внутрьJar-архива
- •Работа со списком в Java
- •Import java.Util.ArrayList;
- •Постановка задания по созданию игры Пасьянс-Косынка
- •Разделение задания для трех уровней сложности
- •Алгоритм перемешивания карт в колоде
- •Создание массива списков значений
- •Итог занятия
- •Заключение
- •Занятие 1. "Разработка игры Змейка. Первый и второй уровень сложности"
- •Рекомендации для изучения программного кода игр
- •Изучаемый программный код необходимо самостоятельно вводить с клавиатуры в среде разработки, глядя на образец в печатном издании.
- •Каждую строчку, каждый фрагмент программного кода стараться максимально разобрать и понять смысл. Не следует бездумно переписывать программный код и запускать!
- •Моменты, которые вызывают особые сложности в понимании, стараться нарисовать на бумаге или пройти пошагово.Например, цикл, который использует формулу с изменяющимися переменными в цикле.
- •Старайтесь больше экспериментировать с записанным программным кодом. Изменяйте значение кого-нибудь параметра и запускайте программу. Смотрите на изменения.
- •После разбора фрагмента программного кода –закрывайте книгу и начинайте пытаться записать свой программный код,который выполняет тоже самое, при этом, не заглядывая в книгу - с чистого листа.
- •Реализация первого уровня сложности игры Змейка Подготовка изображений для игры Змейка
- •Создание проекта и файлов классов игры Змейка
- •Реализация второго уровня сложности игры Змейка(начало)
- •Итог занятия
- •Занятие 2. "Разработка игры Змейка. Второй и третий уровень сложности"
- •Реализация второго уровня сложности игры Змейка(завершение)
- •Реализация третьего уровня сложности игры Змейка
- •Механизм перемещения змейки
- •Итог занятия
- •Занятие 3. "Разработка игры Морской бой. Первый уровень сложности"
- •Создание проекта и файлов классов игры Морской бой
- •Итог занятия
- •Занятие 4. "Разработка игры Морской бой. Второй уровень сложности"
- •Реализация второго уровня сложности игры Морской бой
- •Обозначения состояния ячейки игрового поля
- •Отрисовка игрового поля на основании двумерного массива
- •Ситуация выхода за пределы массива
- •Генерация однопалубных кораблей
- •Генерация четырехпалубного корабля
- •Итог занятия
- •Занятие 5. "Разработка игры Морской бой. Третий уровень сложности"
- •Реализация третьего уровня сложности игры Морской бой
- •Выполнение ходов игроком и компьютером
- •Стратегия ходов компьютера
- •Итог занятия
- •Занятие 6. "Разработка игры Пасьянс-Косынка. Начало первого уровня сложности"
- •Подготовка изображений для игры
- •Создание проекта и файлов классов игры Пасьянса-Косынка
- •Реализация класса kosinka
- •Реализация класса okno
- •Import javax.Swing.*;
- •Import java.Awt.*;
- •Реализация класса pole
- •Реализация класса karta
- •Import javax.Imageio.*;
- •Import java.Awt.*;
- •Import java.Io.*;
- •Итог занятия
- •Занятие 7. "Разработка игры Пасьянс-Косынка. Завершение первого уровня сложности"
- •Реализация класса stopka
- •Import java.Util.ArrayList;
- •Начало реализации класса game
- •Реализация класса pole
- •Завершение реализации класса game для первого уровня сложности
- •Vidacha();
- •Итог занятия
- •Занятие 8. "Разработка игры Пасьянс-Косынка. Второй уровень сложности"
- •Перерисовка всех стопок карт
- •Stopki[I].Get(stopki[I].Size()-2).Draw(gr);
- •Раздача карт в нижние семь стопок
- •Начало реализации третьего уровня сложности
- •Итог занятия
- •Занятие 9. "Разработка игры Пасьянс-Косынка. Третий уровень сложности"
- •// Получаем номер верхней карты
- •Тестирование переноса
- •Vidacha();
- •Заключение
- •Итог занятия
Import javax.Imageio.*;
// Для работы с графикой
Import java.Awt.*;
// Для работы с файлами
Import java.Io.*;
// Класс для карты из колоды
public class karta
{
// Координаты карты на игровом поле
public int x,y;
//Изображение карты
public Image img;
// Вид расположения рубашкой или картинкой
public boolean tipRubashka;
//Изображение рубашки карты
public Image rubashka;
// Масть карты
public int mast;
// Тип карты(король, туз и т.д.)
public int tipKarta;
// Признак захвата карты мышью
public boolean vibrana;
// Признак красной или черной масти
public boolean red_karta;
//Конструктор класса
public karta(String path, Image rubashka, int nom)
{
//Признак захвата мышью - НЕ захвачена
vibrana = false;
//Изображение рубашки карты
this.rubashka = rubashka;
//Загрузка изображения карты из файла
try
{
img = ImageIO.read(new File(path));
}
catch (Exception ex) {}
//Начальная координата по X
x = 30;
//Начальная координата по Y
y = 15;
//Изначально карта расположена рубашкой
tipRubashka = true;
//Вычисляем масть карты
mast = (nom-1)%4;
//Вычисляем тип карты (король, туз и т.д.)
tipKarta = (nom-1)/4;
//Определяем цвет масти (красный или черный)
red_karta = true;
if (mast<=1) red_karta = false;
}
// Метод отображения (рисования карты)
public void draw(Graphics gr)
{
//Если карта расположена рубашкой
if (tipRubashka==false)
{
// Выводим изображение рубашки
gr.drawImage(img, x , y, 72, 97, null);
}
else // Иначе - если НЕ рубашкой
{
// Выводим изображение карты
gr.drawImage(rubashka, x , y, 72, 97, null);
}
//Если карта захвачена мышью
if (vibrana==true)
{
// Рисуем вокруг карты прямоугольник желтого цвета
gr.setColor(Color.YELLOW);
gr.drawRect(x, y, 72, 97);
}
}
}
Итог занятия
На этом занятии мы:
рассмотрели схему классов для создания игры "Пасьянс-Косынка";
создали новый проект и добавили необходимые классы;
подготовили необходимые файлы cизображениями;
полностью реализовали первые три класса проекта.
Занятие 7. "Разработка игры Пасьянс-Косынка. Завершение первого уровня сложности"
На этом занятии мы закончим реализацию первого уровня сложности игры Пасьянс-Косынка: - выполним доработку оставшихся трех классов проекта; - воспользуемся списком для хранения стопки карт;
Игра "Пасьянс-Косынка"является третьей игрой в курсе самостоятельной разработки на Java. Поэтому задачи первого уровня сложности для этой игры несколько труднее и объемнее.
Реализация класса stopka
Перейдем на закладку к программному коду класса stopka (см. рис. 1).
Рис. 1
На игровом поле всего будет тринадцать стопок карт (см. рис. 2). Шесть стопок будет сверху и семь стопок будет снизу. По условию задания, место расположения каждой стопки должно быть обведено белым контуром(см. рис. 2)В некоторые моменты игры стопка может не содержать карт. Количество карт в каждой стопке будет меняться в процессе игры.Пользователь будет переносить карты или группы карт из одной стопки в другую. Карты или группы карт будут добавляться в стопку всегда сверху.
Массив для хранения карт одной стопки будет не самым удобным вариантом. Намного удобнее использоватьсписок значенийдля хранения карт одной стопки. При постановке задания к игре "Пасьянс-Косынка"мы говорили о таком понятии как список значений. Список состоит из элементов. В нашем случае элементами списка будут объекты на основании класса karta, который уже полностью создан.
Рис. 2
В отличие от массива, в список значений можно добавлять новые элементы и удалять имеющиеся элементы. При этом размер списка –количество элементов в списке будет изменяться. Каждый элемент списка имеет номер, как и элемент массива. Нумерация начинается с нуля. Вспомним основные операции над списком, которые понадобятся нам:
Определение размера списка: size()
Добавление нового элемента в список:add()
Удаление элемента из списка: remove()
Получение элемента из списка: get()
Удаление всех элементов из списка:clear()
При постановке задания к игре "Пасьянс-Косынка" программный код класса stopka уже был представлен в своем конечном варианте как вспомогательный инструмент при самостоятельном создании игры. Добавим этот код в файл stopka.java:
// Подключение класса для списка значений
import java.util.ArrayList;
// Класс стопки карт игрового поля
public class stopka
{
// Список значений
private ArrayList<karta> lst;
// Конструктор класса
public stopka()
{
//Создание пустого списка значений
lst = new ArrayList<karta>();
}
// Получение карты из списка по номеру
public karta get(int nom)
{
return lst.get(nom);
}
// Добавление новой карты в список
public void add(karta elem)
{
lst.add(elem);
}
// Удаление карты из списка по номеру
public void remove(int nom)
{
lst.remove(nom);
}
// Получение количества элементов в списке
public int size()
{
return lst.size();
}
// Удаление всех элементов списке
public void clear()
{
lst.clear();
}
}
Чтобы воспользоваться списком значений ArrayList -необходимо подключить:
// Подключение класса для списка значений
