点阵式游戏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);
}
}
这就是我想要的工作方式。我试图创建一个单独的职位类,但在这个过程中我失败了`
# 1 楼答案
“数组”绝对是正确的想法二维数组可能是我用来包含网格空间的。但是阵列中会有什么呢?表示用户移动的空间的对象?这很酷;你必须弄清楚如何定义这些空间,以及如何在屏幕上显示每个空间
您可能无法使用
KeyListener
来检查用户的击键,因为KeyListener
是AWT/Swing的一部分,但您需要一种从键盘获取输入的方法。阅读stdin
是这里最简单的方法。你需要运行一个循环来监听用户在键盘上的输入,并根据用户点击的键将用户的“游戏件”从一个方块移动到另一个方块# 2 楼答案
创建一个二维数组,在二维数组中绘制一个单元格(可能包含由单元格值定义的不同对象)。因此,您可以检查要绘制的正方形,如果值是HUMAN(预定义常量),则在屏幕上的该位置绘制一个人
收到密钥事件后,转到包含该人员的单元格,并根据密钥将其移动到新的目的地。然后再画一次迷宫