Добавление таймера на апплет

  • Автор темы Konstantin2209
  • Дата начала
Статус
Закрыто для дальнейших ответов.
K

Konstantin2209

#1
Всем привет! :)
Подскажите пожалуйста, что нужно сделать чтобы добавить обычный таймер с минутами и секундами на апплет?
Скачал приложение пятнашки, вот на эту форму необходимо добавить таймер, чтобы отсчёт начинался после первого нажатия мышки, и обновлялся после нажатия "новая игра"
Код:
package fifteen;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Pyatnashki extends JFrame
{
JPanel appletPanel;
JPanel gamePanel = new JPanel();
BorderLayout borderLayout = new BorderLayout();

//двумерный массив для хранения чисел от 1 до 16
int[][] chisla = new int[4][4];

//массив кнопочек от 1 до 16
JButton[][] buttons = new JButton[4][4];

//линия статуса игры
JLabel status= new JLabel();

//Конструктор фрэйма
public Pyatnashki()
{
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
try
{
Components();
}
catch(Exception e)
{
e.printStackTrace();
}
}


//Конструктор компонентов фрэйма
private void Components() throws Exception
{
//окно игры
appletPanel = (JPanel) this.getContentPane();
this.setLayout(borderLayout);
this.setBackground(java.awt.Color.red);
this.setSize(new Dimension(335,395));
this.setTitle("Игра 'Пятнашки'");
this.setResizable(false);//невозможность изменения размеров окна

//Создаем меню
JMenuBar menuBar = new JMenuBar();
menuBar.setBackground(java.awt.Color.red);

//Создаем подменю
JMenu Game = new JMenu("Игра");
JMenu Help = new JMenu("Помощь");

//Добавляем подменю в основное меню
menuBar.add(Game);
menuBar.add(Help);

//Устанавливаем полученное меню на окно
this.setJMenuBar(menuBar);

//Создаем элементы подменю Game с обработчиками событий
JMenuItem NewGame = new JMenuItem("Новая игра");
JMenuItem Exit = new JMenuItem("Выход");

//Создаем элемент подменю Help с обработчиками событий
JMenuItem Dvl = new JMenuItem("Разработчик");
JMenuItem Spravka = new JMenuItem("Справка");

//Добавляем обработчики событий по нажатию
NewGame.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
newGame();
}
});

//Выход из игры
Exit.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
});

//вывод информации о разработчике
Dvl.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
JOptionPane.showMessageDialog(null,"Выполнил - Гурский К.С., группа - АБ-921","Разработчик", JOptionPane.QUESTION_MESSAGE);
}
});

Spravka.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
JOptionPane.showMessageDialog(null,"Для победы в данной игре необходимо расположить все цифры в порядке их возрастания. "
+ "Числа необходимо располагать по строкам, перемещая их с помощью мыши на свободную клетку",
"Справка", JOptionPane.QUESTION_MESSAGE);
}
});


//Добавляем созданные элементы к подменю
Game.add(NewGame);
Game.add(Exit);
Help.add(Dvl);
Help.add(Spravka);
gamePanel.setLayout(null);
// добавляем кнопочки
int count=0;
for(int i = 0;i<4;i++)
for(int j = 0;j<4;j++)
{
buttons[i][j] = new JButton(""+count);
//устанавливаем обработчик событий
buttons[i][j].addMouseListener(new mAdapter(i,j));
buttons[i][j].setSize(80,80);
buttons[i][j].setLocation(80*j,80*i);
buttons[i][j].setCursor(new Cursor(Cursor.HAND_CURSOR));
buttons[i][j].setBackground(java.awt.Color.white);
gamePanel.add(buttons[i][j]);
chisla[i][j]=count;//задаем матрицу
count++;
}
buttons[0][0].setText(" ");
//Добавляем игровую панель с кнопками
appletPanel.add(gamePanel,BorderLayout.CENTER);
//обрамляем строку статуса
status.setBorder(BorderFactory.createEtchedBorder());
//Добавляем строку статуса
appletPanel.add(status,BorderLayout.SOUTH);
//новая игра
newGame();
}

protected void processWindowEvent(WindowEvent e)
{
super.processWindowEvent(e);
if (e.getID() == WindowEvent.WINDOW_CLOSING)
{
System.exit(0);
}
}

/**Случайным образом переставляем элементы матрицы*/
public void RandomChisla()
{
for(int i = 0;i<100;i++)
{
int a = (int)(Math.random()*4);
int b = (int)(Math.random()*4);
int a2 = (int)(Math.random()*4);
int b2 = (int)(Math.random()*4);

int c = chisla[a][b];
chisla[a][b] = chisla[a2][b2];
chisla[a2][b2] = c;
}
}


//Начинаем новую игру
public void newGame()
{
RandomChisla();
for(int i = 0;i<4;i++)
for(int j = 0;j<4;j++)
{
//пишем на кнопочках числа из матрицы
if(chisla[i][j]!=0)buttons[i][j].setText(""+chisla[i][j]);
else buttons[i][j].setText("");
}
status.setText("Поехали...");
gamePanel.setVisible(true);
}
/**Класс адаптера прослушивающий события над кнопкой*/
class mAdapter extends java.awt.event.MouseAdapter
{
int posi,posj;
int startx=0;
int starty=0;
/**Конструктор адаптера в зависимости от позиции кнопочки*/
mAdapter(int posI,int posJ)
{
this.posi=posI;
this.posj=posJ;
}
/**При нажатой кнопке мыши*/
public void mousePressed(MouseEvent e)
{
//меняем курсор
buttons[posi][posj].setCursor(new Cursor(Cursor.MOVE_CURSOR));
//запоминаем точку начала переноса кнопки
startx=e.getX();
starty=e.getY();
}
/**При отпускании кнопки мыши*/
public void mouseReleased(MouseEvent e)
{
//меняем курсор
buttons[posi][posj].setCursor(new Cursor(Cursor.HAND_CURSOR));
//запоминаем точку окончания переноса кнопки
int endx=e.getX();
int endy=e.getY();
//определяем направление переноса
//если абсолютная величина (shiftx) больше
//абсолютной величины (shifty)
//значит передвигаемся по оси х
int shiftx=endx-startx;
int shifty=endy-starty;
if(Math.abs(shiftx)>Math.abs(shifty))
{
//определяем направление движения по оси х
if(shiftx>0)
{//впрово

//если это не крайние правые кнопки
//и правая кнопка пустая
//меняем местами кнопку с пустой кнопкой
if((posj != 3) && (chisla[posi][posj+1] == 0))
{
chisla[posi][posj+1] = chisla[posi][posj];
chisla[posi][posj]=0;
buttons[posi][posj].setText("");
buttons[posi][posj+1].setText(""+chisla[posi][posj+1]);
status.setText("Верный ход");
}else status.setText("Ход невозможен");
}
else
{//влево

//если это не крайние левые кнопки
//и левая кнопка пустая
//меняем местами кнопку с пустой кнопкой
if((posj != 0) && (chisla[posi][posj-1] == 0))
{
chisla[posi][posj-1] = chisla[posi][posj];
chisla[posi][posj]=0;
buttons[posi][posj].setText("");
buttons[posi][posj-1].setText(""+chisla[posi][posj-1]);
status.setText("Верный ход");
}else status.setText("Ход невозможен");
}
}
else
{
//определяем направление движения по оси y
if(shifty>0)
{//вниз

//если это не крайние нижние кнопки
//и нижняя кнопка пустая
//меняем местами кнопку с пустой кнопкой
if((posi != 3) && (chisla[posi+1][posj] == 0))
{
chisla[posi+1][posj] = chisla[posi][posj];
chisla[posi][posj]=0;
buttons[posi][posj].setText("");
buttons[posi+1][posj].setText(""+chisla[posi+1][posj]);
status.setText("Верный ход");
}else status.setText("Ход невозможен");
}
else
{//вверх

//если это не крайние верхние кнопки
//и верхняя кнопка пустая
//меняем местами кнопку с пустой кнопкой
if((posi != 0) && (chisla[posi-1][posj] == 0))
{
chisla[posi-1][posj] = chisla[posi][posj];
chisla[posi][posj]=0;
buttons[posi][posj].setText("");
buttons[posi-1][posj].setText(""+chisla[posi-1][posj]);
status.setText("Верный ход");
}else status.setText("Ход невозможен");
}
}
//проверяем все ли числа стоят на своих местах
//если да то победа!!!
int count=1;
int error=0;
for(int i = 0;i<4;i++)
for(int j = 0;j<4;j++)
{
if(chisla[i][j]!=count)error++;
count++;
}
if(error==1)
{
status.setText("Вы победили!");
int result = JOptionPane.showConfirmDialog(null, "Вы победили!","Поздравляем, Вы победили! Начать новую игру?",JOptionPane.YES_NO_OPTION);
if (result == JOptionPane.YES_OPTION)newGame();
else gamePanel.setVisible(false);
}
}
}
}




package fifteen;

import javax.swing.UIManager;
import java.awt.*;
public class Run
{
boolean packFrame = false;
/**Construct the application*/
public Run()
{
Pyatnashki frame = new Pyatnashki();
//Validate frames that have preset sizes
//Pack frames that have useful preferred
//size info, e.g. from their layout
if (packFrame)
{
frame.pack();
}
else
{
frame.validate();
}
//Center the window
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = frame.getSize();
if (frameSize.height > screenSize.height)
{
frameSize.height = screenSize.height;
}
if (frameSize.width > screenSize.width)
{
frameSize.width = screenSize.width;
}
frame.setLocation((screenSize.width - frameSize.width) / 2,
(screenSize.height - frameSize.height) / 2);
frame.setVisible(true);
}
/**Main method*/
public static void main(String[] args)
{
try
{
UIManager.setLookAndFeel(
UIManager.getCrossPlatformLookAndFeelClassName());
}
catch(Exception e)
{
e.printStackTrace();
}
new Run();
}
}
Буду рад помощи, заранее благодарен;)
 
Статус
Закрыто для дальнейших ответов.