2015-04-12 22 views
0

我在我的程序中遇到了一个问题。我正在做一个小小的男人项目。基本上我试图在已经画出的迷宫上展示药片。在图形前面显示图像 - 简单方法 -

所以迷宫是一个g2图形,我用一个简单的txt文件将数字迷宫转换成图形。

就是我要告诉该程序是为以下几点:

  • 如果你打一个“1”你把路(黑),
  • 如果你打一个“2”你把丸(进口药片图像),并
  • 如果你打一个“3”你把一个超级药丸(进口superpill图像)

这是这是需要更多的细节

代码的一部分
@Override 
public void draw(Graphics g) { 

    for(int y=0;y<nbLin;y++){ 

     for(int x=0;x<nbCol;x++){ 

      if(charAt(x,y)!='0'){ 
       g.fillRect(x*STEP-14,y*STEP-14,28,28); // put a road 
      } 
      if(charAt(x,y)=='2'){ 
       g.drawImage(pill.getSubimage(0,0,28,28),x*STEP-14,y*STEP-14,null);// put a pill 

      } 

      if(charAt(x,y)=='3'){ 
       g.drawImage(superpill.getSubimage((frame2/2)*30,0,28,28),x*STEP-14,y*STEP-14,null); //put a super pill 

      } 
     } 
    } 

如果我走这条线:

g.fillRect(x*STEP-14,y*STEP-14,28,28) 

为什么我乘以STEP坐标的原因仅仅是因为我用同样的STEP乘以屏幕尺寸,所以我不得不改变所有的新点的坐标我相信相同的比例。

我减去14的原因是由于pacman的大小是28,所以我只是从每个点减去一半的pacman大小以便围绕他围绕road(Rect)居中。

请注意,subImage部分在这种情况下并不真正相关。

针对这个问题的解决方案,我认为将所有的药丸图像放在前面。问题是我没有找到一个简单的方法来做到这一点。

+0

您是否在绘制药丸之前绘制背景? – user4759923

+0

“这个问题的解决方案” - 你没有说明问题所在。 – RealSkeptic

+0

我想这个问题的答案是前后都是由于maze.txt结构,例如当程序导入一个药丸时,如果它碰到一个'1',那么它会填充背景,发生90% –

回答

0

我的问题的解决方案很简单我认为这将是很好的分享给你,如果有人遇到同样的问题,你只需要把其他循环,以绘制图像基本上我填充矩形在相同我打印图像的时间,所以我只需要在两个不同的循环中分开两个操作