使用toString()打印具有多个对象的地图

时间:2018-12-04 19:04:57

标签: java tostring

我正在使用Java在不带界面的情况下制作pacman模拟器,仅使用控制台打印,而在打印时遇到问题。 因此,我有一个对象pacman,其坐标为x和y,我有一个带有墙和fruti的网格,它是矩阵tile [] []。 当我只打印吃豆人和网格时,一切正常。 这是我使用的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;
    }

这是输出:

####################
#<~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
####################

现在,我创建了一个重影数组列表,当我要打印重影,pacman和网格时遇到一些问题。 我希望代表鬼魂的角色在网格角色上方,就像我对吃豆人所做的那样。 我只是想不出在砖块上方打印鬼影的最佳方法。 我正在像这样使用foreach循环:

for(Ghost g : ghosts) {
  if(g.getX() == i && g.getY() == j) {
        s = s + g;
  }
}

通常,我会在控制台中这样打印:

####################
#<~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~3~~~~~2~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~1~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~#
####################

我该如何解决?

2 个答案:

答案 0 :(得分:1)

您需要以某种方式消除“〜”。您可以通过使用2d char数组而不是字符串来做到这一点,例如:

char[][] map = new char[width][height];

然后您可以像这样编辑每个“像素”:

map[y][x] = g;

编辑:然后,您将通过遍历所有字符,将它们写入字符串并在每行之后放置\ n来绘制屏幕。

答案 1 :(得分:0)

事实证明,这比我想象的要棘手,但是我认为您可以有条件地gulp.task('nodemon', ['sass'], function(cb) { var started = false; consoleLog('nodemon started'); return nodemon({ //HERE REMOVE THE COMMENT AT THE BEGINING OF THE LINE YOU NEED //exec: 'node --inspect --debug-brk node_modules/gulp/bin/gulp.js', exec: 'node --inspect --debug-brk', //exec: 'node --inspect', script: path.server, ignore: ['*/gulpfile.js', 'node_modules/*'], verbose: true }).on('start', function() { if (!started) { cb(); started = true; } }).on('restart', function() { consoleLog('nodemon restarted the server'); });}); 行处理(内部continue循环)来解决问题。不过,您必须将鬼魂放入j块中。未经测试:

else