« cmdpalet.datとは? | メイン | 「効果音を鳴らす」コマンドを連続して配置するとどのように再生されますか? »

複数の数値変数の値を比較する

コミックメーカーでは、変数の値の比較は1:1。すなわち二つの変数の比較しか行うことができません。
したがって、複数の変数の値を比較する場合には
「もし・・・ならば」コマンドを多用して
ws-fku0081.JPG
(まだまだ続きます)このように、全ての変数の値を比較する必要があります
(この場合だと5つの変数のうち、値が最大の変数を導き出すコマンドで、61コマンド必要でした)

数値変数の数が多ければ多いほどこのコマンドに必要な行は増えていきます
この方法は数値変数が4つぐらいであれば有効ですが、5つともなると61コマンドもかかってしまい、
別の方法を利用したほうがいいです。
その方法の一例が下の画像になります
ws-fku0082.JPG

サンプルファイルを下のURLにおいていますので活用してください。
(通常の3~5つの数値変数の値の比較コマンドについてもサンプルとして載せてあります)
http://www.comicmaker.info/archive/hikaku.lzh
(説明ついていません。単体起動できません)


比較用に変数を二つ用意し、片方は数値の比較用にどんどんと数値を1ずつ増やしていく変数
(比較用)
もう片方は比較対象の変数が比較用の変数よりも大きいことをカウントしていく変数(比較算出)
このとき、「比較算出」が1ならば、「比較用」よりも大きい変数はひとつだけとなり、
情報記憶のための文字列変数「比較」に保存している情報から最大値を持つ変数を判別することができます
この方法だと、5つの変数の比較であっても40コマンドで事足ります。
また、このルーチンは何度も使用することができるので、最大値を得た後は、
最大値が存在していた変数の値を0にすることによって(一時的にマイナスをかけておく、というのもアリです)
2番目に大きい変数の値を出力することもできます。
(これはずっと繰り返すことができるので全ての値の大小関係を得ることも可能です)
(ただし、下の注意を参照してください)

注意
比較対象の変数が4桁、5桁となると比較計算に時間がかかることがあるので、注意してください。
このシステムは”最大値の同値が存在しないもの”として組まれています。
もしも比較対象の変数間で最大値の同値が存在する場合、(例:最大値がA=B=100)
最大値なしと扱われます


関連記事

Copyright ©2005-2013 近藤 All Rights Reserved.| 2006年12月21日

トラックバック

このエントリーのトラックバックURL:
http://faq.comicmaker.info/system/mt-tb.cgi/166

質問と回答

この記事についての質問・意見はこちらからどうぞ


質問した直後にはこのページには質問は掲載されません。
近藤(管理人)による回答が完了した時点(1日~3日ほど)で質問と回答が同時掲載されます。
尚、メールアドレスを記入していただいた質問につきましては、
メールアドレス宛に回答させていただき、このページには質問も回答も掲載致しません

(ただし、データ本文を修正するべきと判断した場合は質問の回答に基づき修正いたします)
ので、個人の開発環境に深く関係するような質問はなるべくメールアドレスをご記入下さい。

<<SPAM対策のため、以下の英字は使用しないでください>>
good,great,nice,homepage,find




保存しますか?