我正在用java制作一个没有界面的pacman模拟器,仅使用控制台打印,并且在打印时遇到了问题。 所以,我有一个 pacman 对象,它有坐标 x 和 y,我有一个带有墙壁和 fruti 的网格,它是矩阵tile[][]。 虽然我只打印 pacman 和网格,但一切都很好。 这是我使用的 toString():
public String toString() {
String s = "";
for(int i=0;i<WIDTH;i++) {
for(int j=0;j<HEIGHT;j++) {
if(pacman.getX() == i && pacman.getY() == j) {
s = s + pacman;
}
else {
s = s+tile[i][j];
}
}
s=s+"\n";
}
return s;
}
这是输出:
####################
#<~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
####################
现在,我创建了一个幽灵数组列表,当我想打印幽灵、吃 bean 人和网格时遇到了一些问题。 我希望代表幽灵的角色位于网格角色之上,就像我对吃 bean 人所做的那样。 我只是想不出在瓷砖上方打印鬼魂的最佳方法。 我正在使用这样的 foreach 循环:
for(Ghost g : ghosts) {
if(g.getX() == i && g.getY() == j) {
s = s + g;
}
}
通常我在控制台中得到这样的打印:
####################
#<~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~3~~~~~2~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~1~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
####################
我该如何解决这个问题?
最佳答案
你需要以某种方式去掉“~”。您可以通过使用二维字符数组而不是字符串来完成此操作,如下所示:
char[][] map = new char[width][height];
然后你可以像这样编辑每个“像素”:
map[y][x] = g;
编辑:然后,您可以通过循环遍历所有字符,将它们写入字符串并在每行后面放置\n 来绘制屏幕。
关于java - 使用 toString() 打印包含多个对象的 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53619798/