Thread/Runnable 没有打电话给 运行
Thread/Runnable doesn't call run
我正在尝试对 Minecraft 2d 版本进行一些测试,但由于我的线程不会调用 运行(),所以无法继续进行。我确实看过很多这样的教程,甚至我自己的一款游戏也使用了这种方法并且它很有效。我基本上是在复制我制作的其他游戏。
package com.bmc.minecraft2d;
import com.bmc.graphicsengine.Window;
import java.awt.Canvas;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferStrategy;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class Minecraft extends Canvas implements Runnable {
private Window window;
private Thread thread;
private Graphics2D g2d;
private void init(){
window = new Window("Minecraft 1.17.1", 800, 600);
thread = new Thread();
thread.start();
}
public Minecraft(){
init();
System.out.println("Got past init.");
}
private void update(){
}
public void addImage(String file, int x, int y, Graphics g, int width, int height, boolean scaleImg) {
Image img;
try {
img = ImageIO.read(new File(file));
if(scaleImg) {
Image scale = img.getScaledInstance(width, height, Image.SCALE_DEFAULT);
g.drawImage(scale, x, y, this);
} else {
g.drawImage(img, x, y, this);
}
} catch (IOException e) {
e.printStackTrace();
}
}
private void render(){
BufferStrategy bs = getBufferStrategy();
if(bs == null){
this.createBufferStrategy(3);
return;
}
Graphics g = bs.getDrawGraphics();
g2d = (Graphics2D) g;
addImage("../../assets/dirt.png",0,0,g,0,0, false);
}
public void run(){
System.out.println("In the game loop.");
while(true){
update();
render();
}
}
public void stop() throws InterruptedException {
thread.join();
}
public static void main(String[] args){
new Minecraft(); // Get out of having to use "static"
}
}
我正在使用 IntelliJ IDEA CE。将来可能会切换回 Eclipse。
好吧,看来我又回答了我自己的问题了。我发现我忘了将游戏添加到 JFrame(我知道为什么我只是喜欢用 jframes 和普通的 java 制作游戏而没有像 glfw 或 lwjgl 这样的库。出于某种原因我只是喜欢从头开始构建我的游戏.)
我正在尝试对 Minecraft 2d 版本进行一些测试,但由于我的线程不会调用 运行(),所以无法继续进行。我确实看过很多这样的教程,甚至我自己的一款游戏也使用了这种方法并且它很有效。我基本上是在复制我制作的其他游戏。
package com.bmc.minecraft2d;
import com.bmc.graphicsengine.Window;
import java.awt.Canvas;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferStrategy;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class Minecraft extends Canvas implements Runnable {
private Window window;
private Thread thread;
private Graphics2D g2d;
private void init(){
window = new Window("Minecraft 1.17.1", 800, 600);
thread = new Thread();
thread.start();
}
public Minecraft(){
init();
System.out.println("Got past init.");
}
private void update(){
}
public void addImage(String file, int x, int y, Graphics g, int width, int height, boolean scaleImg) {
Image img;
try {
img = ImageIO.read(new File(file));
if(scaleImg) {
Image scale = img.getScaledInstance(width, height, Image.SCALE_DEFAULT);
g.drawImage(scale, x, y, this);
} else {
g.drawImage(img, x, y, this);
}
} catch (IOException e) {
e.printStackTrace();
}
}
private void render(){
BufferStrategy bs = getBufferStrategy();
if(bs == null){
this.createBufferStrategy(3);
return;
}
Graphics g = bs.getDrawGraphics();
g2d = (Graphics2D) g;
addImage("../../assets/dirt.png",0,0,g,0,0, false);
}
public void run(){
System.out.println("In the game loop.");
while(true){
update();
render();
}
}
public void stop() throws InterruptedException {
thread.join();
}
public static void main(String[] args){
new Minecraft(); // Get out of having to use "static"
}
}
我正在使用 IntelliJ IDEA CE。将来可能会切换回 Eclipse。
好吧,看来我又回答了我自己的问题了。我发现我忘了将游戏添加到 JFrame(我知道为什么我只是喜欢用 jframes 和普通的 java 制作游戏而没有像 glfw 或 lwjgl 这样的库。出于某种原因我只是喜欢从头开始构建我的游戏.)