Я пытаюсь создать простую игру на Java. Исправлена проблема с JTextPanel, которая не обновлялась до тех пор, пока игровой цикл не завершится, что, конечно же, не является хорошим опытом для игрока.Многопоточность без плотно связанных объектов
Я незнаком с многопоточным, но пытаюсь понять это. Теперь я могу запускать отдельный код в нескольких потоках, но я не могу понять, как взаимодействовать потоки. Очень вероятно, что я пропустил что-то простое, но я не могу найти его, обыскивая, поэтому я бросаю себя на твою милость. Я вися на нитке ...
Класс контроллера и основная резьба. Мне нужна игра для игры и игра для запуска отдельно. Я попытался запустить класс Game в отдельном потоке, но код игры не запущен в gamePanel.
Контроллер:
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
public class Controller_LetterFall{
public static void main(String[] args){
SwingUtilities.invokeLater(new Runnable(){
public void run(){
new MainFrame();
}
});
}
}
А класса мэйнфреймов. Я пытаюсь запустить gameplay() в новом потоке.
package wordFall;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class MainFrame extends JFrame implements Runnable {
private GamePlay game;
private TextPanel gamePanel;
private Header header;
private Player player;
private Dictionary dictionary;
private GamePlay game;
public MainFrame(){
super("Game");
// Set the size of the frame.
setSize(400,600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
// Establish default player.
player = new Player();
dictionary = new Dictionary();
game = new GamePlay();
header = new Header();
gamePanel = new TextPanel();
add(header, BorderLayout.NORTH);
add(gamePanel, BorderLayout.CENTER);
this.game.setBoardInterface(
new BoardInterface(){
@Override
public void redraw(String text) {
gamePanel.appendText(text);
}
});
}
@Override
public void run() {
game.play();
System.out.println("The game is over.");
}
}
Любая помощь будет принята с благодарностью.
Я не вижу нитей в вашем примере. –