2012年11月18日

Android用ゲーム開発 -7日目-

6日目からの続きです。

キャラクターの移動

6日目で画面を作成したので、キャラクターの移動を行ってみます。
キーを操作したら、FundamentalUIに、
Characterクラスの現在地の変数を変更するようにします。

 FundamentalUI() {
  inputdevice = new Input();
  dungeon = new Map("B1");
  characterlist = new CharacterManagement();
 }

 public String left() {
  Character hero = characterlist.characterlist.get(0);
  int x = hero.Current.getX();
  if (x>0) {
   x = x-1;
  }
  hero.Current.setX(x);
  
  return inputdevice.right();
 }

では、動かしてみましょう。

動きました。

以上。

2012年11月17日

Android用ゲーム開発 -6日目-

時間が空きましたが、5日目からのつづきです。

マップの作成

マップの作成は
Tiled Map Editor を使用しました。
まずチップを作成し、それを元にマップを作ります。


チップの微調整は難しかったです。
さらにキャラクタ画像の作成も行いました。
後にアニメーションもしようと思っているので、こちらは仮のキャラクタ画像です。


ここまで出来たら ActivityにSurfaceViewを追加し、そこに描写します。
Eclipse で SurfaceViewの拡張クラスを追加すると、
レイアウト用のXMLの作成画面に、そのカスタムビューを追加できる項目が増えます。
今回は、 SurfaceViewの拡張クラスの名前をMapViewにしたのでその名前が出ています。


MapView クラスに Tiled Map Editor で作成したデータを読み込みます。
Tiled Map Editorを読み込むライブラリがいくつか公開されていたので、
今回は、TMXLoaderを使用しました。

 public MapView(Context context, AttributeSet attrs) {
  super(context, attrs);
  holder = getHolder();
  //callbackメソッドを登録
  holder.addCallback(this);
  
  mapData = TMXLoader.readTMX(MAP_FILE_NAME, context);
  characterData = TMXLoader.readTMX(CHARACTER_FILE_NAME, context);
  mapImage = TMXLoader.createBitmap(mapData, context, 0, mapData.layers.size());
  characterImage = TMXLoader.createBitmap(characterData, context, 0, characterData.layers.size());
 }

TMXLoader.readTMX() で読み込み、TMXLoader.createBitmap()で Bitmapクラスに変換しています。
また、MapViewクラスは Callback,Runnable インターフェースを継承し、
runメソッド内で描画します。

 public void run() {
  Canvas c = null;
  while (true) {
   try {
    c = holder.lockCanvas();
    if (c != null) {
     int imagesize = 640;
     int viewheight = this.getHeight();
     int viewwidth = this.getWidth();
     float scaleheight = (float)viewheight / (float)imagesize;
     float scalewidth = (float)viewwidth / (float)imagesize;
     Rect src = new Rect(0, 0, imagesize, imagesize);
            Rect dst = new Rect(0, 0, viewwidth, viewwidth);
     c.drawBitmap(mapImage, src, dst, new Paint());
     mMatrix.setScale(scalewidth, scalewidth);
     mMatrix.postTranslate(32*scalewidth*heroX, 32*scalewidth*heroY);
     c.drawBitmap(characterImage, mMatrix, new Paint());
    }
   } finally {
    if (c != null) {
     holder.unlockCanvasAndPost(c);
    }
   }
  }
 }


起動すると、以下のスクリーンショットになります。




7日目へ。

2012年11月16日

2012年11月16日のタスク

今日もアルバイトを行いました。

2012年11月15日

2012年11月15日のタスク

本日はアルバイトを行いました。

Ubuntu 12.04 上の Virtualbox を 4.1から4.2にアップグレードする

Ubuntu 12.04 上の Virtualboxを 4.1から4.2にアップグレードしました。

4.1.x のアップデートの場合は、
Virtualboxの「アップデートを確認」から
ダウンロードしたパッケージファイルを開くだけでアップデートできましたが、
4.1から4.2へのアップグレードでは、それが出来ませんでした。

しかし、アップグレードは簡単です。
いったんVirtualbox 4.1をアンインストールして、
再度Virtualbox 4.2 をインストールするだけです。

仮想ハードディスクや仮想マシンの情報ファイルは消去されないので、以前のまま使えます。


2012年11月14日

2012年11月13日

2012年11月13日のタスク

  • Androidアプリの開発を行いました。