Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Java Модуль 4.docx
Скачиваний:
13
Добавлен:
01.07.2025
Размер:
20.72 Mб
Скачать

Разделение задания для трех уровней сложности

Первый уровень сложности содержит перечень минимальных элементов, необходимых для написания приложения:

  • Создание окна необходимых размеров

  • Указание заголовка окна

  • Создание общего фона

  • Размещение двух кнопок Новая игра, Выход

  • При нажатии на кнопку Выход окно должно полностью закрываться

  • Рисование тринадцати прямоугольников белого цвета для стопок карт (см. рис. 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()нумерация элементов в списке восстанавливается автоматически. Имеется в виду, что номера элементов всегда идут по порядку, начиная с нуля и увеличиваясь на единицу.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]