Hi, i’m new to these forums & game programming.
I decided to try using BufferStrategy, but ran across some problems.
GameBoard.java:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.image.BufferStrategy;
import javax.swing.JPanel;
public class GameBoard extends JPanel implements Runnable
{
private BufferStrategy myBufferStrategy;
private Graphics g;
private Thread t;
private final int PERIOD = 10;
private Ball ball;
public GameBoard()
{
ball = new Ball();
addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e)
{
int keyCode = e.getKeyCode();
if (keyCode == e.VK_LEFT)
ball.keyPressed(e);
if (keyCode == e.VK_RIGHT)
ball.keyPressed(e);
if (keyCode == e.VK_UP)
ball.keyPressed(e);
if (keyCode == e.VK_DOWN)
ball.keyPressed(e);
}
@Override
public void keyReleased(KeyEvent e)
{
int keyCode = e.getKeyCode();
if (keyCode == e.VK_LEFT)
ball.keyReleased(e);
if (keyCode == e.VK_RIGHT)
ball.keyReleased(e);
if (keyCode == e.VK_UP)
ball.keyReleased(e);
if (keyCode == e.VK_DOWN)
ball.keyReleased(e);
}
});
}
public void addNotify()
{
super.addNotify();
startGame();
}
public void startGame()
{
t = new Thread(this);
t.start();
}
public void updateGameState()
{
ball.move();
}
private void render()
{
g = myBufferStrategy.getDrawGraphics();
g.setColor(Color.WHITE);
g.fillRect(0, 0, 500, 400);
g.dispose();
myBufferStrategy.show();
}
public void draw()
{
g.setColor(Color.red);
g.fillOval(ball.x, ball.y, 50, 50);
}
@Override
public void run()
{
while (true)
{
long beforeTime = System.currentTimeMillis();
updateGameState();
render();
draw();
long passedTime = System.currentTimeMillis() - beforeTime;
long sleepTime = PERIOD - passedTime;
if (sleepTime <= 0) sleepTime = 5;
try
{
Thread.sleep(sleepTime);
} catch (InterruptedException e) { }
}
}
}
The error:
Any idea’s what is wrong? :clue:
Thanks,
Mike/Icedust