为了账号安全,请及时绑定邮箱和手机立即绑定

玩家在数组中的移动

玩家在数组中的移动

POPMUISE 2023-08-16 15:50:46
我是初学者所以请原谅我。我正在尝试制作一个基于文本的游戏。我在让玩家穿过阵列时遇到问题。0 = 空位 p = 玩家[ 0, 0, 0, 0, 0][ 0, 0, 0, 0, 0][ 0, 0, 0, 0, 0][ 0, 0, 0, 0, 0][ 0, 0, p, 0, 0]我想要的结果是,当我输入 1 时,玩家向上移动[ 0, 0, 0, 0, 0][ 0, 0, 0, 0, 0][ 0, 0, 0, 0, 0][ 0, 0, p, 0, 0][ 0, 0, 0, 0, 0]但我认为我的代码显示它是[ 0, 0, 0, 0, 0][ 0, 0, 0, 0, 0][ 0, 0, 0, 0, 0][ 0, 0, p, 0, 0][ 0, 0, p, 0, 0]公共静态无效主(字符串[] args){    //starting player position    int px = 4;    int py = 2;    String player = "P";    String map[][] = new String[5][5];    for(int i = 0; i < map.length; i++)         for (int j = 0; j < map.length; j++) {            map[px][py] = player;            System.out.println(map[i][j]);            int move;            Scanner scanner = new Scanner(System.in);            move = scanner.nextInt();            //up            if(move == 1) {                map[px][py + 1] = player;                printMap(map);            }            //right            if(move == 2) {                map[px + 1][py] = player;                printMap(map);            }            //left            if(move == 3) {                map[px - 1][py] = player;                printMap(map);            }             //down            if(move == 4) {                map[px][py - 1] = player;                printMap(map);            }        }}public static void printMap(String a[][]) {    for ( int i = 0; i < a.length; i++)        for( int j = 0; j < a[i].length; j++) {            System.out.println( a[i][j]);        }
查看完整描述

1 回答

?
慕丝7291255

TA贡献1859条经验 获得超6个赞

对于您的问题,您只需将其设置回零,例如:


//up

if(move == 1) { 

  map[px][py + 1] = "0";

  map[px][py + 1] = player;

  printMap(map);

}

但是您的代码存在几个问题:

  1. 如果你想向上移动,那么你应该从行索引中减去一个,其他方向也是如此(请参见下面的代码)。

  2. 当你声明一个字符串数组时,它的内容将为空,你应该用零(字符串零)初始化它。

  3. 看看我如何打印二维数组,我使用的每一行而print不是println.

  4. 您还需要更新 px/ py 索引,如 @Nexevis 提到的

    请参阅此代码示例:

import java.util.Scanner;


public class Example{

    public static void main(String[] args) {

        //starting player position

        int px = 4;

        int py = 2;

        String player = "P";


        String map[][] = new String[5][5];

        for (int i = 0; i < map.length; i++) {

            for (int j = 0; j < map[0].length; j++) {

                map[i][j]="0";

            }

        }


        for(int i = 0; i < map.length; i++) 

            for (int j = 0; j < map.length; j++) {


                map[px][py] = player;


                //System.out.println(map[i][j]);

                System.out.println("1-move up \n2-move right \n3-move left\n4-move- down");

                int move;

                Scanner scanner = new Scanner(System.in);

                move = scanner.nextInt();


                //up

                if(move == 1) {

                    map[px][py] = "0";

                    map[--px][py] = player;

                    printMap(map);

                }


                //right

                if(move == 2) {

                    map[px][py] = "0";

                    map[px][++py] = player;

                    printMap(map);

                }


                //left

                if(move == 3) {

                    map[px][py] = "0";

                    map[px ][--py] = player;

                    printMap(map);

                }


                //down

                if(move == 4) {

                    map[px][py] = "0";

                    map[++px][py] = player;

                    printMap(map);

                }



            }


    }

    public static void printMap(String[][] a) {

        for ( int i = 0; i < a.length; i++) 

        {

            for( int j = 0; j < a[1].length; j++) 

                System.out.print( a[i][j]+" ");         

          System.out.println();

        }

   }

}



请注意,您应该添加对数组索引的验证以防止 IndexOutOfBound 异常


查看完整回答
反对 回复 2023-08-16
  • 1 回答
  • 0 关注
  • 59 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信