Класс Game

Теперь создадим класс, описывающий игру. Этот класс будет содержать все данные по игре и методы для выполнения игровых действий.

Щелкните правой клавишей мыши на названии пакета cardgame в окне проектов (слева вверху).В появившемся контекстном меню выберите
Создать → Класс Java... Укажите имя класса Game. Добавьте в него следующее содержимое:

// «главная» колода. В ней будут сформированы все 36 карт,

//из нее будут раздаваться карты игрокам

//в конце игры все карты будут в нее возвращены.

//На игровом поле не отображается

private Deck mainDeck;

//колоды игроков

private Deck player1;

private Deck player2;

//колоды на игровом поле

private Deck desktop1;

private Deck desktop2;

//ЭУ игроков и на игровом поле для привязки к форме

private JLabel Player1Label;

private JLabel Player2Label;

private JLabel Desktop1Label;

private JLabel Desktop2Label;

//конструктор

public Game(JLabel p1, JLabel p2, JLabel d1, JLabel d2){

//создаем колоды игроков и игрового поля

player1 = new Deck();

player2 = new Deck();

desktop1 = new Deck();

desktop2 = new Deck();

// привязка класса к форме

Player1Label = p1;

Player2Label = p2;

Desktop1Label = d1;

Desktop2Label = d2;

//создаем главную колоду карт

mainDeck = new Deck();

for(Card.TMast m: Card.TMast.values()) {

for(Card.TRang r: Card.TRang.values())

try {

mainDeck.putInTail(new Card(m, r));

} catch (BadCardException ex) {

JoptionPane.showMessageDialog(null,ex);

System.exit(-1);

}

}

//перемешиваем

mainDeck.mix();

}

//для удобства создадим метод обновления игрового поля

public void updateView(){

player1.show(Player1Label);

player2.show(Player2Label);

desktop1.show(Desktop1Label);

desktop2.show(Desktop2Label);

}

//новая игра

public void newGame(){

//перемешиваем главную колоду

mainDeck.mix();

//раздаем игрокам по 18 карт

while (mainDeck.getCount()>0) {

player1.putInTail(mainDeck.take());

player2.putInTail(mainDeck.take());

}

//обновляем вид

updateView();

}

//завершение игры

public void gameOver(){

//возвращаем все карты в главную колоду

player1.moveToOtherDeck(mainDeck);

player2.moveToOtherDeck(mainDeck);

desktop1.moveToOtherDeck(mainDeck);

desktop2.moveToOtherDeck(mainDeck);

//обновляем вид

updateView();

}

//получение количества карт в колодах игроков

public int getCountPlayer1(){return player1.getCount();}

public int getCountPlayer2(){return player2.getCount();}

//делаем ход — шаг 1

public void stepOne(){

//берем по карте с каждой колоды игроков

//делаем их видимыми

//кладем на игровой стол в колоды desktop1 и desktop2

//обновляем вид

}

//делаем ход — шаг 2

//здесь мы проверяем карты на столе

//если карты равны, то возникает «спор» и метод возвращает true

//если одна карта больше, все содержимое колод на столе переходит

//выигрывавшему игроку и метод возвращает false

public boolean stepTwo(){

//берем по верхней карте с колод на столе

//если карты равны, то

//возвращаем их на колоды на столе

//return true;

//делаем карты не видимыми

//если первая карта больше

//возвращаем их на колоды на столе

//карты из обеих колод на столе переносим первому игр.

//иначе

//возвращаем их на колоды на столе

//карты из обеих колод на столе переносим второму игр.

//обновляем вид

//return false;

}

//возвращает true, если возникла спорная ситуация

public boolean isContest(){

//берем по верхней карте с колод на столе

//если карты равны, то

//возвращаем их на колоды на столе

//return true;

//иначе

//возвращаем их на колоды на столе

//return false;

}


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: