☆神経衰弱:基本セット☆ 2004.1.22更新

2004.1.21付で更新されましたLiveMaker[ver.04.01.21]で、「神経衰弱」を正規のトランプと同じ52枚のカードでできるように改良いたしました。
動作にはLiveMaker本体が必要となります。
以下のファイルを任意の場所にダウンロード(要解凍)したのち、LiveMakerからLiveNovelを立ち上げ、先ほどのファイルを開いてください。
「神経衰弱:基本セット」のプロジェクトファイルはご自由にお使いいただいてかまいません。
ただし、LiveMaker本体の扱いは、公式HPのルールに従うようお願いいたします。
追記としまして、このHP上の画像や記事の転載はかたく禁じさせていただきます。

 LiveMaker用プロジェクトファイル  神経衰弱:基本セット(lzh圧縮)


※図1:実行画面
図1:実行画面



※図2:チャートリスト
図2:チャートリスト

今回は「簡易版神経衰弱」とは異なり、拡張性と見やすさを重視して複数のチャートを用いました。
各チャートについては下記で解説させていただきます。



※図3:変数表
図3:変数表

なるべく名前を見てわかるようにしたつもりです。
頭についている「sk」は、SinKeiのskです。
他のプロジェクトと結合したときに、名前がかぶらないようにするためと、デバグ段階で使用している変数が並んで見られるようにするために付けました。
この解説中では「sk」を省いて表記いたします。

「乱数」は、Random関数から乱数を受け取る、専用の変数です。
「番号」は配列変数「カード」と組み合わせて使用します。カードの番号を表す変数です。
「カウンタ」は、「繰り返し処理(ループ)」のカウント用です。
「スタック変数」は、一時的にデータを預かってもらうための便利屋さんです。
その他の変数については、各チャートで説明いたします。



※図4:プライオリティ
図4:プライオリティ


「簡易版」のときは勘違いしていたようで、カード1枚につきプライオリティを1枚用意していました(^^;
今回は背景とキャラクターの間に1枚用意して、今後、演出が作りやすいようにしてみました。



※図5:メインチャート
図5:メインチャート

全体の流れを表すチャートです。
前回の「簡易版」のとき、大きくわけた9つのブロックを、今回は各チャートにわけて<チャート呼び出し>で呼んでいるので、このようなスッキリした形になりました。

<カード裏表示>で、52枚のカードを並べるのが、今回もっともしんどいところになりました(あと、トランプのグラフィックを描くのも(笑)。

メインチャート唯一の条件判定が、「カードがすべてめくられたか?」です。
それによって、ゲームを終了するか、またカードをめくるかを決定しています(参考:変数「正解回数」)。



※図6:初期設定&シャッフル
図6:初期設定&シャッフル

<配列宣言>では、変数「既開」「カード」を、配列変数に変換しています。
配列変数とは、一つの変数名に番号をつけて、管理をしやすくするものです。
単純にいいますと、ただの「変数」は「箱」で、物を一つしか入れられませんが、「配列変数」は「n段ボックス」で、1段目に「××」、2段目に「○○」というように、宣言したときの大きさ「n」段の棚になるのです。

配列変数「カード」は、画面上に表示されるカードの左上を1番にして、右へ進んで2番、3番……、一段目は13番までで、14番は2段目左はじになります。
そうして13枚×4段で52番まで番号をつけています。

配列変数「既開」は、配列変数「カード」と同じ位置のカードに対応しています。
「既開」は、そのカードが「表」になっているかどうかを判定する配列変数です。

次の一つ目のループ内(緑のノードに挟まれた一連の処理)では、配列変数「カード[1~52]」に、1〜52の整数を代入しています。つまり1番の棚に「1」、2番の棚に「2」というように入れているのです。

それから第2のループにはいって、<スワップ式シャッフル>を行っています。
中をみればしごく単純で、「n番目のカード」と「乱数で決めたr番目のカード」の内容を入れ替えているだけです。
適当に決めたカードですから、何が入ってるかはわかりません。それを利用してカードをシャッフルしているのです。

説明が遅れましたが、今回はトランプの種類を1〜52の番号で表現しています。
スペードのA〜Kが1〜13、ダイヤが14〜26、クラブが27〜39、ハートが40〜52です。


※図7:プレイヤーターン・チャート
図7:プレイヤーターン


矢印にそって解説しましょう。
<クリック待ち>は、マウスが左クリックされるまで待つノードです。 クリックされたときの座標を<座標検出>で変数「マウス座標x」「マウス座標y」に取り込み、カードのないy軸座標352以上であったら、またクリックを待つように指示しています(参考:<y≧352?>)。

カードが存在する範囲内であれば、それがどのカードを差しているかを計算ノードの<どのカード>で計算しています。カードの大きさが横48×縦80ドット、カードの隙間が横1,縦8ドットなので、得られた「マウス座標x」を49(48+1)で、「マウス座標y」は88(80+8)で割り、それぞれ変数「計算x」「計算y」に結果をいれています。
さらに数値に補正をかけて、最終的にはそれが何番目のカードであるかを判定して変数「番号」に代入しています。

番号がわかったら、そのカードがすでに「表」になっているかを<すでに開いている?>で判定し、開いていたらまたクリック待ちに戻り、開いていなければ<ファイル名と名前作成>でそれらを作り、<カード表示>を行わせます。

さらに、それが2枚目にめくったカードであれば、2枚が同じ数字であるか判定しなければならないので、<2枚目?>で調べます(参考:変数「1/2枚目」)。
もしめくったカードが2枚目であれば、チャート「比較と当落処理」へ進みます。
まだ1枚目であれば、そのデータが消されないうちに、変数「1枚目データ」「1枚目番号」へ移しておき、次は2枚目ですよと知らせるために、変数「1/2枚目」を2にしておきます(参考:<1枚目データ受取>)。



※図8:カード表示チャート
図8:カード表示

ここでは単に、与えられた変数「カードファイル名」と「カード名前」に従って、指定の画像を表示して戻るだけです。



※図9:カード判定チャート
図9カード判定チャート

2枚のカードがめくられたら、そのカードの数字を比較するために、1〜13の数字に変換する作業を<カードの数値計算>でおこなっています。
変数「1枚目データ」と「2枚目データ」をそれぞれ「13」で割り、「余り」を求めます。
式にすると「n枚目データ % 13」となります。「%」で割ることで、「余り」だけを取得できるようになります。
なぜ「余り」がほしいかというと、かならず数値が「0〜12」になるからです。ただし、計算の特性上、「K(13)」のカードは「0」になってしまいますが、今回は特に問題はないのでそのままにしております。

そして二つの数値の比較です。
同じ場合は<あたり処理>を、はずれた場合は<はずれ処理>に跳びます。

<あたり処理>はメッセージボックスに「あたり」を表示して、またボックスをけしているだけです。
<あたり計算>では、正解回数を加算し、まためくるために変数「1/2枚目」を1に戻しています。
このあと処理を抜けて、すべて正解していたら「ゲーム終了」なので、その処理を「メインチャート」上でしてもらっています。

<はずれ処理>も、<あたり処理>と同様に、メッセージボックスを表示して「はずれ」を出し、消去しています。
そのあと、1枚目と2枚目をまた裏返す処理と、変数「はずれ回数」の加算を行って、メインチャートに戻っていきます。

 以上で、おおざっぱながら、解説を終了させていただきます。
 もし何か疑問がありましたら、ホーム上のアドレスからメールでお知らせください。
 このプロジェクトが、お役に立てれば幸いです。



    ホームへ戻る