import java.awt.Canvas;
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.BufferStrategy;
import javax.swing.JFrame;
public class General implements Runnable, KeyListener{
Thread thread;
boolean running;
JFrame frame;
Canvas canvas;
BufferStrategy bs;
Graphics g;
int x = 20;
int y = 500;
public void Display(String title, int width, int height) {
frame = new JFrame(title);
frame.setPreferredSize(new Dimension(width, height));
frame.setMaximumSize(new Dimension(width, height));
frame.setMinimumSize(new Dimension(width, height));
frame.setLocationRelativeTo(null);
frame.setResizable(false);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
canvas = new Canvas();
frame.add(canvas);
frame.pack();
frame.setVisible(true);
}
public void init() {
Display("Igrica", 600, 600);
}
public synchronized void start() {
if(running) {
return;
}
thread = new Thread(this);
thread.start();
running = true;
}
public synchronized void stop() {
if(!running) {
return;
}
try {
thread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
running = false;
}
public void tick() {
}
public void render() {
bs = canvas.getBufferStrategy();
if(bs == null) {
canvas.createBufferStrategy(3);
return;
}
g = bs.getDrawGraphics();
//Draw here
g.setColor(Color.green);
g.fillRect(0, 0, 600, 600);
g.setColor(Color.WHITE);
g.fillRect(x, y, 60, 60);
//To here
bs.show();
g.dispose();
}
public void run() {
init();
int fps = 60;
double timePerTick = 1000000000 / fps;
double delta = 0;
long now;
long lastTime = System.nanoTime();
while(running) {
now = System.nanoTime();
delta += (now - lastTime) / timePerTick;
lastTime = now;
if(delta >= 1) {
tick();
render();
delta --;
}
}
}
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()== KeyEvent.VK_SPACE) {
System.out.println("Pressed");
y += 10;
}
}
@Override
public void keyReleased(KeyEvent e) {
}
}
So, I'm trying to make a simple 2D video game, and for that I need input. So I tried adding KeyListener, but it didn't seem to work, so I thought I did something wrong in the first part of my code, so I added one line that prints Pressed when I press space, but it doesn't seem to do anything. Any advice?