Java Android游戏逻辑问题

Java Android游戏逻辑问题,java,android,Java,Android,我目前正在创建一个游戏,我想我知道为什么会发生这样的问题,但不完全确定,即使我知道,也不知道如何解决。 我有一个10 x 10的2D数组,还有一个“玩家”类,它占据了一个平铺。 现在,我已经创建了2个播放器实例,并通过滑动移动它们。 在边缘周围,我放置了玩家无法穿过的“墙”,一切正常,直到我移除一堵墙。 一旦我移除一堵墙并将角色/玩家移动到屏幕边缘,玩家就不能再往前走了。 问题出现在这里,第二个播放器实例不在屏幕的边缘,但从第一个位于边缘的“播放器”实例中取2个瓦片。 如果我试着将它们向边缘的方

我目前正在创建一个游戏,我想我知道为什么会发生这样的问题,但不完全确定,即使我知道,也不知道如何解决。 我有一个10 x 10的2D数组,还有一个“玩家”类,它占据了一个平铺。 现在,我已经创建了2个播放器实例,并通过滑动移动它们。 在边缘周围,我放置了玩家无法穿过的“墙”,一切正常,直到我移除一堵墙。 一旦我移除一堵墙并将角色/玩家移动到屏幕边缘,玩家就不能再往前走了。 问题出现在这里,第二个播放器实例不在屏幕的边缘,但从第一个位于边缘的“播放器”实例中取2个瓦片。 如果我试着将它们向边缘的方向进一步移动,我知道第一个实例的玩家不会移动或做任何事情,但第二个实例的玩家仍然应该移动,但它不会

这是用户刷卡时执行的代码:

if (player.getArrayX() - 1 != player2.getArrayX()) {
    player.moveLeft();
} else if (player.getArrayX() - 1 == player2.getArrayX() && player.getArrayY() != player2.getArrayY()) {
    player.moveLeft();
}

if (player2.getArrayX() - 1 != player.getArrayX()) {
    player2.moveLeft();
} else if (player2.getArrayX() - 1 == player.getArrayX() && player2.getArrayY() != player.getArrayY()) {
    player2.moveLeft();
}
在玩家类中,我有:

public void moveLeft() {
    if (alive) {
        switch (levelMaster.getLevel1(getArrayX() - 1, getArrayY())) {
        case 0:
            break;
        case 1:
            subX(); // basically moves player left
            setArrayX(getArrayX() - 1); // shifts x coord of player 1 within tilemap
            Log.d("semajhan", "x: " + getArrayX());
            break;
        case 9:
            subX();
            setArrayX(getArrayX() - 1);
            setAlive(false);
            break;
        }
    }
}

非常感谢您对此事的任何帮助或进一步的见解。

通过添加if-else语句来解决:

public int getLevel1(int i, int j) {

    int[][] level = {
            {1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
            {1, 1, 1, 0, 0, 1, 0, 1, 1, 1},
            {1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
            {1, 0, 1, 1, 1, 1, 1, 1, 0, 1},
            {1, 0, 1, 1, 1, 1, 0, 1, 0, 1},
            {1, 0, 1, 1, 0, 1, 0, 1, 0, 1},
            {1, 0, 1, 1, 0, 1, 1, 1, 0, 1},
            {1, 0, 1, 1, 1, 1, 1, 1, 0, 1},
            {1, 0, 1, 1, 0, 1, 1, 1, 0, 1},
            {1, 0, 1, 1, 0, 1, 8, 1, 0, 1},
            {1, 0, 9, 1, 1, 1, 0, 1, 0, 1},
            {1, 0, 1, 1, 1, 1, 0, 1, 0, 1},
            {1, 0, 1, 1, 1, 1, 1, 1, 0, 1},
            {1, 0, 0, 0, 0, 0, 0, 0, 0, 1},
            {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}
    };
    if (i >= 0 && i <= 9 && j >= 0 && j <= 14) {
        return level[j][i];
    } else {
        return 10;
    }
}
public int getLevel1(int i,int j){
int[][]级别={
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 0, 0, 1, 0, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 0, 1, 1, 1, 1, 1, 1, 0, 1},
{1, 0, 1, 1, 1, 1, 0, 1, 0, 1},
{1, 0, 1, 1, 0, 1, 0, 1, 0, 1},
{1, 0, 1, 1, 0, 1, 1, 1, 0, 1},
{1, 0, 1, 1, 1, 1, 1, 1, 0, 1},
{1, 0, 1, 1, 0, 1, 1, 1, 0, 1},
{1, 0, 1, 1, 0, 1, 8, 1, 0, 1},
{1, 0, 9, 1, 1, 1, 0, 1, 0, 1},
{1, 0, 1, 1, 1, 1, 0, 1, 0, 1},
{1, 0, 1, 1, 1, 1, 1, 1, 0, 1},
{1, 0, 0, 0, 0, 0, 0, 0, 0, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1}
};

如果(i>=0&&i=0&&j)有这么多问题……什么是
player.getArrayX()
。什么是
subX()
setArray()
做什么。
getLeve1
返回什么。现在这个问题完全无法回答,看起来你的设计相当混乱。getArrayX()返回player.subX()的x坐标减去平铺宽度,setArrayX()设置玩家的新x坐标,getLevel返回位置(x,y)处的2d平铺地图id。我真的不知道这些与我问的问题有什么关系,因为所有这些方法都工作得很好。我只是想知道玩家实例是否因为第一个玩家实例撞到了平铺贴图的边缘而没有移动。我仍然对什么
subX()感到困惑
是。另外,瓷砖贴图ID是什么意思?我猜0是一堵墙,1是一个开放空间,9表示坐标无效?subX()所做的就是从“player”的x位置减去瓷砖的宽度,以便玩家移动。瓷砖ID是:0 wall,1 walkable,9只是一些不必要的东西。