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

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

В отличие от массива, в список значений можно добавлять новые элементы и удалять имеющиеся элементы. При этом размер списка количество элементов в списке будет изменяться. Каждый элемент списка имеет номер, как и элемент массива. Нумерация начинается с нуля. Вспомним основные операции над списком, которые понадобятся нам:

  1. Определение размера списка: size()

  1. Добавление нового элемента в список:add()

  1. Удаление элемента из списка: remove()

  1. Получение элемента из списка: get()

  1. Удаление всех элементов из списка: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 -необходимо подключить:

// Подключение класса для списка значений

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