Теперь остается все соединить вместе.
В классе DesktopFrame создаем переменную уровня класса типа Game:
Game game;
Далее, в конструктор класса DesktopFrame добавьте (в конец) следующий код:
lbP1.setIcon(new ImageIcon(Card.cardPicArray[Card.NULL]));
lbP2.setIcon(new ImageIcon(Card.cardPicArray[Card.NULL]));
lbD1.setIcon(new ImageIcon(Card.cardPicArray[Card.NULL]));
lbD2.setIcon(new ImageIcon(Card.cardPicArray[Card.NULL]));
Этот код присваивает местам для карт на форме изображение красного креста на белом фоне.
Затем там же создаем объект game:
game = new Game(lbP1, lbP2, lbD1, lbD2);
Создаем обработчик выбора пункта меню «Новая игра». Для этого выберите этот пункт меню, нажмите на него правой клавишей мыши и в появившемся контекстном меню выберите События->Action->ActionPerformed.
В создавшемся методе-обработчике напишите:
//вызываем метод newGame
game.newGame();
//Показываем количество карт у игроков
lbCount1.setText(String.valueOf(game.getCountPlayer1()));
lbCount2.setText(String.valueOf(game.getCountPlayer2()));
//делаем кнопку «Сделать ход» активной
btStep1.setEnabled(true);
//а кнопку «ОК» неактивной
btStep2.setEnabled(false);
Аналогично создаем обработчики событий ActionPerformed (нажатие на кнопку) для кнопок btStep1 и btStep2.
|
|
В обработчике для кнопки btStep1 добавляем:
//вызываем метод stepOne объекта game
game.stepOne();
//обновляем информацию о количестве карт у пользователей
lbCount1.setText(String.valueOf(game.getCountPlayer1()));
lbCount2.setText(String.valueOf(game.getCountPlayer2()));
//делаем кнопку «Сделать ход» неактивной
btStep1.setEnabled(false);
//а кнопку «ОК» активной
btStep2.setEnabled(true);
//если возник спор, текст на кнопке btStep2 изменяем на «Спор»
if(game.isContest()) btStep2.setText("Спор");
Обработчик нажатия на кнопку btStep2, делаем самостоятельно.
В нем должно быть следующее:
- вызываем метод game.stepTwo();
- если спора нет, обновляем информацию о количестве карт у игроков;
- если у кого-то из игроков закончились карты, объявляем конец игры
для этого вводим следующий код:
JOptionPane.showMessageDialog(rootPane, "Игра окончена");
game.gameOver();
btStep1.setEnabled(false);
btStep2.setEnabled(false);
- текст на кнопке btStep2 изменяем на «ОК»
- делаем активными/неактивными кнопки как до начала хода
А что делать, если возник спор? Подумайте сами...
Лабораторная работа 5. Лабораторная работа
Создание игры «Тетрис».
Задание.
Написать программу, реализующую игру «Тетрис».