蛇不';t出现在Java游戏的框架中
我正在尝试用java制作蛇游戏,但是蛇没有出现在屏幕上,我不知道为什么。。。这是我的密码。。。我已经上了三节课了蛇不';t出现在Java游戏的框架中,java,swing,Java,Swing,我正在尝试用java制作蛇游戏,但是蛇没有出现在屏幕上,我不知道为什么。。。这是我的密码。。。我已经上了三节课了 public class SnakeGame extends JFrame { public SnakeGame(){ setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBackground(Color.green); setSize(WIDTH, HEIGHT); setTitle("Snak
public class SnakeGame extends JFrame {
public SnakeGame(){
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBackground(Color.green);
setSize(WIDTH, HEIGHT);
setTitle("Snake Game");
setVisible(true);
setResizable(false);
play p = new play();
add(p);
pack();
}
public static void main(String[] args) {
new SnakeGame();
}
}
public class play extends JPanel implements Runnable{
public static final int WIDTH = 700,HEIGHT = 700;
private ArrayList<SnakeDesign> snake;
public play(){
setPreferredSize(new Dimension(WIDTH, HEIGHT));
snake = new ArrayList<SnakeDesign>();
}
public void paint(Graphics g){
for(int i=0;i<snake.size();i++){
snake.get(i).paintSnake(g);
}
}
@Override
public void run() {
repaint();
}
所以请大家说说为什么蛇没有出现。。。提前谢谢
paint(Graphics g)
方法,而是重写其paintComponent(Graphics g)
方法。原因有很多,其中包括
- 绘制方法负责绘制组件和的边框和子组件,因此,如果更改其图形对象,可能会对组件的边框和子组件产生不必要的、难以调试的副作用
- 默认情况下,JPanel或JComponent的paintComponent方法使用双缓冲,因此,如果您将其用于动画(并且您正在使用),则使用该方法将获得明显更平滑的动画
paintComponent(Graphics g)
覆盖中调用super的super.paintComponent(g)
方法setVisible(true)
lastsnake。添加(…)
在哪里向snake中传递body元素?如果你给你的蛇没有尸体,它会显示什么run()
,因此基本上什么都不做)您不应该重写
paint()
方法,而应该重写paintComponent()
。看不到主题,但试试libGDX或真正的游戏引擎,Swing不是为制作游戏而设计的;)我加了snake.get(i)和paintSnake(g);但还是什么都没有appears@user3605253:但是,你在哪里有snake.add(…)
什么?正如现在所写的,您的蛇的大小将是0,所以您绘制它的for循环将不会起任何作用。
public class SnakeDesign {
private int Xcoor, Ycoor, width, height;
public SnakeDesign(int Xcoor, int Ycoor,int tileSize){
this.Xcoor = Xcoor;
this.Ycoor = Ycoor;
width = tileSize;
height = tileSize;
}
public void paintSnake (Graphics g){
g.setColor(Color.red);
g.drawRect(Xcoor*width, Xcoor*height, width, height);
}