https://pastein.ru/t/aZ

  скопируйте уникальную ссылку для отправки



import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.io.*;
import javax.imageio.*;


public class Panel extends JPanel {
	//таймер для отрисовки игрового поля
	private Timer tmDraw;
	//Две кнопки: Новая игра и Выход
	private JButton btn1, btn2;
	//Изображение фона
	private Image bg;
	//Переменая для реализации самой игры
	private Game newGame;
	
	public class MyMouse1 implements MouseListener {
		
		@Override
		public void mouseClicked(MouseEvent arg0) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void mouseEntered(MouseEvent arg0) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void mouseExited(MouseEvent arg0) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void mousePressed(MouseEvent arg0) {
			// TODO Auto-generated method stub
			//Если еще не конец игры 
			if(newGame.endGame == false) {
				//Получаем координаты курсора мыши
				int mX = arg0.getX();
				int mY = arg0.getY();
				
				//Если нажата левая кнопка мыши один раз
				if ((arg0.getButton() == 1) && (arg0.getClickCount() == 1)) {
					//Вызываем метод из класса Game
					newGame.mousePressed(mX, mY);
				}
				
				//Если двойной щелчок левой кнопкой мыши
				else if((arg0.getButton() == 1) && (arg0.getClickCount() == 2)) {
					//вЫЗЫВАЕМ МЕТОД ИЗ КЛАССА GAME
					newGame.mouseDoublePressed(mX, mY);
				}
			}
		}

		@Override
		public void mouseReleased(MouseEvent arg0) {
			// TODO Auto-generated method stub
			//Если еще не конец игры 
			if(newGame.endGame == false) {
				//Получаем координаты курсора мыши
				int mX = arg0.getX();
				int mY = arg0.getY();
				
				//Если нажата левая кнопка мыши
				if(arg0.getButton() == 1) {
					//Вызываем мето диз калсса game
					newGame.mouseReleased(mX, mY);
				}
			}
		}
	}
	
	public class MyMouse2 implements MouseMotionListener {
		
		//При перетаскивании или захвате мышью
		public void mouseDragged(MouseEvent arg0) {
			// TODO Auto-generated method stub
			//Если еще не конец игры
			if(newGame.endGame == false) {
				//Получаем координаты курсора мыши
				int mX = arg0.getX();
				int mY = arg0.getY();
				
				//Вызываем мето диз класса Game
				newGame.mouseDragged(mX, mY);
			}
		}

		@Override
		public void mouseMoved(MouseEvent arg0) {
			// TODO Auto-generated method stub
			
		}
		
	}
	
	public Panel() {
		//Подключаем обработчик событий для мыши
		addMouseListener(new MyMouse1());
		addMouseMotionListener(new MyMouse2());
		
		//Создаем объект на основании класса Game
		newGame = new Game();
	
		//Загружаем фоновое изображение
		try {
			bg = ImageIO.read(new File("/home/atzutz/Desktop/bg.jpg"));
		}
		catch(Exception ex) {}
		
		//Включаем возможность произвольного расположения элементов формы
		setLayout(null);
		
		//Создаем первую кнопку новая mигра
		btn1 = new JButton();
		btn1.setForeground(Color.BLUE);
		btn1.setFont(new Font("serif", 0, 20));
		btn1.setText("Новая игра");
		btn1.setBounds(820, 50, 150, 50);
		
		btn1.addActionListener(new ActionListener() {
			//При нажатии на кнопку 
			public void actionPerformed(ActionEvent arg0) {
				newGame.start();
			}
		});
		add(btn1);
		
		//Создаем первую кнопку новая игра
		btn2 = new JButton();
		btn2.setForeground(Color.BLUE);
		btn2.setFont(new Font("serif", 0, 20));
		btn2.setText("Exit");
		btn2.setBounds(820, 150, 150, 50);
		
		btn2.addActionListener(new ActionListener() {
			//При нажатии на кнопку 
			public void actionPerformed(ActionEvent arg0) {
				System.exit(0);
			}
		});
		add(btn2);
		
		tmDraw = new Timer(20, new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				//Перерисовка игрового поля
				repaint();
			}
		});
		tmDraw.start();
		
	}
	public void paintComponent(Graphics gr) {
		//очищение игрового поля
		super.paintComponents(gr);
		//Выведение ффонового изображения
		gr.drawImage(bg, 0, 0, 1000, 700, null);
		//Рисование верних белых шести прямоугольников
		gr.setColor(Color.WHITE);
		for(int i=0; i<7; i++) {
			if(i!=2) gr.drawRect(30+i*110, 15, 72, 97);
		}
		for(int i=0; i<7; i++) {
			gr.drawRect(30+i*110, 130, 72, 97);
		}
		newGame.drawKoloda(gr);
	}
}