03) ちょっと困ったのである
 今回は、ちょっと困った話です。

たぶん、PalmでVisual BASIC(R)を使っているようなほど、自由が利かないのがNS Basic/Palmです。
(どちらかと言えば、サブセット版と思えばいいのではないでしょうか?)
今後、そういう意味で、ついついVBと比べてしまうのでしょうが、まぁ、仕方がないでしょう。
さて、話を戻しましょう。
やはり、VBなどと比べていてのことでしょうが、それは、AmiKujiを作っているうちに気が付いたことです。
遊ばれた方は分かると思いますが、AmiKujiは、2〜15枚のくじを選択できるようになっていて、選択すると、横に5枚まで並べて、並びきらなかった分は次の段に移るようになっています。つまり、最高5列3段のくじになるわけですね。
これらを、くじの枚数に応じて、5枚以下か、10枚以下か、15枚以下かの3つに分けて、1枚目のくじを表示する縦方向の座標を変えています。
 くじには、1〜15の番号が割り当てられています。0〜14でないのは、NS Basicの仕様上、添え字に0が使えないからです。つまり、A(0)とかCard(0)とかが使えないわけですが、エラーになるわけではないようです。
買ってすぐの時に、

     Dim Brd(9,9) As Integer

という変数を宣言して、Brd(0,x)やBrd(x,0)に代入してもエラーにはなりませんでした。
が、動作が変なのです、Brd(0,x)に代入した値はBrd(1,x)にも代入されてしまい、悩みました。バグかと思ったのですが、仕様上のことでしたね。マニュアルは一通り目を通した方がいいみたいです。
 おっと、また脱線ですね。要するに、1枚目の位置が決まれば、どのパターンでも表示できるルーチンが作れればいいわけです。
1枚目の縦座標Y0は、1段の時は65から、2段の時は40から、3段のときは15から、と言うようにしたとします。 が、ホヤホヤの初心者の方だと、

     If MaxKuji<5 Then
       Y0=65
     Else if ・・・・

と If Then を使うでしょうか。もしくは、Select Caseなども使えますね。
一方、慣れた方なら比較演算子を使った方法があるでしょう。
これは、言語の仕様によっても異なりますが、今回は、True=-1、False=0であるとしましょう。
例えば、

     A = ( A = A )

という代入文を考えます。(実際に書くことはないでしょうが・・・)
この結果、Aには「-1」が代入されます。なぜなら(A=A)がTrueだからです。

     A = 1
     B = 2
     C = ( A = B )

この場合は、AとBは等しくありませんから、CはFalse、つまり0です。
Boolean型を使った場合はともかく、このようにTrueとFalseを数字に変換できる方法が、定石と言えるでしょう。
これを、縦位置Y0の計算に使ってみると、次のような式になります。

     Y0 = -(Maxkuji < 5) * 25 - (Maxkuji < 10) * 25 + 15

比較演算子なので、不等号でもOKです。Trueが「-1」になることを忘れなければダイジョウブです。
この方法だと、Ifを使うのに比べ1行で済む所がスマートだとは思いませんか?

 そう思って、比較演算子を使った方法で作成し、コンパイルすると・・・エラー。
結局、If Thenを使って処理しましたが、ちょっと、困りました。なぜなら、比較的、キャラを動かすようなゲームで、この方法を使うからです。
ま、使い方は、いつか別の機会にするとしますが、このように、ちょっと困った話でも、NS Basic/Palmを理解するうちの一つではないかと思われましたので、紹介してみました。