Я пытаюсь разработать игру с нуля.Я делаю сетку для хранения разных персонажей, а затем другой класс отображает эти символы.Проблема, с которой я сталкиваюсь, заключается в том, что JFrame
начинает отставать.Сначала персонаж отзывчив, но начинает быстро отставать.Отставание становится все хуже и хуже, когда программа остается открытой.
Я понятия не имею, с чего начать, чтобы решить эту проблему.
package game;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class runner extends JPanel {
static MyKeyListener list;
static player play;
static grid gameGrid;
static int size = 600;
public runner() {
MyKeyListener listener = new MyKeyListener(this);
player one = new player(5, 4);
grid Grid = new grid(10, 10, size, one);
play = one;
gameGrid = Grid;
list = listener;
this.addKeyListener(listener);
setFocusable(true);
}
public static void main(String[] args) {
runner runn = new runner();
JFrame frame = new JFrame("game");
int frameSize = size + (size / 2);
frame.setSize(size, size);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.add(runn);
frame.addKeyListener(list);
boolean isRunning = true;
while (isRunning) {
drawingComponent DC = gameGrid.update();
if (list.getDir() == 1) {
gameGrid.moveUp(play, play.getX(), play.getY());
list.setDir(0);
}
if (list.getDir() == 2) {
gameGrid.moveDown(play, play.getX(), play.getY());
list.setDir(0);
}
if (list.getDir() == 3) {
gameGrid.moveLeft(play, play.getX(), play.getY());
list.setDir(0);
}
if (list.getDir() == 4) {
gameGrid.moveRight(play, play.getX(), play.getY());
list.setDir(0);
}
frame.add(DC);
frame.revalidate();
frame.repaint();
}
}
public player getPlayer() {
return play;
}
}