Я пытаюсь сделать игру с GameEngine.Я следую этому уроку пример . В этом видео он очень хорошо объясняет LinkedList, и я понял концепцию, но я бы хотел использовать GameEngine.java
(ссылка ниже), который у меня есть.Реализуйте код в моем коде, но я не вижу результат handler.addObject(new Box(200, 100));
в моей игре.
Вот скриншот экрана игры.
![enter image description here](https://i.stack.imgur.com/w8vpZ.png)
Пример с голубым прямоугольником drawRectangle(100,100,32,32);
из game.java
Поэтому мой вопрос: как я могу увидеть результат handler.addObject без изменений GameEngine.java
Вот game.java;
import java.awt.Canvas;
public class game extends GameEngine{
private static Handler handler;
public static void main(String args[]) {
handler = new Handler();
handler.addObject(new Box(200, 100));
createGame(new game());
}
@Override
public void update(double dt) {
// TODO Auto-generated method stub
handler.update(dt);
}
@Override
public void paintComponent() {
// TODO Auto-generated method stub
changeBackgroundColor(red);
clearBackground(500, 500);
changeColor(blue);
drawRectangle(100,100,32,32);
handler.paintComponent(mGraphics);
}
}
GameObject.java
import java.awt.Graphics;
import java.awt.Rectangle;
public abstract class GameObject extends GameEngine{
protected int x, y;
protected float velX = 0, velY = 0 ;
public GameObject(int x , int y) {
this.x = x;
this.y = y;
}
public abstract void update(double dt);
public abstract void paintComponent(Graphics g);
public abstract Rectangle getBounds();
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public float getVelX() {
return velX;
}
public void setVelX(float velX) {
this.velX = velX;
}
public float getVelY() {
return velY;
}
public void setVelY(float velY) {
this.velY = velY;
}
@Override
public void paintComponent() {
// TODO Auto-generated method stub
}
}
Box.java
import java.awt.Graphics;
import java.awt.Rectangle;
public class Box extends GameObject{
public Box(int x, int y) {
super(x, y);
}
public Rectangle getBounds() {
return null;
}
@Override
public void update(double dt) {
// TODO Auto-generated method stub
x += velX;
y += velY;
}
@Override
public void paintComponent(Graphics g) {
// TODO Auto-generated method stub
changeColor(blue);
drawRectangle(x,y,32,32);
}
}
Handler.java
import java.awt.Graphics;
import java.util.LinkedList;
public class Handler {
LinkedList<GameObject> object = new LinkedList<GameObject>();
public void update(double dt) {
for(int i = 0; i <object.size(); i++) {
GameObject tempObject = object.get(i);
tempObject.update(dt);
}
}
public void paintComponent(Graphics g) {
for(int i = 0; i <object.size(); i++) {
GameObject tempObject = object.get(i);
tempObject.paintComponent(g);
}
}
public void addObject(GameObject tempObject) {
object.add(tempObject);
}
public void removeObject(GameObject tempObject) {
object.remove(tempObject);
}
}
Вот результат.Должно быть 2 синих ящика одного из game.java второго из box.java