- •Занятие 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();
- •Заключение
- •Итог занятия
Разделение задания для трех уровней сложности
Первый уровень сложности содержит перечень минимальных элементов, необходимых для написания приложения:
Создание окна необходимых размеров
Указание заголовка окна
Создание общего фона
Размещение двух кнопок Новая игра, Выход
При нажатии на кнопку Выход окно должно полностью закрываться
Рисование тринадцати прямоугольников белого цвета для стопок карт (см. рис. 17)
В игру должна загружаться вся колода карт и размещаться в верхней левой стопке рубашкой вверх (см. рис.18)
Рис. 18
При нажатии на верхнюю левую стопку(см. рис. 18)левой клавишей мыши из нее должна извлекаться верхняя карта и открываться во второй стопке слева (см. рис.19)
Рис. 19
Когда карты в верхней левой колоде закончатся –при нажатии левой клавишей мыши внутрь белого прямоугольника (см.рис. 20) –все карты должны перебрасываться обратно в исходную колоду
Рис. 20
При повторной выдаче карт из верхней левой колоды –их порядок должен соответствовать порядку в первой выдаче
При нажатии на кнопку Новая игра,карты в верхней левой колоде должны располагаться уже другим случайным образом. Колода должна быть хорошо перемешана
На первом уровне сложности все 52карты должны располагаться в верхней левой колоде
Законченный вариант необходимо представить в виде JAR-архива с упакованными внутрь файлами изображений
Внимание!!!Подробности по каждому пункту первого уровня сложности необходимо смотреть в основном техническом задании.
Второй уровень сложности является продолжением первого уровня сложности. В дополнение к первому уровню сложности:
Должна осуществляться полная раздача карт (см. рис.21)
Рис. 21
При нажатии на кнопку Новая игра,карты во все стопки должны раздаваться новым случайным образом
В отличие от первого уровня сложности, в верхней левой колоде должно оставаться 24 карты. Карты можно получать из колоды нажатием левой клавиши мыши, как и для первого уровня сложности
Перемещения карт захватом мыши на втором уровне сложности – нет!
Законченный вариант необходимо представить в виде JAR-архива с упакованными внутрь файлами изображений
Внимание!!!Подробности по каждому пункту второго уровня сложности необходимо смотреть в основном техническом задании.
Третий уровень сложности:
Является продолжением второго уровня сложности
Выполнение задания в полном объеме
Алгоритм перемешивания карт в колоде
В отличие от игры "Морской бой", в игре"Пасьянс-Косынка"компьютер не оказывает сопротивления игроку, а только предоставляет удобства при раскладывании пасьянса и контролирует игрока при нарушении правил игры. В игре "Пасьянс-Косынка" не будет сложных алгоритмов, но будет много сложностей, связанных с контролем действий пользователя.
На игровом поле представлены тринадцать стопок карт.Количество карт в каждой стопке может изменяться в процессе игры, поэтому карты каждой стопки удобно хранить в списке значений. Так как стопок у нас тринадцать,то понадобится массив –каждый элемент,которого будет списком значений.
Давайте разберемся с алгоритмом перемешивания карт. При каждой раздаче –во все стопки должны попадать карты случайным образом. На самом деле все реализуется довольно просто!
Сначала загружаем все 52карты в один список значений, который отвечает за верхнюю левую стопку карт. Затем получаем случайный элемент из этого списка. Полученный элемент добавляем во второй список. Удаляем элемент из первого списка. Так продолжаем нужное количество раз. Если название первого списка lst1, а название второго списка lst2, то программный код будет выглядеть так:
//Получаем количество элементов в первом списке
int kol = lst1.size();
// Получаем случайный номер элемента в списке
int nom = (int)(Math.random()*kol);
// Помещаем случайно выбранный элемент во второй список,
// получая его из первого
lst2.add(lst1.get(nom));
// Удаляем элемент из первого списка
lst1.remove(nom);
При таком подходе размер первого списка будет с каждым разом уменьшаться на единицу, а размер второго увеличиваться на единицу. Процесс напоминает вынимание случайной карты из колоды и помещение ее во вторую колоду.Карты второй колоды при этом будут расположены случайным образом.Рассмотренный программный код осуществляет перенос одного случайного значения. Если запустить такой процесс в цикле, то можно заполнить новый список любым количеством случайных карт. Методsize() возвращает количество элементов в списке, и при изменении количества всегда будет возвращать текущее количество. Методremove() удаляет элемент из списка, уменьшая количество элементов на единицу. После выполнения метода remove()нумерация элементов в списке восстанавливается автоматически. Имеется в виду, что номера элементов всегда идут по порядку, начиная с нуля и увеличиваясь на единицу.
