天天看點

TankWar 單機(JAVA版) 提前優化 圖形化

有人給我說畫的坦克太難看了   本來我是打算在最後在用圖檔的

既然這樣  那麼在後面我們就使用圖檔吧

所有圖檔都在源代碼裡面 請自己下載下傳  在最下面

到目前我們用到圖檔的地方隻有子彈,敵方坦克和我方坦克的八個方向 

在這裡我們使用ToolKit工具箱裡面的getImage方法來讀取本地圖檔  當然ImageIO也行  自己選擇

首先tank類執行個體化一個ToolKit對象

//toolKit工具箱
  private Toolkit tk=Toolkit.getDefaultToolkit();      

我們要重新寫Tank類的draw方法  以前的畫圖代碼可以注釋掉了

修改為如下圖

public void draw(Graphics g) {
    String path="Image/tank_";
    if(!good)
      path="Image/tanks_";
    path+=ptDir.toString()+".png";
    Image img=tk.getImage(path);
    width=img.getWidth(TankClient.tc);
    height=img.getHeight(TankClient.tc);
    g.drawImage(img, x, y, width, height, TankClient.tc);
  }      

其中TankClient.tc為當轉換了更多圖像時要通知的對象 我的了解就是圖檔要顯示的父容器。。。瞎了解的

tc就是我們程式啟動時執行個體化的一個對象

public static void main(String[] args) {
    // 啟動視窗
    tc=new TankClient();
  }      

然後運作結果:

TankWar 單機(JAVA版) 提前優化 圖形化

剩下就是對子彈的圖形化了  同樣的原理

修改draw方法

// 子彈的繪制
  public void draw(Graphics g) {
    //判斷子彈是否撞擊到坦克
    judgeHitTank();
    String path="image/bullet1.gif";
    if(!good){
      path="image/bulletBoss.gif";
    }
    Image img=tk.getImage(path);
    //重設子彈的寬高
    width=img.getWidth(TankClient.tc);
    height=img.getHeight(TankClient.tc);
    g.drawImage(img, x, y, width, height, TankClient.tc);
  }      

運作結果如下:

繼續閱讀