这个简单的Java游戏循环出了什么问题?
我已经试着解决这个问题,或者找到另一种解决方法,但是我无法让它工作。。。 我正在将一个游戏小程序转换成一个应用程序,但我无法让游戏循环正常工作。另外,在NetBeans中,我创建了一个窗口,但即使我将其设置为可见,它也不会显示。如果你有一个关于如何制作简单游戏循环的教程,那就太棒了。我绝望了,请帮帮我 这是我的主课代码这个简单的Java游戏循环出了什么问题?,java,loops,Java,Loops,我已经试着解决这个问题,或者找到另一种解决方法,但是我无法让它工作。。。 我正在将一个游戏小程序转换成一个应用程序,但我无法让游戏循环正常工作。另外,在NetBeans中,我创建了一个窗口,但即使我将其设置为可见,它也不会显示。如果你有一个关于如何制作简单游戏循环的教程,那就太棒了。我绝望了,请帮帮我 这是我的主课代码 package MainClass; import javax.swing.*; public class MainClass implements Runnable{
package MainClass;
import javax.swing.*;
public class MainClass implements Runnable{
Painter panel = new Painter();
JavaPowderToy Screen = new JavaPowderToy();
Thread t = new Thread();
public void run()
{
Initialize();
while(true)
{
try
{
panel.Paint();
Thread.sleep(15);
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
void MainClass()
{
t.start();
}
public static void main(String[] args) {
MainClass Java = new MainClass();
}
private void Initialize()
{
panel.InitializePainting();
new Window().setVisible(true);
}
}
这是我的绘画课:
package thejavapowdertoy;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Toolkit;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.image.BufferedImage;
import javax.swing.JPanel;
public class Painter extends JPanel implements KeyListener{
BufferedImage buffer;
public Painter()
{
setIgnoreRepaint(true);
addKeyListener(this);
setFocusable(true);
}
public void InitializePainting()
{
}
public void Paint()
{
Graphics2D b = buffer.createGraphics();
Graphics2D g = (Graphics2D)this.getGraphics();
b.setColor(Color.red);
b.fillRect(50, 50, 50, 50);
b.dispose();
g.drawImage(buffer, 0, 0, this);
Toolkit.getDefaultToolkit().sync();
g.dispose();
}
public void keyTyped(KeyEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}
public void keyPressed(KeyEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}
public void keyReleased(KeyEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}
}
谢谢您的
main类
实现了Runnable
,因此我假设您希望它由线程运行。然而,线程t
并不知道这一点
您需要将MainClass
实例传递给线程的构造函数:newthread(this)代码>
此外,您的Painter
面板未连接到您创建的窗口,因此它将不可见。尝试创建一个JFrame
或JWindow
并将画师放在其中
void MainClass()
{
t.start();
}
这不是一个构造函数,而是一个方法!这是因为线程未启动。删除void
再看看其他答案。基本上你有两条线。一个是MainClass
本身,然后是MainClass
内部的t
,您能定义“不工作”吗?它在做什么你没想到的事?该怎么办呢?我想你最好回到基础上来-。谢谢,这正是我所需要的(而且我正在学习一个教程,它没有写“这个”,很奇怪)