有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

点阵式游戏Java

我要用cmd(不是gui)在java中创建一个游戏,这是一个更大的项目,但现在,我想知道如何创建一个12x12网格,在0,0(左上角)生成一个玩家,并使用键移动他

我试图创建一个数组,但似乎没有让移动正常。我是新手,所以欢迎任何建议

package hunters;
import java.io.*;
import java.util.*; 
import java.awt.*;


public class Hunters {

        private static int score;
       private static String player = "P";
       private static String move;
     private static   String emptyfield = "X";
     private static   String [][]a2 = new String [12][12];
 private static int pr,cr;

 public static void paint_board(){
for (int r = 0 ; r < a2.length; r++){
    for (int c= 0; c <a2[r].length; c++){
        a2 [r][c] = emptyfield;
        a2[pr][cr] = player;
        System.out.print(" "+a2[r][c]);
    }
  System.out.println("");

}
  }
  public static void main(String[] args){

      Scanner in = new Scanner(System.in);
score = 0;

 paint_board();
 do{
System.out.println("Input your move");

move = in.nextLine();
if (move.equalsIgnoreCase("w")){
 //move up
   a2[pr-1][cr]= player;
    //repaint
   paint_board();
    //check for collision
    //check for health

}else if(move.equalsIgnoreCase("s")){
    //move down
    a2[pr+1][cr]= player;
    //repaint
    paint_board();
      //check for collision
    //check for health

}else if(move.equalsIgnoreCase("d")){
    //move right
    a2[pr][cr+1] = player;
    //repaint
    paint_board();
      //check for collision
    //check for health

}else if(move.equalsIgnoreCase("a")){
    //move left
    a2[pr][cr-1]=player;
    //repaint
    paint_board();
      //check for collision
    //check for health

}
}while(score !=5);
}   
}

这就是我想要的工作方式。我试图创建一个单独的职位类,但在这个过程中我失败了`


共 (2) 个答案

  1. # 1 楼答案

    “数组”绝对是正确的想法二维数组可能是我用来包含网格空间的。但是阵列中会有什么呢?表示用户移动的空间的对象?这很酷;你必须弄清楚如何定义这些空间,以及如何在屏幕上显示每个空间

    您可能无法使用KeyListener来检查用户的击键,因为KeyListener是AWT/Swing的一部分,但您需要一种从键盘获取输入的方法。阅读stdin是这里最简单的方法。你需要运行一个循环来监听用户在键盘上的输入,并根据用户点击的键将用户的“游戏件”从一个方块移动到另一个方块

  2. # 2 楼答案

    创建一个二维数组,在二维数组中绘制一个单元格(可能包含由单元格值定义的不同对象)。因此,您可以检查要绘制的正方形,如果值是HUMAN(预定义常量),则在屏幕上的该位置绘制一个人

    void paint_cell(int x, int y) {
      if (array[x][y] == HUMAN) {
       printf("H");
      } else if (array[x][y] == ENEMY) {
        printf("E");
      } else if (array[x][y] == EMPTY) {
        printf(" ");
      }
    }
    
    void paint_maze() {
       for (int j = 0; j < 12; j++) {
           printf("|");
           for (int i = 0; i < 12; i++) {
              paint_cell(i,j);
           }
           printf("|\n");
       }
    }
    

    收到密钥事件后,转到包含该人员的单元格,并根据密钥将其移动到新的目的地。然后再画一次迷宫