亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

玩家在數組中的移動

玩家在數組中的移動

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 關注
  • 113 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號