Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.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图形赢得';t从draw()函数加载_Java_Applet_Awt - Fatal编程技术网

JAVA图形赢得';t从draw()函数加载

JAVA图形赢得';t从draw()函数加载,java,applet,awt,Java,Applet,Awt,这是snakeGame类的代码。还有一个名为“snake.java”的文件,其中包含用于变量和draw函数定义的访问器和变异器。这是snake.java import java.awt.*; import java.awt.event.*; import java.applet.*; public class snakeGame extends Applet implements Runnable, KeyListener{ private snake snk = new snake();

这是snakeGame类的代码。还有一个名为“snake.java”的文件,其中包含用于变量和draw函数定义的访问器和变异器。这是snake.java

import java.awt.*;
import java.awt.event.*;
import java.applet.*;

public class snakeGame extends Applet implements Runnable, KeyListener{

private snake snk = new snake();
private Thread thread;
private Graphics gfx;
private Image img;

private boolean game = true;

public void init(){
    setBackground(Color.black);
    this.setSize(new Dimension(800,800));
    this.addKeyListener(this);
    img = createImage(800, 800);
    gfx = img.getGraphics();
    thread = new Thread();
    thread.start();
}

public void paint(Graphics g){
    //g.setColor(Color.white);
    //g.fillRect(snk.getX(), snk.getY(), 10, 10);
    snk.draw(g);
}

public void update(Graphics g){
    paint(g);
}

public void repaint(Graphics g){
    paint(g);
}

public void run(){
    while(game){

        //snk.move();
        if(snk.getDiry() == -1){
            snk.y -= 10;
        }
        if(snk.getDiry() == 1){
            snk.y += 10;
        }
        if(snk.getDirx() == -1){
            snk.x -= 10;
        }
        if(snk.getDirx() == 1){
            snk.x += 10;
        }
        repaint();

        try{
            Thread.sleep(200);
        }
        catch(InterruptedException e){
            e.printStackTrace();
        }
    }
}

public void keyPressed(KeyEvent e){
    if (e.getKeyCode() == KeyEvent.VK_UP){
        snk.setDirx(0);
        snk.setDiry(-1);
        System.out.println("UP");
    }
    else if (e.getKeyCode() == KeyEvent.VK_DOWN){
        snk.setDirx(0);
        snk.setDiry(1);
        System.out.println("DOWN");
    }
    else if (e.getKeyCode() == KeyEvent.VK_LEFT){
        snk.setDirx(-1);
        snk.setDiry(0);
        System.out.println("LEFT");
    }
    else if (e.getKeyCode() == KeyEvent.VK_RIGHT){
        snk.setDirx(1);
        snk.setDiry(0);
        System.out.println("RIGHT");
    }
    else{
        System.out.println("Wrong key pressed");
    }
}

public void keyReleased(KeyEvent e){
}

public void keyTyped(KeyEvent e){
}
}
蛇不会出现在小程序窗口中。请帮助我了解代码中的错误以及如何改进代码。我是新的编码和堆栈溢出,所以请原谅我,如果我犯了一些愚蠢的错误

提前谢谢


(1)为什么要编写小程序?如果是老师指定的,请参考。2) 见和。3) 为什么使用AWT。。。。有关放弃AWT组件而支持Swing的许多好理由,请参阅。感谢您的帮助。但老师并没有指定小程序的使用。我正在努力学习java。决定制作一款小蛇gameWell,作为排名第一的“applet助手”,它已经发展到连我都不再费心帮助它们的地步。所以如果需要帮助,请在桌面应用程序中使用Swing GUI工具包。(即基于
JFrame
)。桌面应用程序更容易开发和调试,向用户部署桌面应用程序也很实用,而使用小程序则变得不可能了。请注意,大多数编程基本相同,因此没有必要为了小程序本身而“学习”它们。
import java.awt.*;

public class snake {

public int x, y;
private int dirx, diry;

public snake(){
    this.x = 400;
    this.y = 400;
    this.dirx = 0;
    this.diry = 1;
}

public void draw(Graphics g){
    g.setColor(Color.white);
    g.fillRect(getX(), getY(), 20, 20);
}

public int getX(){
    return x;
}

public int getY(){
    return y;
}

public int getDirx(){
    return dirx;
}

public int getDiry(){
    return diry;
}

public void setDirx(int dirx){
    this.dirx = dirx;
}

public void setDiry(int diry){
    this.diry = diry;
} 
}