java - Java点阵游戏

标签 java arrays cmd point

我要在java中的cmd(而不是gui)中创建一个游戏,它是一个更大的项目,但现在,我很想知道如何创建一个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);
}   
}

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

最佳答案

创建一个二维数组,有一种方法可以在二维数组中绘制单元格(其中可能包含由单元格的值定义的不同对象)。因此,您可以检查要绘制的方 block ,如果该值为 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");
   }
}

当您收到按键事件时,前往包含人员的单元格,并根据按键将其移动到新的目的地。然后再次绘制迷宫。

关于java - Java点阵游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8230706/

相关文章:

java - 测量连接速度并在 Web 应用程序中显示

java - 当我在 Reducer 中读取它们时,Mapper 中发送的文本/字符串值是错误的

java - 计算特定列的总和时出错

java - 为什么我们需要设置SONAR_RUNNER_OPTS?

arrays - 使用无效数据调用函数FieldValue.arrayUnion()。 FieldValue.serverTimestamp()只能与update()和set()一起使用

java - 为什么我无法将 String[] 传递给等待可变参数的方法

java - 如何在 float 组中的单个元素中标记为空

windows - 如何使用从当前名称中提取的子字符串重命名 Windows 文件

java - 当使用 VSCode 命令编译 C++ 时,它使用的是奇怪的

powershell - 获取休眠状态