このブログで、作成中のAndroidアプリの動作ムービーを公開していますが、
その時に使用しているツールは、androidscreencastです。
http://code.google.com/p/androidscreencast/
開発環境を既に構築しているのなら、エミュレーターを起動後に、
androidscreencastで公開されている以下のURIをクリックすると起動します。
http://androidscreencast.googlecode.com/svn/trunk/AndroidScreencast/dist/androidscreencast.jnlp
メニューの「Record」をクリックすると、録画が始まります。
録画がとても簡単でした。
2012年11月19日
2012年11月18日
Android用ゲーム開発 -7日目-
6日目からの続きです。
キーを操作したら、FundamentalUIに、
Characterクラスの現在地の変数を変更するようにします。
では、動かしてみましょう。
動きました。
以上。
キャラクターの移動
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を使用しました。
TMXLoader.readTMX() で読み込み、TMXLoader.createBitmap()で Bitmapクラスに変換しています。
また、MapViewクラスは Callback,Runnable インターフェースを継承し、
runメソッド内で描画します。
起動すると、以下のスクリーンショットになります。
7日目へ。
マップの作成
マップの作成は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日目へ
ユニットテスト
とりあえず、起動できる段階になったので、ユニットテストの環境を整えます。まず、 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を作ります。
RPGなので、マップと入力を用意し、抽象UIにつなげます。
これを、Activityにつなぎます。
dispatchKeyEventメソッドをオーバーライドします。
マップは、1と0の配列とし、画面にとりあえず、表示させています。
5日目へ。
抽象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日目へ。
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のリポジトリ構成」画面に遷移したら、「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
空フォルダを再現できるようにします。
その際のファイル名は慣例で、 .gitkeep となっているようです。
3日目へ。
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日目は、
クリックすると、「新規プロジェクト」ウィンドウが開きます。
「新規プロジェクト」ウィンドウが開いたら、「Android - Android Application Project」を選択します。
その後に、同じ画面の「次へ」ボタンをクリックします。
クリックすると「New Android Application」画面に遷移します。
「New Android Application」画面に遷移したら、画面に表示された項目をすべて入力します。
クリックすると「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日目へ。
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日目へ。
登録:
投稿 (Atom)





































