Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсавая работа. Отчёт.docx
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
2 Мб
Скачать
☆

4. Тестирование программы

При запуски игры открывается главное меню игры, в котором находятся кнопки управления. (см. Рис. 3) При нажатии на кнопку «Справка», открывается окно с описанием правил игры (см. Рис. 4). При нажатии на кнопку «Новая игра» создаётся объект класса GameField, и начинается сама игра (см. Рис. 5). Если нажать на кнопку «Об Авторе» откроется окно с информацией об Авторе и версией игры (см. Рис. 6). При нажатии на кнопку выход, появится диалоговое окно с уточнением вашего выбора (см. Рис. 7).

Рисунок 3 – главное меню игры

Рисунок 4 – игровая справка

Рисунок 5 – основное игровое поле

Рисунок 6 – информация об авторе и версии

Рисунок 7 – диалоговое окно выхода из игры

При работе программы, неизбежно возникнут ситуации столкновения игроков с игровыми препятствиями или же друг с другом. Эти ситуации определяют победу того или иного игрока. Вот перечень ситуаций, которые могут возникнуть:

  1. Игроки врезались друг в друга. Исход этой ситуации Ничья. На экран выводится сообщение об этом. После чего игру можно начать с начала, нажатием на клавишу F1. (см. Рис.8)

Рисунок 8 – Ничья, при столкновении мотоциклов друг с другом

  1. Игрок 2 врезался в «световой хвост» 1 игрока. Исход этой ситуации – победа Игрока 1. На экран выводится сообщение об этом. После чего игру можно начать с начала, нажатием на клавишу F1. (см. Рис.9)

Рисунок 9 – Победа 1 игрока, при столкновении игрока 2, с его «хвостом»

  1. Игрок 2 врезался в стену. Исход ситуации – победа Игрока 1. На экран выводится сообщение об этом. После чего игру можно начать с начала, нажатием на клавишу F1. (см. Рис.10)

Рисунок 10 – Победа игрока 1, при столкновении игрока 2, со стеной

  1. Игрок 2 врезался в собственный «световой хвост». Исход ситуации – побеждает 1 Игрок. При этом, на экран выводится сообщение об этом. После чего игру можно начать с начала, нажатием на клавишу F1. (см. Рис.11)

Рисунок 11 – победа игрока 1, при столкновении игрока 2, с самим собой

  1. Игрок 1 врезался в «световой хвост» Игрока 2. Исход – побеждает Игрок 2. На экран выводится сообщение об этом. После чего игру можно начать с начала, нажатием на клавишу F1. (см. Рис.12)

Рисунок 12 – Победа игрока 2, при столкновении игрока 1, с его хвостом

  1. Игрок 1 врезался в стену. Исход события – победа Игрока 2. На экран выводится сообщение об этом. После чего игру можно начать с начала, нажатием на клавишу F1. (см. Рис.13)

Рисунок 13 - Победа игрока 2, при столкновении игрока 1, со стеной

  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

}

7