- •Объектно-ориентированное программирование
- •Шаг 4. Настройка надписи.
- •Шаг 5. Настройка кнопок.
- •Шаг 6. Запуск приложения.
- •Шаг 7. Обработка событий цифровых кнопок.
- •Шаг 8. Обработка арифметических операций.
- •Шаг 9. Обработка нажатий на остальные кнопки.
- •Лабораторная работа 2. Создание классов. Конструкторы.
- •Лабораторная работа 3. Создание классов. Наследование и агрегация.
- •Лабораторная работа 4. Моделирование карточной игры на компьютере.
- •Задание.
- •Выполнение.
- •Создание проекта.
- •Создание формы.
- •Размещение элементов управления (эу) на форме.
- •Создание класса карты.
- •Класс Deck.
- •Класс Game
- •Привязка к пользовательскому интерфейсу
- •Лабораторная работа 5. Лабораторная работа Создание игры «Тетрис».
- •Создание панели для отображения действий игры.
- •Лабораторная работа 6. Списки и динамические массивы
Привязка к пользовательскому интерфейсу
Теперь остается все соединить вместе.
В классе 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. Лабораторная работа Создание игры «Тетрис».
Задание.
Написать программу, реализующую игру «Тетрис».
Правила игры.
Игра представляет собой «стакан», в который падают различные фигуры. Если упавшие фигуры составляют сплошную строку, эта строка удаляется. Пользователь с помощью клавиш может двигать фигуры влево, вправо и вращать.
Выполнение.
При разработке данной программы будем придерживаться парадигмы разделения отображения данных от обработки самих данных, отделения пользовательского интерфейса от обработки данных.
Соответственно, первая часть данной работы будет заключаться в создании пользовательского интерфейса. Вторая часть — в разработке классов для реализации игры «Тетрис». В третьей части попробуем собрать все вместе.
Создание пользовательского интерфейса.
В данной работе будем создавать интерфейс пользователя «вручную», т. е. без использования конструктора форм.
Создайте новый проект: простое приложение Java. Имя главного класса назовите Tetris пакет tetris.
После создания проекта необходимо сделать наш главный класс «наследником» класса JFrame, который описывает окно программы.
public class Tetris extends JFrame {
…
}
Таким образом наше консольное приложение превращается в программу с графическим интерфейсом.
Добавим в класс переменную уровня класса типа javax.swing.Timerс именемtimer.
Далее создадим конструктор главного класса со строковым параметром:
Tetris(String s) {
super(s);
timer = new Timer(400, null); //создаем таймер
//сюда в будущем будет добавлен код,
//добавляющий элементы управления
setSize(300, 300);
setVisible(true);
}
И изменим метод main():
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {}
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
JFrame frame = new Tetris("Тетрис");
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
});
}
Запустите программу и посмотрите, что у вас получилось.
Следующим шагом добавим меню. Меню будет состоять из меню «Файл» и иметь пункты меню «Новая игра» и «Выход».
Для этого:
//добавляем объект «строка меню»,
JMenuBar mbar = new JmenuBar();
//создаем меню «Файл»
JMenu mm = new Jmenu("Файл");
//создаем пункты меню
JMenuItem mNewGame = new JMenuItem("Новая игра");
JMenuItem mExit = new JmenuItem("Выход");
//добавляем пункты в меню
mm.add(mNewGame);
mm.add(new Jseparator()); //разделитель
mm.add(mExit);
//добавляем меню в строку меню
mbar.add(mm);
//устанавливаем полученное меню на форму
setJMenuBar(mbar);
//добавляем обработчики выбора пунктов меню
//для «Выход»
mExit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {timer.stop(); dispose(); }
});
//для «Новая игра»
mNewGame.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//startNewGame();
}
});
Добавьте этот код в конструктор перед вызовом setSize(). Запустите программу. Как работает меню?