我要在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类,但我在这个过程中失败了......`
答案 0 :(得分:1)
创建一个2D数组,可以在2D数组中绘制一个单元格(可能包含由单元格值定义的不同对象)。因此,您可以检查要绘制的方块,如果值为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");
}
}
当您收到按键事件时,请转到包含人物的单元格,然后根据按键将其移动到新目的地。然后再次画迷宫。
答案 1 :(得分:0)
&#34;一个阵列&#34;绝对是正确的想法 - 二维数组可能是我用来包含网格空间的。但是 - 阵列中会是什么?表示用户移动的空间的对象?那很酷;您将不得不弄清楚如何定义这些空间,并弄清楚如何在屏幕上显示每个空格。
您可能无法使用KeyListener
来检查用户击键,因为KeyListener
是AWT / Swing的一部分,但您需要一种从键盘获取输入的方法。从stdin
阅读是一个简单的方法。您将需要运行一个循环来监听键盘上的用户输入,并移动用户的游戏&#34;从正方形到正方形取决于它们击中的键。