■グラフィックの読み込みと表示

Javaゲームを含めて、いくらすばらしいソフトが組めたとしても、キャラが○や□では楽しさも半減してしまいます。ここでは、Javaでのグラフィックファイルの読み込みと表示方法について解説します。
但し、元ファイルは結構大きいので抜粋して説明しています。詳細はオリジナルのソースコードと見比べて勉強してください。

↑元ネタファイルはこちら

STEP.1 イメージ領域を準備します。

 名前は後でわかりやすい様につけましょう。
 JBuilder等を使ってると自動入力が利くので名前はある程度長くてもいいと思います。

Image ShipImage;
Image UfoImage;
Image InvederImage[] = new Image[7];

 ここで、インベータのイメージは切り替えてアニメ効果を出したいので配列で読み込んでいます。


STEP.2 用意したイメージ領域にイメージファイルを読み込みます。

 int()の中にデータ読み込み処理を入れてもいいのですが、ここでは、dataload()という関数を作って
 そこで画像ファイルや音ファイルをロードしています。dataload()はint()から読み出します。

public void dataload() {
  MediaTracker mt = new MediaTracker(this);

  TitleImage = getImage(getCodeBase( ), "image/title.jpg");
  mt.addImage(TitleImage, 0);
  UfoImage = getImage(getCodeBase(),"image/ufo.gif");
  mt.addImage(UfoImage, 0);
  ShipImage = getImage(getCodeBase(),"image/ship.gif");
  mt.addImage(ShipImage, 0);
  for(int i=1 ; i<= 6 ;i++){
     InvederImage[i] = getImage(getCodeBase(),"image/inv"+i+".gif");
     mt.addImage(InvederImage[i] , 0);
  }

ココで以下のキャラクタを読み込んでいます
UfoImage image/ufo.gif
ShipImage image/ship.gif
InvederImage[] image/inv1.gif〜inv7.gif


  try{ //データを読み込むまで
    mt.waitForID(0); //処理を止めています。
    } catch(InterruptedException e) { //
    showStatus(""+e); //
    }
  }

 注意)try以下のデータ読み込み処理を忘れるとキャラが表示されないのにゲームが進んでいるという
  つらい目にあいます(経験者は語る)。



STEP3.チラツキなく表示する。

 ちらつき無しで表示する手順としては、
  @始めに裏画面を作って、そこに必要なグラフィックを書き込む。
  A書き込みが終わったら正規の画面に切り替える。

 先ず、イメージ領域uraを宣言します。

 Image ura;   //イメージ領域「ura」の宣言
 Graphics gc2; //Graphics オブジェクトを宣言
ura= createImage(300,400); //裏のイメージ領域「ura」のサイズを決める
gc2= ura.getGraphics(); //裏のイメージ領域「ura」に絵を描けるようにする

 ここで作ったイメージ領域に、グラフィックデータなどを書き込んでいきます。

 public void paint(Graphics gc){

 たとえばUfoの表示は以下の様になります。
if (ufo.getLife() == 1) { ココではUfoにLifeというパラメータを持たせてUfoが発生している(Life==1)の時だけ表示するようにしています。
尚、正規のものはUfoがクラス化されているので少し異なります。それはまた別の機会に説明します。
gc2.drawImage(UfoImage,px,py,this);
}

 スコア-などの表示もします。

 gc2.setColor(new Color(255,255,255))
 gc2.drawString("Your score is " + (new Integer(score)).toString() +"0"+ "points." , 80,280);


最後に、正規のイメージ領域にUraをコピーして表示が完成します。
 gc.drawImage(ura, 0, 0, this); // 実際に表示するところ

といった感じです。これでグラフィック表示が取り込めると思います。
次回は、サウンドファイルを説明したいと思います。
Copyright (C) 錬金術師Masa
更新:2005年05月03日