java - 贪吃蛇游戏,处理长度增加
问题描述
我正在尝试重新创建蛇游戏,现在我被困在向蛇添加一个新部分,它与苹果碰撞的所有内容
我试图告诉程序绘制一个新的矩形,但 x 轴略微移动,每次我的蛇吃苹果时,这种“移动”会慢慢增加。我的蛇从两部分开始,当我将蛇移向青苹果时,它只移动第二部分而不是绘制一个新的部分,我知道我没有告诉我的绘制方法每次绘制一个新的矩形蛇吃苹果,因为我不知道该怎么做
public void draw(PApplet p) {
// clear area
p.fill(255, 0, 0);
// draw snake head
p.rect(x, y, length, width);
// draw snake body ?
if (upIsDown == true ) {
p.rect(x, y - section, length, width);
} else if(downIsDown == true) {
p.rect(x, y + section, length, width);
} else if(RightIsDown == true) {
p.rect(x - section, y, length, width);
} else if(LeftIsDown == true) {
RightIsDown = false;
p.rect(x + section, y, length, width);
}
}
在我的checkCollision
方法中,section 变量增加了 10
蛇变长了,但我的程序只画了蛇的头和尾巴
解决方案
我在您的代码中添加了注释。
您在 draw 中的代码清除整个游戏区域,然后绘制 2 个矩形。如果要查看 3 个矩形,则需要p.rect()
在该方法中调用 3 次。如果你想看到 10 个矩形,你需要调用它 10 次(所以也许一个循环会很好)。否则重新考虑一开始的调用p.fill()
。
对于循环,您需要将每个身体段的坐标存储在 LinkedList 之类的结构中,其中包含每个段的坐标,并在 draw 方法中绘制所有段。
推荐阅读
- javascript - Javascript - 重用变量来创建 DOM 元素
- vb.net - 使用 ContextMenuStrip 从 TreeView 中删除节点(禁用选择时)
- java - Java Applet - 阻止其他线程更改图形颜色
- aws-lambda - AWS SAM 模板/cloudformation 没有为方法定义集成(服务:AmazonApiGateway
- python-3.x - Python 2 到 Python 3 结构包问题
- material-ui - 您如何影响 MuiCardActrions 组件上的填充
- angular - 尝试在另一个模块中使用一个模块但失败
- reactjs - componentDidMount() 重新加载组件
- python - 寻找植物根部的轮廓
- security - 如何使应用程序自动更新安全