由於某些奇怪的原因,當我嘗試在遊戲中移動角色時,交換「移動」的陣列將不起作用,並且當我嘗試打印遊戲中前兩個動作的當前位置,沒有任何顯示。一般來說,這只是表現奇怪。有人可能向我解釋我做錯了什麼,或者至少我怎麼能做得更好?謝謝。Java陣列:嘗試交換元素期間終端ASCII終端遊戲中的2D陣列功能障礙
代碼:
import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;
public class Adventure {
private Scanner in_file;
private int x_size, y_size, px, py, dx, dy;
private char[][] level;
private boolean game;
public Adventure() {
x_size = y_size = 20;
level = new char[x_size][y_size];
px = py = 1;
dx = dy = 0;
game = true;
}
public static void main(String []args) {
Adventure adv = new Adventure();
adv.load_game();
adv.main_game();
System.out.println("ADVENTURE");
}
public void load_game() {
try {
in_file = new Scanner(new File("level.txt"));
} catch (FileNotFoundException e) {
System.err.println("ERROR: Level could not be loaded!");
System.exit(1);
}
for (int i = 0; i < level.length; i++) {
for (int j = 0; j < level[i].length; j++) {
if (in_file.hasNextInt()) {
int nextInt = in_file.nextInt();
if (nextInt == 0)
level[i][j] = '-';
else if (nextInt == 1)
level[i][j] = '#';
}
}
}
in_file.close();
}
public void new_game() {
}
public void main_game() {
Scanner key = new Scanner(System.in);
Adventure adv_move = new Adventure();
level[px][py] = 'Q';
while (game) {
for (int i = 0; i < level.length; i++) {
for (int j = 0; j < level[i].length; j++) {
System.out.print(level[i][j]);
}
System.out.println();
}
System.out.println();
System.out.print("Enter a letter choice to move ->");
String temp = key.nextLine();
if (temp.equals("w")) {
dx = -1;
dy = 0;
}
else if (temp.equals("a")) {
dy = -1;
dx = 0;
}
else if (temp.equals("s")) {
dx = 1;
dy = 0;
}
else if (temp.equals("d")) {
dy = 1;
dx = 0;
}
else
dx = dy = 0;
System.out.println();
adv_move.move_check();
}
}
public void move_check() { //DYSFUNCTIONAL ARRAY!!!!
System.out.println(level[px][py]);
// System.out.println(level[px+dx][py+dy]);
if (level[px+dx][py+dy] != '#') {
level[px][py] = '-';
px += dx;
py += dy;
level[px][py] = 'Q';
}
else
System.out.print("Move invalid.\n");
}
public void save_game() {
}
}
您可以添加一些註釋,突出顯示特別相關的部分代碼嗎? – Wug 2012-07-18 05:05:40
我添加了一條評論,指出「move_check」方法是遇到問題的地方, – Anwar 2012-07-18 05:13:56
請將您的問題寫成短語,使其聽起來不像「您能爲我調試我的程序嗎?」 – Gabe 2012-07-18 05:15:27