1
Wave라는 게임에이 코드가 있습니다. 정상적으로 실행할 때 검정색 창이되고 검정색 창이됩니다. 창문은 흰색으로 창 왼쪽에 검은 색 줄무늬가 있습니다. 나는 간신히 그것을 볼 수있다.Java 게임, 색상이 apear가 아닙니다.
왜 이런 일이 일어날 지 아무도 모르는 사람이 있습니까?
package wave.myFirstGame;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferStrategy;
import java.util.Random;
public class Game extends Canvas implements Runnable {
private static final long serialVersionUID = 3580879553502102315L;
public static final int WITDH = 640, HEIGHT = WITDH/12 * 9;
private Thread thread;
private boolean running = false;
private Random r;
public Handler handler;
public Game() {
new Window(WITDH, HEIGHT, "Wave", this);
handler = new Handler();
r = new Random();
for(int i = 0; i < 50; i++){
handler.addObject(new Player(r.nextInt(WIDTH), r.nextInt(HEIGHT), ID.Player));
}
handler.addObject(new Player(200, 200, ID.Player));
}
public synchronized void start() {// initializing the thread
thread = new Thread(this);
thread.start();
running = true;
}
public synchronized void stop() {
try {
thread.join();
running = false;
} catch (Exception e) {
e.printStackTrace();
}
}
// GAME LOOP
public void run() {
long lastTime = System.nanoTime();
double amountOfTicks = 60.0;
double ns = 1000000000/amountOfTicks;
double delta = 0;
long timer = System.currentTimeMillis();
int frames = 0;
while (running) {
long now = System.nanoTime();
delta += (now - lastTime)/ns;
lastTime = now;
while (delta >= 1) {
tick();
delta--;
}
if (running)
render();
frames++;
if (System.currentTimeMillis() - timer > 1000) {
timer += 1000;
System.out.println("FPS " + frames);
frames = 0;
}
}
stop();
}
private void tick(){
handler.tick();
}
private void render(){
BufferStrategy bs = this.getBufferStrategy();
if(bs == null){
this.createBufferStrategy(3);
return;
}
Graphics g = bs.getDrawGraphics();
g.setColor(Color.black);
g.fillRect(0, 0, WIDTH, HEIGHT);
handler.render(g);
g.dispose();
bs.show();
}
public static void main(String[] args) {
new Game();
}
}
도움을 주셔서 감사합니다, 나는 여전히 그것을 얻지 못합니다. Window 클래스도 추가했습니다. –
윈도우 클래스에 문제가 없습니다. WIDTH 및 HEIGHT 값과 Game 클래스의 모든 참조를 바꾸셨습니까? 그리고 그 값이 정확한지 확인 했습니까? – ArcticLord
이름을 바꾸면 소문자 글자의 너비와 높이 또는 다른 이름을 의미합니까? –