プラグイン集

無料ブログはココログ
2021年11月
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30        

サンプルJS

  • ユーロバカ一代の締切
    ・・・初期化中・・・

« 電車でD_CS攻略14、15話 | トップページ | 図書館総合展2012 »

2012年11月15日 (木)

Androidゲームプログラミング

前回、「15歳からはじめるAndroidわくわくプログラミング教室 Java超入門編」を取り上げた、その続編である、「15歳からはじめるAndroidわくわくゲームプログラミング教室フルカラー最新版 」を攻略。

出版社、著者は前回と同じく、出版社:ラトルズ、著者:掌田津耶乃。

プログラミング環境は、マスコットアプリプログラミングと同じ。Androidプログラミングだから縛りは無い。

そして、恐れていた自体が発生した、JAVA超入門では、ディスられていたthis.が大活躍しているのである。それこthis()なんぞよりも。

int a,b,c;
・・・
void setNum(int a, int b, int c){
    this.a=a;
    this.b=b;
    this.c=c;
}

これが、ジャンジャンバリバリ登場する。この人、一貫性無いんじゃね?趣味人なら良いけど、仕事でって人は、最悪だと思うが・・・。

個人的に、より問題なのは、Android 4.03以上を要求すること。2012年夏以降、いや最新のスマートフォン・タブレットでなければ、ソフトが動作しない。2012年10月の統計によると、android4.0系は28%のシェアだが、スマートフォンが普及したAndroid2系が69.3%を占める現状。2/3のスマホでは動かないと言うのは、書籍としては先走りすぎではないか?
ただ、逆を言えば、1/3は動くし、これからは2系から4系へ機種変更が多くなるから、必ずしも悪いとはいけないが・・・。

なので、手持ちの2012年夏以前のスマートフォンで動くようにこの本のソースを書くためには読み替えが必要。

4.03系から2.3系で動かすだけなら、Activityの画面サイズ取得を
disp.getSize(Point p);
disp_w=p.x;
disp_h=p.y;
から
disp_w=disp.getWidth();
disp_h=disp.getHeight();
に置き換えれば動く。マスコットプログラミング読んでおいて良かったわ。

スライドパズルは、多分、林晴比古だったかな?VBで組んだことが有る。
このAndroidは致命的な欠陥が有って、クリアできないパズルを生成することだ。
スライドパズルのルールを使わずに、単純なランダム並べ替えでパズルを並べ替えているのが原因だ。
結局、ピースの動かし方を組むのだから、ピースの動かし方を呼んで、上下左右のどれかをランダムで選択、そのピースをルールに則って動かす。という林晴比古アルゴリズムなら、クリアできないパズルは生成されない。(しかも、画面を簡単に作れるVB、難易度に応じて、シャッフル回数を変えられると言うのもうれしかったね。)

最終章のボールゲーム、(掌田津耶乃さんと同じ機種の)xperiaならまともに遊べる。独自にサイズ調整機能をオーバーロードを駆使して作ったが、is14では満足に遊べない。サイズ調整は課題扱いになっていたが、もう数冊Androidの本を読んだ人で無いととけないし(初心者~脱初心者では無理)、そのレベルの人は、こんな本買わない。もっと、アルゴリズムや、コントロールの詳細を記した本を買うだろう。

これも、原因がはっきりしている。コースを生成しているピースが1:1の正方形で、その三角形は1:1:√2になっている。画面のサイズ違いで、縦横比が変わってしまうと、判定が機能しなくなる。また、センサーの感度が全軸同一では、引き伸ばされた方の感度が相対的に鈍くなる。(縮んだ方は、相対的に感度が上がる。)

つまり、正方形に頼った楽ちん判断コードを捨て、まともな判断コードを書く。
縦横比に応じた、センサーの感度調節を行う。
の2点を、画面サイズの調整の他に行う必要が有る。

サンプルソースに模範解答が有るかと思えば無い。分かるさ、まともな判断コード書こうとすると偉く大変だもんな。要三角関数。ボールは、真円だもんな。楕円じゃダメだもんな。縦横比真面目に調整すると、ボール楕円だもんな。「(ボールは、完全な円だから)縦横同じ幅だから、変数w一個でいいや」、何て言ってられないもんな。

(追記)
そういえば、忘れてた。この本XML多様する。ここがバグの温床になって、一発で動くって事が無かった。java.lang.RuntimeExceptionが多発する。あと、ViewクラスにActivityクラスのオブジェクトをさっさと作ること。これ忘れて、disp_w、disp_hが何度( ´∀`)<ぬるぽしたか・・・。
ちなみに、この本はデバッグの仕方をレクチャーしません。上巻の超入門でも。なので、デバッグ方法は別途勉強が必要です。ここでも、マスコットアプリプログラミングに救われたよ・・・。

完全なる悪書かといえば、そうでもないことを補足しておく。

パズルは、drawableの画像を差し替えれば、自分の好きな画像でパズル出来るし、リバーシも盤面や背景の色変えて、メッセージ出力を書き換えることで、擬人プレイが可能だ。

ボール投げなんかは、かなり改造が楽しめる。

東方厨の例としては、
背景を紅魔館、夜の屋上。玉をレミリアの赤いあの玉、敵をゆっくり咲夜に改造。
バックストーリーは、
下咲夜の劣情が大爆発して、ゆっくり咲夜が紅魔館付近に大量現れた。
お嬢様方はう~☆う~☆泣いてて、カリスマ0で動けない。
中国は、グッスリお寝んね中だ。
そんな時、パチュリーにボールを渡される。「レミリアの玉を人間でも投げられるようにしたわ。私は、レミーを守から、貴方は、そのボールを使って、ゆっくり咲夜を始末してきて頂戴。ゴホゴホ。」
喘息のパチュリーも気になるが、まずは、ゆっくり咲夜を始末することが先決。プレイヤーの挑戦が始まった。

的な物が、同一ソースで作れてしまう。やっぱり、ソースより絵のパワーだね。

個人的には、この章でファイルIOを扱って、ハイスコアが残るようにしたら、もっとゲームの幅を広げられると思うのだが・・・。

後書きでテキストIO覚えたら?何て言ってないで!

・まとめ

drawableを改造することで、自分好みのゲームの見た目に出来る。
しかしながら、最新機種しか動かないコード、あからさまな欠陥コード。この2点が乗り越えられるなら買うのもいいんじゃないか?
ただ、超初心者やった人が、次にこれと言うのは厳しすぎる。

タイトルは、「15歳からはじめるxperiaわくわくゲームプログラミング教室フルカラー最新版」に変えた方がいいんじゃないか?


ここにも、求めていた、状態のセーブは無かった。本屋で適当に立ち読みしてきた本によると、最初のOpenがjavaとは異なるが、ストリームを確立してしまえば、あとはJAVAと変わらないらしい・・・。例のごとく、独習Android、林晴比古のAndroidシリーズが待たれる。

ここまで、android関係3冊(実質2冊か?)やってきたが、androidは、挫折が効かない。C++であれば、++分からなくても、C言語として使うことが可能。だが、Androidが分かるからといってjavaがジャンジャンバリバリ書けるかというと、それも違う。
そうだ、CUDAとC++に近い。CUDAはC++の書き方っぽくソース書けるけど、やっぱり違う。CUDA書けるからといって、C++が書けるわけではない。CとC++のC部分がJAVA、C++部分がandroidと解釈してモヤモヤしていたが、すっきりした。
C++とCUDAだ。C++部分がjava、CUDA部分がAndroid。踏襲はするが、互換は無い。しっくりきた。

ここで、一つ悩みが有る。このままandroidプログラミングをやるか、電Dキャスターを作るか。
電Dキャスターの勝算は無い、公式は前向きだ。(もう取り組んでる?なら時間は無いぞ)唯一有るのはロマン。

« 電車でD_CS攻略14、15話 | トップページ | 図書館総合展2012 »

書籍・雑誌」カテゴリの記事

プログラミング」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: Androidゲームプログラミング:

« 電車でD_CS攻略14、15話 | トップページ | 図書館総合展2012 »