Я учусь создавать игру с помощью этого урока на YouTube: https://www.youtube.com/watch?v=1gir2R7G9ws
Я уже несколько раз просматривал код и не могу найти несоответствие между моим кодом и кодом, используемым в руководстве. Я также получаю эту информацию в своем терминале:
новое окно (ШИРИНА, ВЫСОТА, «Давайте создадим игру!», Это); ^ Конструктор Window.Window (GraphicsConfiguration) не применим (фактические и формальные списки аргументов различаются по длине)
constructor Window.Window() is not applicable
(actual and formal argument lists differ in length)
constructor Window.Window(Frame) is not applicable
(actual and formal argument lists differ in length)
constructor Window.Window(Window) is not applicable
(actual and formal argument lists differ in length)
constructor Window.Window(Window,GraphicsConfiguration) is not applicable
(actual and formal argument lists differ in length)
Вот моя игра. java:
package com.tutorial.main;
import java.awt.*;
import java.awt.Canvas;
import java.awt.image.BufferStrategy;
public class Game extends Canvas implements Runnable {
private static final long serialVersionUID = 8073316534757788976L;
public static final int WIDTH = 640, HEIGHT = WIDTH/12*9;
private Thread thread;
private boolean running = false;
public Game(){
new Window(WIDTH, HEIGHT, "Let's Build A Game!", this);
}
public synchronized void start() {
thread = new Thread(this);
thread.start();
running = true;
}
public synchronized void stop(){
try{
thread.join();
running = false;
}catch(Exception e) {
e.printStackTrace();
}
}
public void run(){
long lastTime = System.nanoTime();
double amountOfTicks = 60.0;
double ns = 100000000 / 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();
}
public static void main(String args[]){
new Game();
}
private void 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);
g.dispose();
bs.show();
}
}
А вот мое окно. java:
package com.tutorial.main;
import java.awt.Canvas;
import java.awt.Dimension;
import javax.swing.JFrame;
public class Window extends Canvas{
private static final long serialVersionUID = -3359827712233484029L;
public Window(int width, int height, String title, Game game){
JFrame frame = new JFrame(title);
frame.setPreferredSize(new Dimension(width, height));
frame.setMaximumSize(new Dimension(width, height));
frame.setMinimumSize(new Dimension(width, height));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.setLocationRelativeTo(null);
frame.add(game);
frame.setVisible(true);
game.start();
}
}
Кто-нибудь видит проблему?