gpt4 book ai didi

java - 尝试遍历二维数组,但没有获得正确的值?

转载 作者:行者123 更新时间:2023-11-30 08:12:52 26 4
gpt4 key购买 nike

所以目前我正在制作一款迷宫游戏,当然,要成为一款迷宫游戏,它就必须有墙。墙壁需要阻止玩家越过它们。我在检查碰撞时遇到问题。它在某些地方有效,而在其他地方则无效。我当前的方法是遍历我的二维数组,通过将当前的 x 和 y 除以 50 来查找玩家尝试继续的数字,然后使用这两个数字来尝试查看玩家是否会与墙壁碰撞或不。发生的情况是,它会阻止玩家向某些墙壁移动,而有些则不会。此外,它还会在没有墙壁的地方停止玩家(该值为 2)。我觉得数学有些困惑,但我不知道是什么。以下是我如何制作迷宫的代码,以及制作迷宫的数组:

private int[][] mazeWalls = { //top of the maze
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 2, 2, 2, 2, 2, 2, 1, 2, 1},
{1, 2, 2, 2, 2, 2, 2, 1, 2, 1},
{1, 2, 2, 2, 2, 2, 2, 1, 2, 1},
{1, 1, 1, 1, 2, 2, 2, 2, 2, 1},
/*left side*/{1, 2, 2, 2, 2, 2, 2, 2, 2, 1}, //right side
{1, 2, 2, 2, 2, 2, 2, 1, 2, 1},
{1, 2, 2, 2, 2, 2, 2, 1, 2, 1},
{1, 2, 2, 2, 2, 2, 2, 1, 2, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1}
//bottom of the maze
};

public void paintMaze(Graphics g){
for(int row = 0; row < mazeWalls.length; row++){ //example of loops
for(int col = 0; col < mazeWalls[row].length; col++){ //getting the positions set up
if(mazeWalls[row][col] == 1){
g.setColor(Color.RED); //color of the walls
g.fillRect(col * 50, row * 50, 50, 50); //col times 50 is the x coordinate, and row times 50 is the y coordinate
}
}
}
}

以下是我如何检查同一类中的碰撞的代码:

public void collisionChecker(int playerX, int playerY){ //takes the user's location and then checks if they are running into the wall
if(mazeWalls[playerX / 50][playerY / 50] == 1 ){
setCollision(true);
}
else if(mazeWalls[playerX / 50][playerY / 50] != 1){
setCollision(false); //just in case
}
}

我觉得它应该可以工作,但由于某种原因(我认为这是除玩家坐标后的数字,或者其他什么)它没有。

最佳答案

按照惯例,二维数组中的第一个索引是行索引,第二个索引是列索引,因此您的坐标是错误的:

public void collisionChecker(int playerX, int playerY){ //takes the user's location and then checks if they are running into the wall
if(mazeWalls[playerY / 50][playerX / 50] == 1 ){
setCollision(true);
}
else if(mazeWalls[playerY / 50][playerX / 50] != 1){
setCollision(false); //just in case
}
}

这段代码可以简化为

public void collisionChecker(int playerX, int playerY){ //takes the user's location and then checks if they are running into the wall
setCollision(mazeWalls[playerY / 50][playerX / 50] == 1);
}

关于java - 尝试遍历二维数组,但没有获得正确的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30115743/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com