распечатать 2d массив в виде сетки и случайным образом выбрать один в качестве сундука, затем переименовать это значение в C

#java #arrays #2d

#java #массивы #2d

Вопрос:

В настоящее время он у меня есть, поэтому он печатает сетку 2 на 2 и переименовывает мою позицию в P, а все остальное в — и он скрывает сундук, пока я не наступлю на него и не спрошу, хочу ли я открыть сундук, затем завершает игру, но я хочу, чтобы он переименовал случайно сгенерированный сундук в C, чтобы я мог видеть в сетке, где он находится, может кто-нибудь, пожалуйста, помочь мне с этой проблемой

         /**
     * Auto Generated Java Class.
     */
    import java.util.*;
    public class Adventure {

      public static final int rows= 2;
      public static String tile = "";
      public static final int cols= 2;
      public static String input = "";
      public static boolean run = true;
      public static String[][] map = new String[rows][cols];
      public static int xpos = 0;
      public static int ypos = 0;
      public static Random gen = new Random();
      public static final  int xx = gen.nextInt(rows);
      public static final  int yy = gen.nextInt(cols);



      public static void main(String[] args) { 



        for(int x = 0; x < rows; x  ) {
          for(int y = 0; y < cols; y  ) {
            map[x][y] = "you see nothing, on the fields of justice";
          }
        }


        map[xx][yy] = "You find a chest: Open?";


        while(run) {
          displayMap();

          System.out.println(map[xpos][ypos]);

          input = userinput();
          input = input.toLowerCase();

          if(input.equals("w")) {
            if (ypos < cols - 1) {
              ypos  ;
            }else{
              System.out.println("You're at the edge of the map");
            }
          }else if(input.equals("d")) {
            if (xpos < rows - 1) {
              xpos  ;
            }else{
              System.out.println("You're at the edge of the map");
            }

          }else if(input.equals("s")) {
            if (ypos > 0) {
              ypos--;
            }else{
              System.out.println("You're at the edge of the map");
            }

          }else if(input.equals("a")) {
            if (xpos > 0) {
              xpos--;
            }else{
              System.out.println("You're at the edge of the map");
            }

          }else if(input.equals("open")) {
            if(map[xpos][ypos].equals("You find a chest: Open?")){
              System.out.println("You find a sword");
              System.out.println("()==[:::::::::::::>");
              run = false;

            }else{
              System.out.println("There's nothing to open");
            }
          }else {
            System.out.println("Wrong direction, W , A, S , D");
          }

        } 
      }
      public static String userinput(){
        System.out.println("Which direction do you want to move: w , a ,s ,d ? ");
        Scanner keyboard = new Scanner(System.in);
        return keyboard.nextLine();
      } 





      public static void displayMap() {


        for (int y = cols - 1; y >= 0; y--) {
          for (int x = 0; x < rows; x  ) {

            if (y == ypos amp;amp; x == xpos) {
              tile = tile   "P";

            }


//Heres where i want to rename the chest to 'C' on the grid
            else if (xx amp;amp; yy) {
              tile = tile   "C";
            }
            else{
              tile = tile   "-";
            }
      }
      System.out.println(tile);
      tile = "";
    }
  }
}
  

Ответ №1:

Замените else if (xx amp;amp; yy) на else if (y==yy amp;amp; x==xx) . Это простая ошибка.

Комментарии:

1. Спасибо! я знал, что это будет так просто, но я не мог этого увидеть