public void paintComponent(Graphics g) {
super.paintComponent(g); //required to ensure the panel si correctly redrawn
g.setColor(backgroundColor);
g.fillRect(0, 0, 1280, 1280);
for(int i = 0; i <visibleHeight;i=i+1){
for(int j = 0; j <visibleHeight;j=j+1){
if (((hero.getY()-visibleHeight/2)+i) < 34 && ((hero.getY()-visibleHeight/2)+i) > 0
&& ((hero.getX()-visibleHeight/2)+j) < 34 && ((hero.getX()-visibleHeight/2)+j) > 0){
if (world[(hero.getY()-visibleHeight/2)+i][(hero.getX()-visibleHeight/2)+j] == '1'){
g.drawImage(tree,j*GridToScreenRatio,i*GridToScreenRatio,GridToScreenRatio,GridToScreenRatio,this);
} else if (world[hero.getY()-visibleHeight/2+i][(hero.getX()-visibleHeight/2)+j] == '2'){
g.setColor(trailColour);
g.fillRect(j*GridToScreenRatio, i*GridToScreenRatio, GridToScreenRatio, GridToScreenRatio);
}
}
}
}
}
这是我目前拥有的代码,我不确定如何使字符居中。
答案 0 :(得分:0)
首先,我看到x for循环和j for循环都在使用VisibleHeight。这不是应该是VisibleWidth,另一个是VisibleHeight吗?
关于英雄。如果您希望英雄位于窗口的中心,则必须从循环中删除绘制他的线条,并在循环后使用windowWidth / 2和windowHeight / 2绘制图像,以便绘制地图(作为背景) )和英雄。