读书人

贪食蛇有关问题

发布时间: 2012-02-08 19:52:21 作者: rapoo

求助,贪食蛇问题

Java code
package 贪食蛇;import java.awt.*;import java.awt.event.*;import javax.swing.*;/**随机产生Apple(贪食蛇食物)*/public class Apple extends JPanel{    private int x;    //Apple 随机位置的x坐标    private int y;    //Apple 随机位置的y坐标        public Apple(){        int tempX=(int)(Math.random()*22);        int tempY=(int)(Math.random()*22);        setX(tempX);        setY(tempY);        //创建一个Timer        Timer timer=new Timer(1000,new TimerListener());        timer.start();    }        //设定Apple横坐标    public void setX(int x){        this.x=x;    }        //设定Apple纵坐标    public void setY(int y){        this.y=y;    }        //获取Apple的横坐标    public int getX(){        return this.x;    }        //获取Apple的纵坐标    public int getY(){        return this.y;    }        //画出Apple    protected void paintComponent(Graphics g){        super.paintComponent(g);        g.drawRect(0, 0, 220, 220);                g.fillRect(getX()*10, getY()*10, 10, 10);        System.out.println("x:"+getX()+"\t"+"y:"+getY());                        int tempX=(int)(Math.random()*22);        int tempY=(int)(Math.random()*22);        setX(tempX);        setY(tempY);    }        class TimerListener implements ActionListener{        public void actionPerformed(ActionEvent e){            repaint();        }    }    }

Java code
package 贪食蛇;import javax.swing.*;;public class Snakes1 extends JFrame{    public Snakes1(){        //创建一个Apple对象        add(new Apple());    }    public static void main(String[] args) {        // TODO 自动生成方法存根        Snakes1 frame=new Snakes1();        frame.setTitle("Snakes1");        frame.setSize(250,250);        frame.setLocationRelativeTo(null);        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        frame.setVisible(true);    }}

这是我写贪食蛇的第一步
写的很不顺,我写了个Apple()类贪食蛇的食物,为此我写了个测试,让它每秒钟在画板上随机画一次,
我采用的方法是,就像每次那张纸画个画,然后把原来的盖上
可运行的结果就是每次盖不齐,不知道怎么解决,或者有更好的思路

[解决办法]
建议你需要有多层概念,也就是场景背景与物体背景(蛇苹果)应该是两个不同的图层,更新区域需要做图层覆盖或叠加。
[解决办法]
你的Apple类应该设置Width、Height,在paintComponent的时候只需重画Width、Height覆盖的区域。

不过我不是太理解你说的“盖不齐”,能不能截张图来看看?

读书人网 >J2SE开发

热点推荐