PCの画面の中で,分子構造のようなものがうごめいている。こうしろうの仕業だと目星を付け「これはなんだ」と尋ねる。「白血病治療のために,タンパク質の分子構造を解析するプログラム。分散コンピューティングで,CPUの空き時間を利用するんだ。」うっ,なんだか頭が痛くなってきた。よく,わからん。

 調べてみると,インテル,ユナイテッドデバイセス社,全米癌学会,オックスフォード大学などが推進するプロジェクトで,インターネットに接続された世界中のコンピュータを分散コンピューティング環境として利用し,白血病の治療法研究のため,タンパク質の分子構造を解析しようというものらしい。

 UDAgentというプログラムを使い(窓の杜などでダウンロードできる),空いているCPU時間を使いタンパク質を解析する。普通にPCを使っている状態では,CPUは10%から20%ほどしか利用されていないことが多い。ブラウザでWebページを見ている時は0%に近い。その間の余っているCPUのパワーを利用しタンパク質の解析を行う。実際にUDAgentを動かすとCPUの使用率は常に100%になる。良くできたプログラムである。いつでも計算を開始,終了することができる。プログラムをダウンロードする時間と計算結果をサーバーに送っている時間以外はインターネットに接続している必要はないので,ダイアルアップ接続の環境でも利用できる。

 インテルにとっては良い宣伝であり,ユナイテッドデバイセス社はこれで結構利益をあげるんだろうな,などと思わないでもないのだが,交通事故を除いた15歳以下の死亡原因のトップが白血病であることを考えれば,我が家のコンピュータが暇な時に,このプロジェクトに参加できることはうれしいことである。

 うまいなあと思うのは,チーム制にしてポイントを競わせているところである。必要な計算を終えるには最低でも2400万時間かかるらしいが,Team2CHなどの日本のチームが高得点を挙げている。競争,ゲーム性,自分のPCが分子構造解析などという難しいことをしているという,なんか誇らしい気持ちが原動力なのかもしれない。ちなみに,こうしろうは『チームさぽさぽ』に所属している。

 さて,Flashでシューティングゲームを作るという話に戻ろう。まず,前回のFlashムービーを見ていただきたい。ペン先のようなロケットをマウスでクリックすると,矢印のようなミサイルが発射される。

12月21日 現在の仕様の問題点と改善案をこうしろうと話しあった。
1.ロケットの位置が固定では,ゲームとしては,まずかろう。矢印キーで左右にロケットが動くようにしよう。
2.ロケットが動くようになったら,ミサイルを発射させるのに,マウスでロケットを追いかけクリックするのは大変だ。スペースキーでミサイルを発射できるようにしよう。
3.当然であるが,ミサイルの発射位置はロケットのその時の位置に合わせなくてはならない。

12月22日 こうしろうは私の居ない時を狙ってプログラムの修正を始めたようだ。プログラミングも自立の時か?もっとも,まだまだ未熟であるが。

 まずは,ボタン型のムービークリップであるロケット(pen_btn)に以下のコードを追加した。



on (keyPress "<Left>") {
  pen_btn._x -= 20;
}
on(keyPress "<Right>"){
  pen_btn._x += 20
}



 左矢印キー(Left)を押したら,pen_btnのx座標を減算,右矢印キーを押したら加算してロケットを左右に移動させている。私と顔を合わせると「できたよ」と満足げに言う。

 次に,スペースキーでミサイルを発射するようにコードを修正した。


on (keyPress "<Space>") {
  _root.makeshot();
}



 前回のプログラムではミサイルの出る位置をthis[newName]._x = 284.5;,this[newName]._y = 346;のようにハードコーディングしていたのだが,ロケットの位置に合わせてミサイルの出所を変えなければいけない。


function makeshot() {
  if(depth == 100) {
    depth = 0;
  }
  depth++;
  trace(depth);
  newName = "myshot"+depth;
  if (_root[newName] == null) {
    _root.attachMovie("shot", newName, depth);
    this[newName]._x = pen_btn._x;
    this[newName]._y = pen_btn._y;
  }
}



 ミサイルの座標であるthis[newName]._x とthis[newName]._y にpen_btnのx,y座標を代入することで簡単に解決した。

 「やった,できた!」とプログラミングの面白さに魅せられたようなこうしろう。取りあえず動くプログラムを作っておいて,問題点を見つけ,それを少しずつ改良していくことにより,小刻みに達成感を味わえ,もう一歩,もう一歩と先へ進めていくことができる。

shot2.html
(表示にはMacromedia Flash Player6が必要です)

 実はこのFlashムービーには,まだ問題があります。HTMLファイルにFlashムービー(swfファイル)を組み込んだ状態では,Flashムービーをマウスで一度クリックしてフォーカスを与えないとキー入力が効きません。ロケットのあたりをクリックしてから,お試し下さい。

 さて,今年はこれでおしまいです。それでは,どちらさんもハッピーでニューイヤーをお迎え下さいまし。