所以我想在我的编程课上为我的最终项目制作一个蛇游戏。我试图使用数组添加到蛇,因为使用对象数组是项目的要求之一。但我无法弄清楚如何让它发挥作用。谁能告诉我我做错了什么?
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
public class FinalApplet extends Applet implements KeyListener {
private Image grass;
private Image mouse;
private Snake[] mySnake = new Snake[100];
private int x;
private int y;
public void init() {
grass = getImage(getCodeBase(), "grass.jpg");
mouse = getImage(getCodeBase(), "mouse.png");
addKeyListener(this);
}
public void update (Graphics g) {
paint(g);
}
public void paint(Graphics g) {
Image buffer = createImage(getWidth(), getHeight());
Graphics z = buffer.getGraphics();
z.drawImage(grass, 0, 0, this);
z.drawImage(mouse, 200, 130, this);
z.setColor(Color.RED);
z.fillRect(x, y, 20, 20);
g.drawImage(buffer, 0, 0, this);
}
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_DOWN) {
y = y + 1;
repaint();
}
else if (e.getKeyCode() == KeyEvent.VK_UP) {
y = y - 1;
repaint();
}
else if(e.getKeyCode() == KeyEvent.VK_LEFT){
x = x - 1;
repaint();
}
else if (e.getKeyCode() == KeyEvent.VK_RIGHT){
x = x + 1;
repaint();
}
}
public void keyReleased(KeyEvent e) {
}
public void keyTyped(KeyEvent e) {
}
}
答案 0 :(得分:0)
我想你的蛇至少以1的长度开始,以便显示它。这意味着您的第一个元素中的数组具有起始坐标。阵列中的所有其他单元格都是空的(或dict
,无论您使用哪个),因此不应在画布上绘制,即不应向用户显示。
一个解决方案可能是每次你的蛇移动时,你更新你的阵列的每个单元格(考虑到每个单元格是你蛇的一部分)及其新位置。
当蛇与“鼠标”的位置重叠时,阵列上的下一个可用单元格应该具有最后一个(最后一个)单元格的最后位置,同时考虑到它不应该移动直到其前一个单元格移动并且只应绘制具有实际值的单元格。
我希望这会有所帮助,但您应该尝试发布更多代码,以便我们可以帮助解决特定的编程问题。