- •Занятие 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();
- •Заключение
- •Итог занятия
Работа со списком в Java
При создании таких игр как "Змейка" или "Морской бой" было удобно использовать двумерный массив для хранения данных игрового поля. Но использование только массивов будет не очень удобным при создании игры "Пасьянс-Косынка". В играх "Змейка", "Морской бой" размеры игровых полей были фиксированного размера и не изменялись во время игры. Массив удобен для хранения, изменения и использования фиксированного набора значений. В игре "Пасьянс-Косынка" нам понадобится хранить наборы значений,количество которых можно увеличивать или уменьшать. В этом нам поможет список значений,который в языке Javaможно реализовать с помощью классаArrayList:
//Подключаем класс ArrayList
import java.util.ArrayList;
Рассмотрим примеры работы со списком на примере списка целых чисел.
Прежде всего, создадим пустой список значений целых чисел:
// Подключаем классArrayList
Import java.Util.ArrayList;
public class kosinka {
public static void main(String[] args) {
//Создаем пустой список значений целых чисел
ArrayList<Integer> lst = new ArrayList<Integer>();
}
}
Внутри угловых скобок указывается тип элементов списка <Integer>,Integer –это целое число. Значения элементов списка могут быть любого типа. Создание, например,списка кнопок JButton выглядит так:
ArrayList<JButton> lst = new ArrayList<JButton>();
Но сейчас мы будем рассматривать список целых чисел. Работа со списками разных типов значений происходит по одинаковой схеме.
Изначально список пустой:
ArrayList<Integer> lst = new ArrayList<Integer>();
Добавим в него три новых элемента с помощью метода add():
// Создаем пустой список значений целых чисел
ArrayList<Integer> lst = new ArrayList<Integer>();
//Добавим первый элемент в список
lst.add(100);
//Добавим второй элемент в список
lst.add(200);
//Добавим третий элемент в список
lst.add(300);
Добавление элементов происходит в конец списка (см. рис. 10).
Рис. 10
Теперь рассмотрим основные приемы работы со списком:
// Получаем количество элементов в списке
// В данном случае – три (см. рис. 10)
int kol = lst.size();
// Получение значения элемента по номеру
// В данном случае – 100 (см. рис. 10)
int val = lst.get(0);
// Удаление элемента из списка по номеру
// В данном случае – самый верхний (см. рис. 10)
lst.remove(0);
// Удаление всех элементов из списка
lst.clear();
С помощью метода size()можно определить количество элементов в списке.
Метод get()позволяет получить значение любого элемента по номеру, нумерация начинается с нуля. Метод remove()удаляет элемент из списка по его номеру, нумерация начинается с нуля.После удаления элемента список автоматически сжимается. Метод clear() позволяет удалить сразу все элементы из списка. Также как и в массиве, каждый элемент списка имеет свой номер. Самый первый элемент списка имеет номер нуль 0, а самый последний элемент имеет номер size()-1. Этих методов работы со списком будет достаточно при создании игры "Пасьянс-Косынка". На игровом поле будут находиться карты,разложенные в несколько стопок.Пользователь будет переносить карты из одной стопки в другую. Карты будут добавляться в конец стопки карт. Поэтому всех перечисленных выше методов будет достаточно.
