Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这个简单的Java游戏循环出了什么问题?_Java_Loops - Fatal编程技术网

这个简单的Java游戏循环出了什么问题?

这个简单的Java游戏循环出了什么问题?,java,loops,Java,Loops,我已经试着解决这个问题,或者找到另一种解决方法,但是我无法让它工作。。。 我正在将一个游戏小程序转换成一个应用程序,但我无法让游戏循环正常工作。另外,在NetBeans中,我创建了一个窗口,但即使我将其设置为可见,它也不会显示。如果你有一个关于如何制作简单游戏循环的教程,那就太棒了。我绝望了,请帮帮我 这是我的主课代码 package MainClass; import javax.swing.*; public class MainClass implements Runnable{

我已经试着解决这个问题,或者找到另一种解决方法,但是我无法让它工作。。。 我正在将一个游戏小程序转换成一个应用程序,但我无法让游戏循环正常工作。另外,在NetBeans中,我创建了一个窗口,但即使我将其设置为可见,它也不会显示。如果你有一个关于如何制作简单游戏循环的教程,那就太棒了。我绝望了,请帮帮我

这是我的主课代码

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
,您能定义“不工作”吗?它在做什么你没想到的事?该怎么办呢?我想你最好回到基础上来-。谢谢,这正是我所需要的(而且我正在学习一个教程,它没有写“这个”,很奇怪)