日記帳

日記です。

ODROID に Shot4k を移植

ODROID はせっかくゲーム機なんだからなにかゲームを動かすべき,ということで昔つくった 4KB ゲームの Shot4k ( http://d.hatena.ne.jp/sa-y/20090614#1244994662 ) を移植してみました.主に日曜日のお勉強会 で移植作業をしていました.とりあえず API をちょっとずつ置き換えるのと解像度の変更に伴う修正程度で動くところまではこぎ着けました.移植といってもどちらも Java なのでこの辺は簡単ですね.

Java2D API から android の SurfaceView の CanvasAPI への置き換えはだいたい以下のような感じで対応がとれます.

Java2D

g.setColor(BULLETS_COLOR);
backup = g.getTransform();
g.translate(bullets_x[i], bullets_y[i]);
g.rotate(bullets_direction[i]);
g.scale(1.4, 1.0);
g.rotate(PI1_4);
g.drawRect(-4, -4, 9, 9);
g.setTransform(backup);

Android SurfaceView

strokePaint.setColor(BULLETS_COLOR);
canvas.save();
canvas.translate(bullets_x[i], bullets_y[i]);
canvas.rotate(bullets_direction[i] / PI2 * 360);
canvas.scale(1.4f, 1.0f);
canvas.rotate(45);
canvas.drawRect(-3, -3, 3, 3, strokePaint);
canvas.restore();

ほとんど単純な置き換えですみます.

以下注意点.

  • Graphics2D#getTransform(), Graphics2D#setTransform() の代わりに Canvas#save(), Canvas#restore()
  • Paint オブジェクトを用意する必要がある
  • 色は Color クラスのオブジェクトではなく int で渡す
  • Canvas のメソッドの引数は double ではなく基本 float となる
  • Canvas#rotate() はラジアンではなく度を渡す
  • Canvas#drawRect() はの引数は(x, y, w, h)ではなく(left, top, right, bottom)になる

で,とりあえず動いたところ.

ODROID でも.

カーソルキー+2ボタンの操作系なので ODROID 以外の Android 端末だと厳しそう.