【发布时间】:2012-01-04 01:36:48
【问题描述】:
我要在 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 类,但我在这个过程中失败了......`
【问题讨论】:
-
想想你的模型。您可能有类似 new Room[12][12] 数组的东西,其中 Room 可以有一个 Player 对象。移动将需要一些简单的算术和越界检查。发布一些您拥有的代码,我们可以帮助解决您的运动问题。
-
@ChrisArom:虽然您应该发布代码,但您应该发布最简洁地传达问题意图的代码。我建议尝试减少不必要的代码,以便更好地理解您的观点并提出更好的问题。