4. Тестирование программы
При запуски игры открывается главное меню игры, в котором находятся кнопки управления. (см. Рис. 3) При нажатии на кнопку «Справка», открывается окно с описанием правил игры (см. Рис. 4). При нажатии на кнопку «Новая игра» создаётся объект класса GameField, и начинается сама игра (см. Рис. 5). Если нажать на кнопку «Об Авторе» откроется окно с информацией об Авторе и версией игры (см. Рис. 6). При нажатии на кнопку выход, появится диалоговое окно с уточнением вашего выбора (см. Рис. 7).
Рисунок 3 – главное меню игры
Рисунок 4 – игровая справка
Рисунок 5 – основное игровое поле
Рисунок 6 – информация об авторе и версии
Рисунок 7 – диалоговое окно выхода из игры
При работе программы, неизбежно возникнут ситуации столкновения игроков с игровыми препятствиями или же друг с другом. Эти ситуации определяют победу того или иного игрока. Вот перечень ситуаций, которые могут возникнуть:
Игроки врезались друг в друга. Исход этой ситуации Ничья. На экран выводится сообщение об этом. После чего игру можно начать с начала, нажатием на клавишу F1. (см. Рис.8)
Рисунок 8 – Ничья, при столкновении мотоциклов друг с другом
Игрок 2 врезался в «световой хвост» 1 игрока. Исход этой ситуации – победа Игрока 1. На экран выводится сообщение об этом. После чего игру можно начать с начала, нажатием на клавишу F1. (см. Рис.9)
Рисунок 9 – Победа 1 игрока, при столкновении игрока 2, с его «хвостом»
Игрок 2 врезался в стену. Исход ситуации – победа Игрока 1. На экран выводится сообщение об этом. После чего игру можно начать с начала, нажатием на клавишу F1. (см. Рис.10)
Рисунок 10 – Победа игрока 1, при столкновении игрока 2, со стеной
Игрок 2 врезался в собственный «световой хвост». Исход ситуации – побеждает 1 Игрок. При этом, на экран выводится сообщение об этом. После чего игру можно начать с начала, нажатием на клавишу F1. (см. Рис.11)
Рисунок 11 – победа игрока 1, при столкновении игрока 2, с самим собой
Игрок 1 врезался в «световой хвост» Игрока 2. Исход – побеждает Игрок 2. На экран выводится сообщение об этом. После чего игру можно начать с начала, нажатием на клавишу F1. (см. Рис.12)
Рисунок 12 – Победа игрока 2, при столкновении игрока 1, с его хвостом
Игрок 1 врезался в стену. Исход события – победа Игрока 2. На экран выводится сообщение об этом. После чего игру можно начать с начала, нажатием на клавишу F1. (см. Рис.13)
Рисунок 13 - Победа игрока 2, при столкновении игрока 1, со стеной
Игрок 1 врезался в собственный «световой хвост». Исход события – победа Игрока 2. На экран выводится сообщение об этом. После чего игру можно начать с начала, нажатием на клавишу F1. (см. Рис.14)
Рисунок 14 – Победа игрока 2, при столкновении игрока 1, с самим собой
Приложение 1
Текст программы:
Класс Menu:
package tron;
//@author Nikolay
public class Menu extends javax.swing.JFrame {
public Menu() {
initComponents();
}
@SuppressWarnings("Меню")
//setLocationRelativeTo(null);
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jButton3 = new javax.swing.JButton();
jPanel1 = new javax.swing.JPanel();
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jButton4 = new javax.swing.JButton();
jButton5 = new javax.swing.JButton();
jButton6 = new javax.swing.JButton();
jLabel1 = new javax.swing.JLabel();
jButton3.setText("jButton3");
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("TRON");
setResizable(false);
jPanel1.setToolTipText("TRON");
jButton1.setText("Новая игра");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jButton2.setText("Выход");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
jButton4.setText("Уровень сложности");
jButton4.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton4ActionPerformed(evt);
}
});
jButton5.setText("Справка");
jButton5.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton5ActionPerformed(evt);
}
});
jButton6.setText("Об Авторе");
jButton6.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton6ActionPerformed(evt);
}
});
jLabel1.setText("<html><h3 align=\"center\">TRON THE GAME</h3></html>");
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(45, 45, 45)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(jButton6, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jButton4, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 141, Short.MAX_VALUE)
.addComponent(jButton1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jButton5, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jButton2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(11, 11, 11)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap(38, Short.MAX_VALUE))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 37, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jButton4, javax.swing.GroupLayout.PREFERRED_SIZE, 37, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton5, javax.swing.GroupLayout.PREFERRED_SIZE, 37, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jButton6, javax.swing.GroupLayout.PREFERRED_SIZE, 36, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 32, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(12, 12, 12))
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screenSize.width-260)/2, (screenSize.height-329)/2, 260, 329);
}// </editor-fold>
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
Exit ex = new Exit();
ex.setVisible(true);
ex.setLocationRelativeTo(null);
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
GameField gf = new GameField();
}
private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {
Spravka sp = new Spravka();
sp.setVisible(true);
sp.setLocationRelativeTo(null);
}
private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {
Author at = new Author();
at.setVisible(true);
at.setLocationRelativeTo(null);
}
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {
LvlHard lvl = new LvlHard();
lvl.setVisible(true);
lvl.setLocationRelativeTo(null);
}
public static void main(String args[]) {
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(Menu.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(Menu.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(Menu.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(Menu.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Menu().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JButton jButton4;
private javax.swing.JButton jButton5;
private javax.swing.JButton jButton6;
private javax.swing.JLabel jLabel1;
private javax.swing.JPanel jPanel1;
// End of variables declaration
}
Класс GameField
package tron;
import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import java.util.Random;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class GameField extends JFrame {
int n = 0, n_max = 100;
//private static final long serialVersionUID = 1L;
private ArrayList<Point> motos = new ArrayList<>();
private ArrayList<Point> motos2 = new ArrayList<>();
//private final Random rand = new Random(); //генератор
private static final byte speed = 125; //сскорость движения мотоциклов
public byte direction = PAUSE;
public byte direction2 = PAUSE;
public static final byte PAUSE = 0;
public static final byte UP = 1;
public static final byte RIGHT = 2;
public static final byte DOWN = 3;
public static final byte LEFT = 4;
public static final byte UP2 = 5;
public static final byte RIGHT2 = 6;
public static final byte DOWN2 = 7;
public static final byte LEFT2 = 8;
private boolean FailPlayer1 = false; //проиграл первый игорк
private boolean FailPlayer2 = false; //проиграл игрок 2
private boolean NoWinner = false; //ничья
private boolean [][] border = new boolean[pol][pol];//стены
final static int size = 10; // Размер клетки в пикселах
final static int pol = 60;
private int lastButPlayer1 = 0;
private int lastButPlayer2 = 0;
private boolean fl = false;
int ips;
public GameField(){
setDefaultCloseOperation(EXIT_ON_CLOSE);
setTitle("TRON THE GAME");
setSize(600, 600);
setLocationRelativeTo(null);
setLayout(null);
setResizable(false);
setVisible(true);
motos.add(new Point(550, 550));
motos2.add(new Point(50, 50));
setPreferredSize(new Dimension(pol*size, pol*size));//размеры поля
//стены
for (int i=0; i<pol; ++i)
{ border[0][i] = true;
border[pol-1][i] = true;
border[i][2] = true;
border[i][pol-1] = true;
}
//поток игры
new Thread(new Runnable()
{ public void run()
{ while (FailPlayer1==false && FailPlayer2==false && NoWinner == false)
{ if (direction != PAUSE && direction2 != PAUSE)
GoMotos();
fl = false;
try {
Thread.sleep(speed);//задержка между обновлениями
} catch (InterruptedException e) {}
}
if (FailPlayer1==true)
JOptionPane.showMessageDialog(null, "Игрок 2 выйграл");
if (FailPlayer2==true)
JOptionPane.showMessageDialog(null, "Игрок 1 выйграл");
if (NoWinner==true)
JOptionPane.showMessageDialog(null, "Вы врезались друг в друга. Ничья.");
}
}).start();
addKeyListener(new KeyAdapter()
{ @Override
public void keyPressed(KeyEvent ev)
{ if (ev.getKeyCode()==KeyEvent.VK_F1)
{ dispose();//закрыть это окно
new GameField(); //новое окно
}
else
{ key(ev);
key2(ev);}
if (ev.getKeyCode()== KeyEvent.VK_ESCAPE) dispose();
}
});
}
@Override
public void paint(Graphics g)
{ Graphics2D g2 = (Graphics2D)g.create();
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
//заливка игрового поля
g2.setColor(Color.CYAN);
g2.fillRect(0, 0, getWidth(), getHeight());
//стены
g2.setColor(Color.black);
for (int i=0; i<pol; ++i)
for (int j=0; j<pol; ++j)
if (border[i][j] == true)
g2.fillRect(i*size, j*size, size, size);
//рисуем 1 мотоцикл
for (int i=0; i<motos.size(); i++)
{ Point r = motos.get(i);
g2.setColor(Color.red);
g2.fillRect(r.x, r.y, size, size);
g2.setColor(Color.black);
g2.drawRect(r.x, r.y, size, size);
}
//рисуем 2 мотоцикл
for (int i=0; i<motos2.size(); i++)
{ Point r2 = motos2.get(i);
g2.setColor(Color.GREEN);
g2.fillRect(r2.x, r2.y, size, size);
g2.setColor(Color.black);
g2.drawRect(r2.x, r2.y, size, size);
}
g2.fillRect(300, 300, size, size);
}
public void key(KeyEvent ev)
{ if (FailPlayer1 || fl)//Проиграл игрок 1 или уже нажимал клавишу
return;
switch (ev.getKeyCode())
{ case KeyEvent.VK_RIGHT:
if (lastButPlayer1 != KeyEvent.VK_LEFT)
{ direction = RIGHT;
fl = true;
}
break;
case KeyEvent.VK_LEFT:
if (lastButPlayer1 != KeyEvent.VK_RIGHT)
{ direction = LEFT;
fl = true;
}
break;
case KeyEvent.VK_DOWN:
if (lastButPlayer1 != KeyEvent.VK_UP)
{ direction = DOWN;
fl = true;
}
break;
case KeyEvent.VK_UP:
if (lastButPlayer1 != KeyEvent.VK_DOWN)
{ direction = UP;
fl = true;
}
break;
default: break;
}
if (fl == true)
{ lastButPlayer1 = ev.getKeyCode();
repaint();
} }
public void key2(KeyEvent ev)
{ if (fl || FailPlayer2)//Проиграл игрок 2 или уже нажимал клавишу
return;
switch (ev.getKeyCode())
{ case KeyEvent.VK_D:
if (lastButPlayer2 != KeyEvent.VK_A)
{ direction2 = RIGHT2;
fl = true;
}
break;
case KeyEvent.VK_A:
if (lastButPlayer2 != KeyEvent.VK_D)
{ direction2 = LEFT2;
fl = true;
}
break;
case KeyEvent.VK_S:
if (lastButPlayer2 != KeyEvent.VK_W)
{ direction2 = DOWN2;
fl = true;
}
break;
case KeyEvent.VK_W:
if (lastButPlayer2 != KeyEvent.VK_S)
{ direction2 = UP2;
fl = true;
}
break;
default: break;
}
if (fl == true)
{ lastButPlayer2 = ev.getKeyCode();
repaint();
} }
public void GoMotos ()
{ //движение мотоцикла 1
Point last = motos.get(motos.size()-1);//голова
Point p = last;
switch (direction)
{ case UP:
p = new Point(last.x, last.y - size);
break;
case RIGHT:
p = new Point(last.x + size, last.y);
break;
case DOWN:
p = new Point(last.x, last.y + size);
break;
case LEFT:
p = new Point(last.x - size, last.y);
break;
}
motos.add(p);//добавить сам мотоцикл
n++;
if (n >= 80)
{ motos.remove(0); }
if (n > n_max) n = 81;
for (int i=0; i<motos.size()-1; i++)
{ Point r = motos.get(i);
if (r.x==p.x && r.y==p.y)//игрок 1 врезался сам в себя
{ FailPlayer1 = true;
return;
} }
//игрок 1 врезался в соперника
for (int i=0; i<motos2.size()-1; i++)
{ Point r = motos2.get(i);
if (r.x==p.x && r.y==p.y)
{ FailPlayer1 = true;
return;
} }
//игорок 1 врезался в стену
for (int i=0; i<pol; ++i)
for (int j=0; j<pol; ++j)
if (border[i][j] == true)
if ((i*size==p.x && j*size==p.y) || (p.x==300 && p.y == 300))
{ FailPlayer1 = true;
return;
}
//движение мотоцикла 2
Point last2 = motos2.get(motos2.size()-1);//мотоцикл
Point p2 = last2;
switch (direction2) //управление
{ case UP2:
p2 = new Point(last2.x, last2.y - size);
break;
case RIGHT2:
p2 = new Point(last2.x + size, last2.y);
break;
case DOWN2:
p2 = new Point(last2.x, last2.y + size);
break;
case LEFT2:
p2 = new Point(last2.x - size, last2.y);
break;
}
motos2.add(p2);//добавить сам мотоцикл
if (n >= 80)
{ motos2.remove(0); }
if (p.x==p2.x && p.y==p2.y)
{NoWinner = true;
return;}
for (int i=0; i<motos2.size()-1; i++)
{ Point r2 = motos2.get(i);
if (r2.x==p2.x && r2.y==p2.y)//игрок 2 врезался сам в себя
{ FailPlayer2 = true;
return;
}
}
for (int i=0; i<motos.size()-1; i++)
{ Point r2 = motos.get(i);
if (r2.x==p2.x && r2.y==p2.y)//игрок 2 врезался в соперника
{ FailPlayer2 = true;
return;
}
}
//Игрок 2 врезался в стену
for (int i=0; i<pol; ++i)
for (int j=0; j<pol; ++j)
if (border[i][j] == true)
if ((i*size==p2.x && j*size==p2.y) || (p2.x==300 && p2.y == 300))
{ FailPlayer2 = true;
return;
}
repaint(); //обновить
}
}
Класс Author
package tron;
//@author Nikolay
public class Author extends javax.swing.JFrame {
public Author() {
initComponents();
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
jButton1 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("Справка");
setResizable(false);
jPanel1.setMinimumSize(new java.awt.Dimension(0, 0));
jLabel1.setText("<Html><h3 align=\"center\">TRON THE GAME</h3><h4>Автор: Едакин Николай, гр. ИВТ-11.<h4><p>Версия: <b>1.2.7</b><p><br><p align=\"center\">С. Все права защищены. 2012 г.</p></Html>");
jButton1.setText("OK");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
.addGap(0, 0, Short.MAX_VALUE)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(47, 47, 47)
.addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 129, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
.addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, 168, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 34, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18))
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
pack();
}// </editor-fold>
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
setVisible(false);
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JLabel jLabel1;
private javax.swing.JPanel jPanel1;
// End of variables declaration
}
Класс Spravka
package tron;
//@author Nikolay
public class Spravka extends javax.swing.JFrame {
public Spravka() {
initComponents();
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
jButton1 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("Справка");
jPanel1.setMinimumSize(new java.awt.Dimension(0, 0));
jLabel1.setText("<Html><h3 align=\"center\")>Игра TRON</h3><p>В игре учавствуют 2 игрока. Первый игрок управляет красным мотоциклом, второй - зелёным.</p><p>Управление первым мотоциклом выполняется с помощью стрелок. Второй мотоцикл, управляется с помощью кнопок: w,a,s,d.</p><p>Суть игры заключается в том, чтобы заставить соперника врезаться в препятствие. Каждый мотоцикл при движении, оставляет за собой световую стену. Нельзя врезаться в стены, и в \"хвосты\" соперника и свой.</p></Html>");
jButton1.setText("OK");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
.addContainerGap(153, Short.MAX_VALUE)
.addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 129, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(147, 147, 147))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 150, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 34, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(6, Short.MAX_VALUE))
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
pack();
}// </editor-fold>
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
setVisible(false);
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JLabel jLabel1;
private javax.swing.JPanel jPanel1;
// End of variables declaration
}
Класс Exit
package tron;
// @author Nikolay
public class Exit extends javax.swing.JDialog {
public Exit() {
initComponents();
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
jLabel1.setText("<html><h3>Вы действительно хотите выйти?</h3></html>");
jButton1.setText("Да");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jButton2.setText("Нет");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(0, 0, Short.MAX_VALUE)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 267, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 85, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 89, javax.swing.GroupLayout.PREFERRED_SIZE))))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 42, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jButton2, javax.swing.GroupLayout.DEFAULT_SIZE, 32, Short.MAX_VALUE)
.addComponent(jButton1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addContainerGap())
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
/ .addContainerGap(11, Short.MAX_VALUE)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);
pack();
}// </editor-fold>
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
System.exit(0);
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
setVisible(false);
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JLabel jLabel1;
private javax.swing.JPanel jPanel1;
// End of variables declaration
}
