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

Vidacha();

}

}

}

// Определение стопки на которую нажали мышью

private int getNomKolodaPress(int mX, int mY)

{

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

int nom=-1;

// Если курсор находится в зоне верхних стопок

if ((mY>=15) && (mY<=(15+97)))

{

if ((mX>=30) && (mX<=(30+72))) nom = 0;

if ((mX>=140) && (mX<=(140+72))) nom = 1;

if ((mX>=360) && (mX<=(360+72))) nom = 2;

if ((mX>=470) && (mX<=(470+72))) nom = 3;

if ((mX>=580) && (mX<=(580+72))) nom = 4;

if ((mX>=690) && (mX<=(690+72))) nom = 5;

}

// Если курсор находится в зоне нижних стопок

else if ((mY>=130) && (mY<=(700)))

{

if ((mX>=30) && (mX<=110*7))

{

if (((mX-30)%110)<=72)

{

nom = (mX-30)/110;

nom += 6;

}

}

}

// Возврат результата

return nom;

}

// Выдача карт из верхней левой стопки

private void vidacha()

{

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

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

{

int nom;

// Если это первая выдача

if (pervVidacha==true)

{

// Получаем номер случайной карты в стопке

nom = (int)(Math.random()*stopki[0].size());

}

else // Если повторная выдача

{

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

nom = stopki[0].size()-1;

}

// Получаем карту из стопки с номером 0

karta getKarta = stopki[0].get(nom);

// Делаем отображение картинкой

getKarta.tipRubashka = false;

// Увеличиваем координату на 110 -

// сдвигаем в стопку правее

getKarta.x += 110;

// Добавляем карту в стопку с номером 1

stopki[1].add(getKarta);

// Удаляем карту из стопки с номером 0

stopki[0].remove(nom);

}

else //Если карт уже нет

{

// Вычисляем номер последней карты

// в стопке номером1

int nomPosled = stopki[1].size()-1;

// Переносим карты из стопки с номером 1

// в стопку с номером 0

for (int i=nomPosled;i>=0;i--)

{

karta getKarta = stopki[1].get(i);

// Делаем отображение рубашкой

getKarta.tipRubashka = true;

// Уменьшаем координату на 110 -

// сдвигаем в стопку левее

getKarta.x -= 110;

// Добавляем в стопку с номером 0

stopki[0].add(getKarta);

}

// Очищаем стопку с номером 1

stopki[1].clear();

// Признак первой выдачи меняем на false

pervVidacha=false;

}

}

// Старт игры - Новая игра

public void start()

{

//Очищаем все тринадцать списков

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

{

//Удаление всех элементов списка

stopki[i].clear();

}

//Производим загрузку

load();

//Раздача карт в нижние семь стопок

razdacha();

//Признак конца игры - false

endGame = false;

//Признак первой выдачи - true

pervVidacha = true;

//Номер выбранной карты

nomKarti =-1;

//Номер выбранной стопки

nomStopki =-1;

}

// Раздача карт в нижние семь стопок

private void razdacha()

{

//Начальная координата по X

int x = 30;

//Перебираем все стопки нижние семь стопок

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

{

//Добавление карт в стопку

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

{

// Получаем номер случайной карты из верхней левой стопки

int rnd = (int)(Math.random()*stopki[0].size());

// Получаем эту карту

karta getKarta = stopki[0].get(rnd);

// Если карта не самая верхняя,

// то показываем ее рубашкой

if (j<i) getKarta.tipRubashka = true;

else getKarta.tipRubashka = false; // Если карта верхняя

// Координата по X

getKarta.x = x;

// Каждую следующую карту располагаем ниже на 20 пикселей

getKarta.y = 130+stopki[i].size()*20;

// Добавляем карту в нижнюю стопку

stopki[i].add(getKarta);

// Удаляем карту из верхней левой стопки

stopki[0].remove(rnd);

}

//Увеличиваем координату по X

// (смещаемся правее)

x+=110;

}

}

// Загрузка изображений колоды

private void load()

{

// Цикл делает 52 шага

for (int i=1;i<=52;i++)

{

// В верхнюю левую стопку загружаем карты

stopki[0].add(new karta("c:\\karta\\k"+(i)+".png", rubashka, i));

}

}

// Метод отрисовки всех стопок карт

public void drawKoloda(Graphics gr)

{

//ВЕРХНЯЯ ЛЕВАЯ СТОПКА

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

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

{

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

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

}

//ВТОРАЯ СЛЕВА ВЕРХНЯЯ СТОПКА

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

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

{

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

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

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

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

}

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

{

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

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

}

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

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);

}

}

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

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

{

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

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

{

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

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

{

// Если находим выбранную карту,

// то прерываем цикл

if (stopki[i].get(j).vibrana==true) break;

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

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

}

}

}

//ПЕРЕНОСИМЫЕ МЫШЬЮ КАРТЫ

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

if (nomStopki!=-1)

{

// Перебираем карты от выбранной и до конца стопки

for (int i=nomKarti;i<stopki[nomStopki].size();i++)

{

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

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

}

}

}

}

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