import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Game{
public static void main(String[] args){
JFrame f = new JFrame("Game");
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.setContentPane(new Game().new GamePanel());
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}
@SuppressWarnings("serial")
class GamePanel extends JPanel implements Runnable, KeyListener{
final static int WIDTH = 400;
final static int HEIGHT = 400;
BufferedImage screen;
Thread loop;
boolean running;
Player player;
public GamePanel(){
setPreferredSize(new Dimension(WIDTH, HEIGHT));
setFocusable(true);
requestFocus();
}
private void init(){
screen = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
player = new Player("Spieler 1");
player.setPosition(50, 50);
running = true;
}
private void update(){}
private void render(){
Graphics g = screen.getGraphics();
player.draw(g);
}
private void draw(){
Graphics g = getGraphics();
if(g != null){
g.drawImage(screen, 0, 0, null);
}
else{
System.exit(0);
}
}
@Override
public void addNotify(){
super.addNotify();
if(loop == null) {
addKeyListener(this);
loop = new Thread(this);
loop.start();
}
}
@Override
public void run(){
init();
while(running){
update();
render();
draw();
try {
Thread.sleep(100);
}
catch (Exception e) {
e.printStackTrace();
}
}
}
@Override
public void keyPressed(KeyEvent e){}
@Override
public void keyReleased(KeyEvent e){}
@Override
public void keyTyped(KeyEvent e){}
}
class Player{
int x;
int y;
String name;
public Player(String s){
name = s;
}
public void draw(Graphics g){
g.setColor(Color.RED);
g.drawString(name, x, y - 15);
g.fillRect(x, y, 20, 20);
}
public void setPosition(int x, int y){
this.x = x;
this.y = y;
}
}
}