2016-01-28 5 views
0

Я делаю космический шутер в java. Я использую интерфейс Runnable, что означает, что метод run() должен быть вызван автоматически. Внутри метода у меня есть цикл, который продолжает работать, пока кто-то не установит значение boolean running в false. Цикл должен работать с печатью, но это не так. Вот мой код:Игра Loop не работает

package main; 

import javax.swing.JFrame; 
import javax.swing.JPanel; 

public class Game extends JPanel implements Runnable { 

    private static final long serialVersionUID = 1L; 
    public static final int WIDTH = 800; 
    public static final int HEIGHT = 600; 
    public static final String TITLE = "Space Shooter"; 

    private boolean running = false; 
    private Thread thread; 


    public Game() { 

    } 

    private synchronized void start() { 
     if (running) 
      return; 

     running = true; 
     thread = new Thread(); 
     thread.start(); 
    } 

    private synchronized void stop() { 
     if (!running) 
      return; 

     running = false; 
     try { 
      thread.join(); 
     } catch (InterruptedException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     System.exit(1); 
    } 

    @Override 
    public void run() { 
     while (running) { 
      System.out.println("WORKING"); 
     } 
     stop(); 
    } 

    public static void main(String[] args) { 

     Game game = new Game(); 
     JFrame frame = new JFrame(TITLE); 

     frame.setSize(WIDTH, HEIGHT); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setResizable(false); 
     frame.add(game); 
     frame.setVisible(true); 

     game.start(); 

    } 

} 

ответ

2

Вы забыли передать экземпляр Runnable конструктору потока:

thread = new Thread(this); 
+0

Спасибо, это сработало! –