ラベル Android の投稿を表示しています。 すべての投稿を表示
ラベル Android の投稿を表示しています。 すべての投稿を表示

2012年11月19日

Android を録画する

このブログで、作成中のAndroidアプリの動作ムービーを公開していますが、
その時に使用しているツールは、androidscreencastです。

http://code.google.com/p/androidscreencast/


開発環境を既に構築しているのなら、エミュレーターを起動後に、
androidscreencastで公開されている以下のURIをクリックすると起動します。

http://androidscreencast.googlecode.com/svn/trunk/AndroidScreencast/dist/androidscreencast.jnlp

メニューの「Record」をクリックすると、録画が始まります。
録画がとても簡単でした。

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年10月27日

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

4日目からの続き。


ユニットテスト

とりあえず、起動できる段階になったので、ユニットテストの環境を整えます。
まず、 Android Test Project を作成します。
プロジェクト名は、テストするプロジェクト名の後に"Test"をつけます。




Select Test Target で、テスト対象のプロジェクトを指定します。
ここでは、Tricorogue を選択します。



プロジェクトの作成が終わったら、テスト対象のソースコードの上で右クリックします。
右クリックしたら、JUnit テストケースを選択します。選択すると「新規JUnit テストケース」ウィンドウがポップアップします。



「新規JUnit テストケース」ウィンドウがポップアップしたら、「新規JUnit4 テスト」を選択し、
ソースフォルダを TricorogueTest/src フォルダを選択します。
JUnit4のビルドパスも追加します。








あとは、ソースコード毎にユニットテストを書いていきます。
今回は、Point,Mapクラスのテストを書きました。

6日目

2012年10月25日

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

3日目からの続き。

抽象UI

フレームワークは便利だけれど、縛られると、新しいフレームワークに乗り換えができなくなってしまいます。やっぱり、カッコいいフレームワークが出たら、試して見たいしね。

フレームワークとの接点を局所化したいので、抽象UIを作ります。
RPGなので、マップと入力を用意し、抽象UIにつなげます。


public class FundamentalUI {
 private Input inputdevice;
 private Map dungeon;
 
 FundamentalUI() {
 }

 public String left() {
  return inputdevice.left();
 }
 
 public String right() {
  return inputdevice.right();
 }
 
 public String up() {
  return inputdevice.up();
 }
 
 public String down() {
  return inputdevice.down();
 }
 
 public String upperleft() {
  return inputdevice.upperleft();
 }
 
 public String upperright() {
  return inputdevice.upperright();
 }
 
 public String lowerleft() {
  return inputdevice.lowerleft();
 }
 
 public String lowerright() {
  return inputdevice.lowerright();
 }
 
 public String decision() {
  return inputdevice.decision();
 }
 
 public Map getDungeon() {
  return this.dungeon;
 }
}


これを、Activityにつなぎます。

dispatchKeyEventメソッドをオーバーライドします。



@Override
    public boolean dispatchKeyEvent(KeyEvent event) {
     TextView textView = (TextView) findViewById(R.id.Helloworld);
     FundamentalUI fundamentalUI = new FundamentalUI();
     if (event.getAction() == KeyEvent.ACTION_UP) {
      switch (event.getKeyCode()) {
      case KeyEvent.KEYCODE_DPAD_UP:
      case KeyEvent.KEYCODE_K:
       textView.setText(fundamentalUI.up());
       return true;

      case KeyEvent.KEYCODE_DPAD_DOWN:
      case KeyEvent.KEYCODE_J:
       textView.setText(fundamentalUI.down());
       return true;

      case KeyEvent.KEYCODE_DPAD_LEFT:
      case KeyEvent.KEYCODE_H:
       textView.setText(fundamentalUI.left());
       return true;

      case KeyEvent.KEYCODE_DPAD_RIGHT:
      case KeyEvent.KEYCODE_L:
       textView.setText(fundamentalUI.right());
       return true;

      case KeyEvent.KEYCODE_Y:
       textView.setText(fundamentalUI.upperleft());
       return true;

      case KeyEvent.KEYCODE_U:
       textView.setText(fundamentalUI.upperright());
       return true;

      case KeyEvent.KEYCODE_B:
       textView.setText(fundamentalUI.lowerleft());
       return true;
       
      case KeyEvent.KEYCODE_N:
       textView.setText(fundamentalUI.lowerright());
       return true;

      case KeyEvent.KEYCODE_DPAD_CENTER:
       textView.setText(fundamentalUI.decision());
       return true;
   default:
    break;
      }
     }
     return super.dispatchKeyEvent(event);
    }



マップは、1と0の配列とし、画面にとりあえず、表示させています。





5日目へ。


2012年10月24日

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

2日目の Git の準備が終わったら、
3日目は
  • ビルドしたアプリケーションの起動の仕方
です。


起動の仕方

起動の仕方はとても簡単。
最初にエミュレーターの起動をします。

まずは、 Android Virtual Device Manager を起動します。クリックすると「Android Virtual Device Manager」がポップアップします。



「Android Virtual Device Manager」がポップアップしたら「開始」ボタンをクリックします。
クリックすると、Androidが起動します。



次にアプリケーションを実行させます。
プロジェクトツリーの上で右クリックし、「実行」-「2 Androidアプリケーション」をクリックします。
クリックすると、Android エミュレータが起動し、その上でアプリケーションが実行されます。




4日目へ。

2012年10月23日

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

1日目のプロジェクトの準備が終わったら、
2日目は、
  • Gitへの登録です。

Gitへの登録

プロジェクトにGitを導入します。
プロジェクトのトップディレクトリで右クリックします。右クリックするとメニューが出てくるので、「チーム」をクリックします。クリックすると「プロジェクトの共用」画面に遷移します。



「プロジェクトの共用」画面に遷移したら、「Git」を選択します。
その後「次へ」をクリックします。クリックすると「Gitのリポジトリ構成」画面に遷移します。



「Gitのリポジトリ構成」画面に遷移したら、「Use or create repository in parent folder of project」チェックボックスにチェックを入れます。チェックを入れると「Gitリポジトリー・ロケーションの選択」画面に遷移します。



「Gitリポジトリー・ロケーションの選択」画面に遷移したら、中央に表示されているパスをクリックします。クリックすると「リポジトリーの作成」ボタンが有効になります。



「リポジトリーの作成」ボタンが有効になったら、 「リポジトリーの作成」をクリックします。
クリックするとリポジトリーの項目にパスが追加され、「完了」ボタンが有効になります。



 「完了」ボタンが有効になったら、「完了」ボタンをクリックします。
クリックすると、Gitのリポジトリが生成されます。



自動生成されるファイルを除外する

リポジトリで管理する必要のない自動生成されるファイルを除外するために
 .gitignore を追加します。
プロジェクトのルートディレクトリに   .gitignore を追加します。
.gitignoreの内容は、以下のページを参考にしました。
http://slumbers99.blogspot.jp/2012/01/eclipse-android-gitignore.html



空フォルダをGitで管理する

Git はフォルダの管理は行わないため、空フォルダの中に適当なファイルを入れて
空フォルダを再現できるようにします。
その際のファイル名は慣例で、 .gitkeep となっているようです。



索引に追加・コミット

最後にGitで add と commit をします。





3日目へ。


2012年10月22日

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

Android用のゲームの開発を少しずつ公開していきたいと思います。

1日目は、
  • プロジェクトの作成
です。


プロジェクトの作成

まず、Eclipseを起動し、「ファイル-新規-プロジェクト」と選択し、クリックします。
クリックすると、「新規プロジェクト」ウィンドウが開きます。



「新規プロジェクト」ウィンドウが開いたら、「Android - Android Application Project」を選択します。
その後に、同じ画面の「次へ」ボタンをクリックします。
クリックすると「New Android Application」画面に遷移します。



「New Android Application」画面に遷移したら、画面に表示された項目をすべて入力します。
  • Application Name
  • Project Name
  • Package Name
  • Build SDK
  • Minimum Require SDK
  • Create custom launcher icon (任意)…私はチェック
  • Mark this project as a library (任意)…私はチェックなし
  • ワークスペース内にプロジェクトを作成(任意)…私はチェック
 その後に、同じ画面の「次へ」ボタンをクリックします。
クリックすると「Configure Launcher icon」画面に遷移します。



「Configure Launcher icon」画面に遷移したら、「次へ」ボタンをクリックします。
クリックすると「Create Activity」画面に遷移します。
ランチャーの設定は後でしようと思ったためです。



 「Create Activity」画面に遷移したら、「Create Activity」チェックボックスにチェックが入り、
「Blank Activity」が選択されている事を確認し、「次へ」ボタンをクリックします。
クリックすると「New Blank Activity」画面に遷移します。



 「New Blank Activity」画面に遷移したら、「次へ」ボタンをクリックします。
クリックすると「Install Dependencies」画面に遷移します。
今の所名前を細かく決めれていないので、デフォルトのまま作成しています。



「Install Dependencies」画面に遷移したら、「Install/Upgrade」ボタンをクリックします。
クリックするとダウンロードが始まり、「Choose Packages to install」画面に遷移します。



「Choose Packages to install」画面に遷移したら、「インストール」ボタンをクリックします。
クリックするとインストールが始まります。 インストールが完了すると「Install Dependencies」画面に遷移します。



「Install Dependencies」画面に遷移したら、「完了」ボタンをクリックします。
クリックするとプロジェクトの作成が完了します。



2日目へ。