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

Итог занятия

На этом занятии мы:

  • закончили реализацию игры"Пасьянс-Косынка" для первого уровня сложности;

  • полностью закончили еще два класса проекта;

  • реализовали работу со стопками карт.

Занятие 8. "Разработка игры Пасьянс-Косынка. Второй уровень сложности"

На этом занятии мы выполним реализацию второго уровня сложности игры Пасьянс-Косынка: - создадим метод для полной раздачи карт в начале игры; - выполним перерисовку всех стопок карт;

Приступим к реализации второго уровня сложности игры "Пасьянс-Косынка". В дополнение к перовому уровню сложности необходимо выполнить раздачу карт в нижние семь стопок (см. рис. 1). При каждой новой игре карты должны раздаваться новым случайным образом. Самая верхняя карта в каждой стопке должна быть открытой. Остальные карты должны находиться рубашкой вверх.

Рис. 1

В самой левой нижней стопке должна быть всего одна карта. В стопке правее две карты и так далее. В самой правой нижней стопке соответственно будет семь карт. Во всех семи нижних стопках всего будет 28карт. Это значит, что в левой верхней стопке останется всего 24карты. Еще раз вспомним нумерацию стопок в массиве (см. рис.2).

Рис. 2

Перерисовка всех стопок карт

Сейчас метод drawKoloda()выполняет перерисовку только двух стопок карт с номерами 0 и1. Выполним доработку этого метода, чтобы он выполнял перерисовку всех стопок карт на игровом поле. Начнем с рисования четырех домашних стопок с номерами 2, 3, 4, 5. Принцип их рисования ничем не отличается от рисования стопки с номером0. В метод drawKoloda() добавим программный код для рисования домашних стопок:

//ЧЕТЫРЕ ДОМАШНИЕ СТОПКИ

for (int i=2;i<=5;i++)

{

//Если в стопке более одной карты

if (stopki[i].size()>1)

{

// Получаем и рисуем вторую сверху карту

Stopki[I].Get(stopki[I].Size()-2).Draw(gr);

// Получаем и рисуем самую верхнюю карту

stopki[i].get(stopki[i].size()-1).draw(gr);

}

else if (stopki[i].size()==1) // если в стопке одна карта

{

// Получаем и рисуем самую верхнюю карту

stopki[i].get(stopki[i].size()-1).draw(gr);

}

}

Четыре домашние стопки мы будем перерисовывать с помощью цикла,который перебирает сразу четыре стопки.

Ситуация с рисованием нижних семи стопок несколько отличается.Все карты каждой нижней стопки должны рисоваться со смещением сверху вниз.Смещение должно быть таким, чтобы в открытом состоянии карт стопки -были видны все карты (см. рис. 3).

Рис. 3

Метод рисования только отображает карты с их текущими координатами. Поэтому смещение карт сверху вниз необходимо создавать при раздаче карт из главной колоды.

В метод drawKoloda() добавим программный код для рисования нижних семи стопок:

// НИЖНИЕ СЕМЬ СТОПОК

for (int i=6;i<13;i++)

{

//Если в стопке есть карты

if (stopki[i].size()>0)

{

// Перебираем все карты из стопки

for (int j=0;j<stopki[i].size();j++)

{

// Рисуем карту

stopki[i].get(j).draw(gr);

}

}

}

В верхнем цикле перебираем все нижние семь стопок. Если в стопке имеются карты, то перебираем их все от начала до конца во внутреннем цикле и рисуем каждую карту.

Теперь метод drawKoloda() выполняет рисование всех тринадцати стопок.

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