Итак, вы создали класс Player, но у вас нет позиции игрока в этом классе.
Поскольку весла будут двигаться только вверх и вниз, нам нужны только методы для изменения координаты y.
static class Player{
int x;
int y;
Player(int x){this.x=x;}
void moveUp(){y--;}
void moveDown(){y++;}
void drawPlayer(Graphics2D g){
g.fillRect(x,y,40,120);
}
}
Теперь в классе, который расширяет JPanel (в вашем случае MyPanel
), мы можем взять наш вновь созданный класс Player
в качестве ввода (поместив его в конструктор)
Мы также можем создать таймер для регулярного обновления кадров. Добавляя players[0].moveDown;
в часы, первый весло будет перемещаться вниз каждый кадр
В методе рисования мы можем перебирать игроков и отображать их, используя метод drawPlayer
в классе Player
.
MyPanel(Player[] players) {
this.players = players;
setBackground(Color.BLACK);
new Timer().scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
repaint();
players[0].moveDown;
}
}, 300, 1000 / 60);
}
@Override
public void paint(Graphics g) {
super.paintComponent(g);
g.setColor(Color.WHITE);
for(Player p : players){
p.drawPlayer((Graphics2D) g);
}
}
Теперь, чтобы собрать все воедино, нам просто нужно создать проигрыватели при запуске программы.
Player[] players = new Player[]{
new Player(100),
new Player(1000)
};
frame.add(new PongWindow(players));
Вот как будет выглядеть кодкак все вместе:
import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Timer;
import java.util.TimerTask;
public class Main {
public static void main(String[] args) {
JFrame frame = new JFrame("gEngine");
Player[] players = new Player[]{
new Player(100),
new Player(1000)
};
frame.add(new PongWindow(players));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBackground(Color.RED);
frame.setSize(1280, 720);
frame.setResizable(false);
frame.setVisible(true);
}
static class Player{
int x;
int y;
Player(int x){this.x=x;}
void moveUp(){y+= -8;}
void moveDown(){y+= 8;}
void drawPlayer(Graphics2D g){
g.fillRect(x,y,40,120);
}
}
static class PongWindow extends JPanel {
//private JPanel panel = new JPanel();
Player[] players;
PongWindow(Player[] players) {
this.players = players;
setBackground(Color.BLACK);
new Timer().scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
repaint();
players[0].moveDown();
}
}, 300, 1000 / 60);
}
@Override
public void paint(Graphics g) {
super.paintComponent(g);
g.setColor(Color.WHITE);
for(Player p : players){
p.drawPlayer((Graphics2D) g);
}
}
}
}