##################
# Chain Reaction #
##################

古典的なコンピューターボードゲーム「Chain Reaction」のP/ECE版です。

================
インストール方法
================

「chaireac.pex」をP/ECEに転送してください。

======
遊び方
======

・升目を選択して、駒を置いて下さい。
・別色の駒が有る升目には、駒は置けません。
・同色の駒が有る升目に、さらに駒を置くと、駒が大きくなります。
・四隅の升目では、駒が二段階大きくなると、分裂します。
・壁際の升目では、駒が三段階大きくなると、分裂します。
・それ以外の升目では、駒が四段階大きくなると、分裂します。
・分裂した先の升目に相手の駒が有ると、自分の駒に変わります。
・盤面上から、相手の駒を消し去ったら、勝ちです。

========
操作方法
========

------------
タイトル画面
------------

上下左右ボタン　　　難易度と、盤面の大きさを選択します。
ＡまたはＢボタン　　ゲームを開始します。

----------
ゲーム画面
----------

上下左右ボタン　　　カーソルを移動します。
ＡまたはＢボタン　　駒を置きます。

--------
いつでも
--------

ＳＥＬＥＣＴボタン　プログラムを終了します。

========
あとがき
========

古典的なコンピューターボードゲーム「Chain Reaction」です。
あまり深く考えなくても、運任せで一気に逆転するのが楽しいゲームです。
「Classic Computer Magazine Archive」(http://www.atarimagazines.com/)さんの、「Chain Reaction」(http://www.atarimagazines.com/compute/issue80/chain_reaction.php)の記事に、色々な機種のゲーム画面が載っています。
昔は、爆弾の数で駒を表していたのですが、最近のAndroid版(https://play.google.com/store/apps/details?id=com.protoplus.chainreaction)では、細胞の大きさで駒を表すのが一般的みたいですね。
今回のP/ECE版も、Android版を真似して、細胞の大きさで駒を表してみました。

実は、今回のプログラム作成の目的は別の所に有って、新しく作成した描画ルーチンをテストする事でした。
P/ECE標準の画像形式(2bitデータmask付き)を使うと、画像データのサイズが大きくて、画像データがメモリの大部分を占めてしまう事が多いです。
解決方法の一つとしては、画像データをZlib等で圧縮しておいて、都度、必要な画像だけを展開して使う方法が有ります。(おでマルがそうです。)
しかし、シーンが分かれていないゲームでは、実際に描画する瞬間になるまで、どの画像を展開すべきかを判断するのが難しくて、その方法ではプログラムが作りづらい事が有ります。
そこで今回は、画像データをVQ圧縮しておいて、VQ圧縮した画像データから、直接描画するルーチンを作成しました。
グラフィックチップ等ではハードウェアで実装されてる機能ですが、P/ECEの場合はソフトウェア処理です。
かなり遅くなるかな、と思っていたのですけれど、意外と、30%の速度低下(普通の描画に比べて70%の描画速度)ぐらいで済みました。
画像データの圧縮率は、絵の内容にもよりますが1/2〜1/3ぐらい，画質を落とせばもっと小さくする事も出来ます。
結構、上手く出来たと思うので、今後、使って行こうと思います。
しかし、今回の「Chain Reaction」は、元々画像データが小さいので、圧縮の恩恵があまり無くて、題材の選択を間違ったかも…(^^;

==================
Fri Jan 06 2017
Naoyuki Sawa
nsawa@piece-me.org
==================
