Запуск игры

#java

#java

Вопрос:

Я запустил игру, но с ней что-то не так. На самом деле это ничего не показывает и не выдает мне ошибку. Он просто запускает ее и больше ничего не делает.

Вот мои коды:

КЛАСС

     package Game;

    import java.awt.Canvas;
    import java.awt.Dimension;

    import javax.swing.JFrame;

    public class Window extends Canvas{

        private static final long serialVersionUID = -2408406005333728354L;

        public Window(int height, int width, String title, Game game){
              JFrame tit = new JFrame(title); 

              tit.setPreferredSize(new Dimension(width, height));
              tit.setMaximumSize(new Dimension(width, height));
              tit.setMinimumSize(new Dimension(width, height));

              tit.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  //It make the game close up to the end without bugs
              tit.setResizable(false);   //not able to resize
              tit.setLocationRelativeTo(null);   //put the frame in the middle of the screen, originaly it starts up left
              tit.add(game);    // adding pur game class to the frame
              tit.setVisible(true);  //to make it visible
              game.start();  // makes the game start
        }


    }
 

Вот ОСНОВНЫЕ

     package Game;
    import java.awt.Canvas;
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.image.BufferStrategy;

    public class Game extends Canvas implements Runnable{

        private static final long serialVersionUID 

= 1550691097823471818L;

    public static final int WIDTH = 640, HEIGHT = WIDTH / 12*9;
    private Thread thread;
    private boolean running = false;
    public Game(){
        new Window(WIDTH, HEIGHT, "TITLE OF THAE 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 amoutOfTicks = 60.0;
        double ns = 1000000000.0/amoutOfTicks;
        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(){

    }

    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();
    }
public static void main(String[] args){

}
}
 

На самом деле есть кое-что, чего я не понимаю, и это serialVersionUID . Я не знаю, что это за материал. Я просто скопировал его из этого источника: https://www.youtube.com/watch?v=1gir2R7G9wsamp;index=4amp;list=PL3j6S0UUuVMRSD1_wCzr2-Yd8h48rUvhsamp;t=647s

Это также источник, который я использую для создания этих кодов (скопированных).

Спасибо, что уделили мне время.

Комментарии:

1. Ваш main метод пуст. Это то, что запускается при запуске программы. Если там ничего нет, то ваша программа просто завершит работу, как только запустится.

2. новая игра (); это все, что вам нужно в основном.

Ответ №1:

Вы ничего не пишете в своем основном методе, поэтому программа ничего не делает.вы должны создать объект Game и объект Window , а затем вызвать метод window в основном методе.

Комментарии:

1. Подумайте о том, чтобы добавить к вашему ответу действительный main.

2. Хорошо, эта проблема решена, но теперь у меня есть еще 2 проблемы.

3. Извините, слишком рано нажал Enter. Итак, первая проблема заключается в том, что в строке с надписью private Thread thread; выдает ошибку в приватном слове. Во-вторых, когда я запускаю его, он говорит, что в строке есть проблема:public static void main(String args[]){ new Game(); }} . Я добавил новую Game();, но это выдает мне ошибку в строке public static void main(String args [])