import java.awt.*; //используется для работы с графикой. т.е. рисование картинок, фигур и т.д.
import java.awt.event.*;
import javax.swing.*; // используется для создания и панели, на котором отображается графика.
import javax.imageio.*;
import java.io.*;
public class Main {
public static void main(String[] args) {
Frame window = new Frame();
}
}
class Frame extends JFrame {
public Frame() {
Panel pan = new Panel();
Container cont = getContentPane();
cont.add(pan);
setBounds(10,10, 800, 600);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
}
class Panel extends JPanel {
private Image picture;
private int x = 400, y = 100;
private int direction = 2; //0 - влево, 1 - вверх, 2 - вправо, 3 - вниз.
private class ActionOnKey implements KeyListener {//KeyListener - слушатель клавиатуры (клавиш)
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
if (key == 39 ||key == 68) {
direction = 2;
}
if (key == 37 || key == 65) {
direction = 0;
}
if (key == 38 || key == 87) {
direction = 1;
}
if (key == 40 || key == 83) {
direction = 3;
}
if (key == 27) {
System.exit(0);
}
System.out.println("Вы нажали на клавишу под номером: " + key);
}
public void keyTyped(KeyEvent e) {}
public void keyReleased(KeyEvent e) {
int key_released = e.getKeyCode();
System.out.println("Вы только что отпустили клавишу под номером: " + key_released);
}
}
public Panel() {
addKeyListener(new ActionOnKey()); //add Key Listеner - добавить слушатель клавиши, для нашей панели.
//чтобы происходила обработка нажатых клавиш при открытой панели, то есть когда программа запущена и активна.
setFocusable(true);
//сделать фокус на нашей панели.
try {
picture = (ImageIO.read(new File("C:\\earth.png"))).getScaledInstance(100, 100, Image.SCALE_DEFAULT);
}
catch(IOException ex) {
System.out.println("Возникла ошибка. Возможно файл не найден");
}
Timer time = new Timer(16, new ActionListener() {
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if (direction == 0) {
x--;
}
if (direction == 1) {
y--;
}
if (direction == 2) {
x++;
}
if (direction == 3) {
y++;
}
if(x <= -100) {
x = 790;
}
if(y <= -100) {
y = 590;
}
if(x >= 810) {
x = -10;
}
if(y >= 590) {
y = -90;
}
repaint();
}
});
time.start();
}
public void paintComponent(Graphics gr) {
gr.clearRect(x-1, y-1, picture.getWidth(null)-1, picture.getHeight(null)-1);
gr.drawImage(picture, x,y, null);
}
}