[英]Having a hard time on figuring out how to move my snake constantly
所以我正在創建一個名為蛇的 Java 游戲,我目前在如何讓蛇的起點在最初移動后不斷移動,我正在嘗試使用 thread.sleep 但我很用我'我在錯誤的地方使用它,任何提示/幫助將不勝感激!
import java.awt.event.KeyEvent;
public class snake
{
static double squareX = .5;
static double squareY = .5;
static double squareR = .02;
static double CsquareR = .01;
static double CsquareX = Math.random();
static double CsquareY = Math.random();
public static void drawScene()
{
StdDraw.clear();
StdDraw.filledSquare(squareX, squareY, squareR);
StdDraw.filledSquare(CsquareX, CsquareY, CsquareR);
StdDraw.show(1000/24);
}
public static void updateMotion() throws InterruptedException
{
if (StdDraw.isKeyPressed(KeyEvent.VK_UP))
{
squareY += .01;
Thread.sleep(10);
}
else if (StdDraw.isKeyPressed(KeyEvent.VK_DOWN))
{
squareY -= .01;
Thread.sleep(10);
}
else if (StdDraw.isKeyPressed(KeyEvent.VK_LEFT))
{
squareX -= .01;
Thread.sleep(10);
}
else if (StdDraw.isKeyPressed(KeyEvent.VK_RIGHT))
{
squareX += .01;
Thread.sleep(10);
}
}
public static void main(String[] args) throws InterruptedException
{
while(true)
{
snake.drawScene();
snake.updateMotion();
if (squareX + squareR >= 1 )
{
//TODO: show "you lose" message / stop on edge of square
break;
}
if (squareX - squareR <= 0)
{
//TODO: show "you win" message / stop on edge of square
break;
}
if (squareY + squareR >= 1 )
{
//TODO: show "you lose" message / stop on edge of square
break;
}
if (squareY - squareR <= 0)
{
//TODO: show "you win" message / stop on edge of square
break;
}
}
}
}
不要在按鍵時改變位置,而是一直改變方向並更新位置。
static double xMovement = 0;
static double yMovement = 0;
public static void updatePosition() {
squareX += xMovement;
squareY += yMovement;
}
public static void updateDirection() throws InterruptedException
{
if (StdDraw.isKeyPressed(KeyEvent.VK_UP))
{
xMovement = 0.0;
yMovement = +0.1;
}
else if (StdDraw.isKeyPressed(KeyEvent.VK_DOWN))
{
xMovement = 0.0;
yMovement = -0.1;
}
else if (StdDraw.isKeyPressed(KeyEvent.VK_LEFT))
{
xMovement = -0.1;
yMovement = 0.0;
}
else if (StdDraw.isKeyPressed(KeyEvent.VK_RIGHT))
{
xMovement = +0.1;
yMovement = 0.0;
}
}
public static void main(String[] args) throws InterruptedException
{
while(true)
{
snake.drawScene();
snake.updateDirection();
snake.updatePosition();
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.