万願寺の吉日日記


ザウルスに関することなど気まぐれに書いています。<><><><><>

新規投稿
先月<<過去記事 >>次月

「アコーディオン」を洞穴に置きました

at 2002 05/02 10:16 編集

トランプのソリティア(一人遊び)「アコーディオン」を作りました。

ルール説明
手札から1枚ずつ、左から一列に並べていきます。そして、隣り合った札、または2つ飛ばしの札と種類または数字が同じ場合に右の札を左の札に重ねます。これを繰り返して、手札がなくなった時点で1つに重ねられれば完成。ただ、私今まで一度も完成したことありません(^^ゞ

操作説明
決定キーを押せば始まります。
緑の場をクリックすれば手札を一枚めくります。札を重ねる場合は、右の札を左の札にドラッグします。
スペースの関係から8枚で折り返していますが、1列に並んでいるものとして考えてください。
一番上に手札の残り枚数を表示しています。

それでは、はまってみてください。

今日は5月1日

at 2002 05/02 14:32 編集

さっき、アコーディオンをしてみようとしたら起動せずに、あわてて944さんとこ見に行ったら、944BASICの5月1日版がアップされてますね。

早速ダウンロードさせていただきました。

「アコーディオン」の使用法は下の日記を見てください。

944BASICバージョンアップ感謝

at 2002 05/01 08:53 編集

944BASICがアップされていますが、INT関数についても倍精度対応していただいたようですね。
唯電の6行目あたりの桁数12をエディタ等で15に変更していただくと、15桁電卓になります。

よければ試してみてね

唯電フォント変更

at 2002 05/02 10:34 編集

今日は会社はお休み。
洗濯物干して、たたんで、次はアイロン。その合間を盗んでBASICをいじってて気がついたんですが、944BASICってこんなフォントが使えるんや。

ここから
FOR I=1 TO 12
FONT I*16+0
PRINT I;
PRINT 'あA+(90'
NEXT I
ここまで

で、唯電のフォント、8*16を使ってたのを7*16に変えてみました。


ところで私の場合、こういうリストを試すときって、F1:944BASICにサブディレクトリ(フォルダ?)を作って作業します。
REM 944BASIC ''
の先頭行も省略するんで当然らんちゃから起動するんではなくTree!Explorer Plus+で起動するんですが、BASICいじるんなら必須やと思います。1000円はお買い得!!

唯電新機能「RESERVE」追加!!

at 2002 05/05 21:11 編集

電卓を使う人は、しょっちゅう使う定型的な式が二つ三つはあるんやないかと思います。昔シャープのポケコンでPC1350ってのを使っていたときはリザーブモードってのがあって、それに登録しておけば、いつでもその計算をすることが出来ました。

今回の「RESERVE」はそういった機能です。

あらかじめBABCALCX.TXTに定型の計算式を書いておくと、ボタンクリックでメニューが出て、項目選んで計算が出来ます。いちよ、BABCALCX.TXTのサンプルをつけときましたが、書式は
−−−ここから−−−
4        ←1行目項目数
何もしない    ←2行目1項目目の項目名
千未満切捨    ←3行目2項目目の項目名
百未満切捨    ←4行目3項目目の項目名
所得税額計算   ←5行目4項目目の項目名
REM *===1項目目===================
U=U
RETURN
REM *===2項目目===================
U=INT(U/1000)*1000
RETURN
REM *===3項目目===================
U=INT(U/100)*100
RETURN
REM *===4項目目===================
IF U<=3300000 THEN U=U*0.1
IF (U>3300000)*(U<=9000000) THEN U=U*0.2-330000
IF (U>9000000)*(U<=18000000) THEN U=U*0.3-1230000
IF U>18000000 THEN U=U*0.37-2490000
RETURN
−−−ここまで−−−
って具合です。
項目名記入行(サンプルでは5行目)までは、空行を入れないでください。また、項目の終了は必ず「RETURN」を入れてください。REM文は入れても入れなくても結構です。詳しくは944BASICのコマンドリファレンスを参照してください。

制限としては、
COMMANDって命令を使ってますので、GOTO、GOSUB、FOR〜NEXTなどの制御系命令は使えません。
なお、1項目100行10項目が一応の限度です。
また、「=」キー押下げ後しか機能しません。

私個人的には最も欲しかった機能です。
それぞれのBABCALCX.TXTを作ってみてください。

不具合、質問などは来訪日記に書いてください。

今度は「カルキュレーション」

at 2002 05/07 22:56 編集

ゴールデンウィークも終わりましたね。期間中は通勤時間がないもので日記の更新もままなりませんでしたが、これからはまたぼちぼち書いて行こうと考えてます。

さて、今度はまたトランプの一人遊びを作ろうと思ってます。ゲームは「カルキュレーション」
トランプの一人遊びは、パズルネタを考えんでいい、バランスも既にできあがってる、スートと数字をいれればなんとなくトランプに見えるっていうように、結構作りやすい。

ゆっくりとしたペースで作って行くつもりです。

「カルキュレーション」ルール説明

at 2002 05/08 08:22 編集

場にスペードのAから4のカードを並べて置きます。(以下置場。Aのカードを1の置場、2のカードを2の置場)
各置場の下を捨場とします。
残りのカードをよく切って手札とします。
手札を1枚めくり置場か捨場に置きます。ただし、1の置場には2、3、4、5・・・K、2の置場には4、6、8・・・Kというように置場の数(1,2,3,4)を加算した数のカードのみ置くことができます。(スートは関係有りません)

捨場には4つのどこに何枚重ねてもいいのですが、別の捨場への移動はできません。置場へ移動できるのは各捨場の一番上のカードのみです。

最終的に4つの置場に各13枚ずつ重ねれば完成です。


さて、できますでしょうか(^^;
ゲームの名前「カリキュレータ」と紹介してましたが「カルキュレーション」の誤りでした。(ってゲームの名前もしらんのに・・・)

カードを変数で管理する

at 2002 05/09 08:52 編集

それでは、プログラムを組んで行きます。
その前にまず、プログラム上カードをどう管理するのかを考えておきたいと思います。

何のカードは変数で管理する訳ですが、ハートの1、スペードの3というようにスートと数字で一つのカードですので、SUTO、SUJIという変数でもいいんですが、CARD(0)、CARD(1)って配列変数の方がすっきりしていいので、そうしたいと思います。(この場合配列変数を使わなあかんことはないと思う)
配列変数には定義が必要ですので、リストのなるべく前の方で定義しておきます。
DIM CARD(1)

CARD(0)にはスペード、ハート、ダイヤ、クラブを1、2、3、4という数で、CARD(1)には数字を1から13という数で覚えます。
なんで、マークやA、J、Q、Kで覚えないのかは、あとあとのプログラムの書き安さに関係しますが、また次回にでも。

なんで、マークやA、J、Q、Kで覚えないのか

at 2002 05/09 22:22 編集

なんで数値で覚えた方がいいのかですが、利点を書いてみます。

(1)比較するのが容易
 1と2のどちらが大きいのかはすぐ判りますが、Aと2のどちらが大きいかは・・・分かりにくい。特に944BASICの場合、文字列の比較にはSTRCMP関数を使わないかんので、等しいかどうかにも工夫が必要です。
(数値の場合)
IF A=B THEN 〜
(文字の場合)
IF STRCMP(A,B) THEN ELSE 〜
注)AとBが等しいとSTRCMP(A,B)は0になるようです。多分どっちかが大きいと-1とか+1になるんやろうなと思えますね。
余談)IF A THEN B ELSE C でAが0だとCを実行し、それ以外やとBを実行します。条件式は正しいと1、誤ってると0になりますので、(B<=A)*(A<C)の場合0*0、0*1、1*0はすべて0、1*1の場合だけ1になりますので、*は両方正の場合だけ正になるANDの役割をすることになります。
蛇足)Aが正でかつBが正、又はCが正かつDが正の時、正とする。ただしA、B、C、Dすべて正のときは誤とするというような条件式は(A*B)+(C*D)-2ってかんじでしょうか。

(2)変数から変数への代入が容易
 A='A':B=A
 とすると、Aには0が入ってしまいますので、AにAを入れるためには、
 A='A':B=STR(A)
 とする必要が有ります。

欠点は一つ

(1)表示するのが面倒臭い
 変数には数値で入ってるわけですから、表示するときには文字に直さなければなりません。

と、書き出してみますと、値を比較しなければならない数字は当然数値で持ちますが、今回のゲームではスートは比較しませんので、文字でもってもいいような気がしてきました・・・


唯電マイナーチェンジでver1.4です

at 2002 05/10 23:37 編集

5月5日の日記で、
>また、「=」キー押下げ後しか機能しません。
としていた機能制限を取り払いました。
値を入れてRESERVE、値を入れてRESERVEって出来るんで、結構快適です。

あ、それと5日の日記に書き忘れたんですが、BABCALCX.TXT内で変数を使用する場合は、Uで始まる変数にしていただくと、本体で使用してる変数と重なりません。
また、1番目の項目で入力した変数を2番目の項目で活用することも可能です。

それと今回、サンプルでつけたBABCALCX.TXTの1番目の項目「背景変更」は、RGBを255000000.って具合に入力しRESERVEすると背景が赤になります。
工夫次第で使いでがあるんやないかと思います。

唯電新機能今度は「1字戻るキー」追加

at 2002 05/13 21:47 編集

普通の電卓によくある「→」とか「←」キーの機能を追加しました。タッチパネルで入力しているとよくキーの押し間違いをしますので、いまさらながら必須の機能ではなかろうかと・・・いまさらなんですが(^^ゞ

この機能を追加するのに、リスト全般にわたり修正しました。表示数字をVDATAという配列で持っていたんですが、その配列へのしまい方が、リストの各所で前詰めやったり後詰めやったり・・・システム設計がなってない上に、ザウルス上だけでコーディングしていってるんで、全般的に見られてません(^^ゞ

あと、ついでにスクロールキー対応してみました。
→(+)、↓(−)、←(×)、↑(÷)、決定(=)
これも、結構便利(^^)

唯電(ほぼ)最終形態 Ver1.6

at 2002 05/14 23:04 編集

今回は「答を自動的にスタックする機能」を追加しました。「=」キーを押すたびに右上のエリアに自動的にスタックされていき、数字をクリックすることによりスタックから出してくることが出来ます。

これでほぼ当初考えていた機能を盛り込みましたので、画面に「唯電卓」と表示してみました。バージョンも2にしたいなーと思ったんですが、らんちゃらんちゃを書き換えたりしなあかんので今回は見送りました。

あと、横ザウルスに対応できたらなとも思ってルーチンを入れてみたんですが、まだ検証できていません。試していただけると本当にうれしいんですが(^^ゞ
また、その内っていうことで。

唯電とうとう Ver2.0 登場!

at 2002 05/17 23:25 編集

バージョン2にしてしまいまして、ネーミングルールの関係からファイル名もBABCALC1.BASからBABCALC2.BASに変更になりました。以前のバージョンのBABCALC1.BASは、申し訳ありませんが削除していただくようお願いします。

実は、今回のバージョンで[RESERVE]用のファイルを変更して通常のbasicファイルにしてしまいinclude命令で連結することにより、制御系の命令も使えるようにしようと思っていまして、Ver1.7として出来上がったんですが、このファイルをいじるのにはbasicの基礎が必須ってなってしまってはいかんのやないかと思いまして、1.7を没にしました。

で、もうそろそろ1.8、1.9と先もないことですし、今回気まぐれで2.0(^^)

ところでさっきのincludeですが、私最初はreserve機能にこの命令を使うつもりやったんですが、
INCLUDE BABCALCX.BAS
ってしてもまったく連結できなくてあきらめたんですが、
INCLUDE 'BABCALCX.BAS'
が正解でした。loadtextsavetextなどのファイル系には共通する落とし穴ですね(はまるのは私だけ・・・それも何度も(^^ゞ

唯電2.0の正体

at 2002 05/17 23:43 編集

どんなバージョンアップかいってませんでした(^^ゞ
BABCALCX.TXTはそのまま使えます。(今回サンプルの同梱はありません)
BABCALCY.TXTは若干形式が変わりまして、起動時ストックがおかしくなるかもしれませんが、ほぼ大丈夫です。

横型にとりあえず対応しました。
起動時はテンキーの下が切れて表示されますので、答表示部3段あるうちの一番上の段をクリックすると、テンキーと答表示部だけの表示になります。
2段目をクリックするとリザーブ機能、3段目をクリックするとストック機能のメニューが表示されます。

また、リザーブ機能、ストック機能はそれぞれ逆送り、順送りキーに対応しています。

妻にお願いしMI-P10を借りて検証してみました。P10では逆送り、順送りキー反応してくれません(:_;)。急遽2段目3段目クリックを追加しました。しかし・・・遅い。
スクロールキーを使って足し算をしたりすると、入力漏れが出てしまいます。画面タッチのみで1から10の足し算をすると、だだだだだと押し終わった後答が出るのに4、5秒かかる・・・ルーチンが悪いんやろうな・・・

唯電速度向上のため見直し中

at 2002 05/22 00:30 編集

しばらく沈黙していた万願寺。何をしていたかといいますと、主に携帯をいじってました(^^ゞ
実は先日、なくしてしまいまして、携帯を。去年なくしたときにはカラーにしたんで、これを機に(無理になくしてるんやないかと疑われていますが)、写メール対応携帯に機種替えしてしまいました。
そんなこんなで、ザウルス後回し・・・

そんな忙しい中をぬって唯電の速度向上化を図っているんですが、リストをはじめてプリントしてみましたら、結構無駄な部分が多い。その昔int関数が倍精度でなかった時の名残もあったりして、もっとスリム化できるんやないかと検討しています。

どこの部分の処理が時間を食ってるか判断するのに、

vtime=time
print vtime
for i=1 to 100
 検証部分
next i
vtime=time
print vtime

なんていうコマンドを各所にちりばめて、重点対策。

唯電2バグ発覚のため修正版2.1

at 2002 05/23 23:23 編集

リザーブボタンやストックメニューを表示して、項目をタッチした後画面をタッチすると不正な処理をする場合があります。メニュー選択は決定キーで行っていただくか、ご面倒ですが2.1をダウンロードしていただくようお願いします。

また、リザーブ機能から外部ベーシックファイルを連結実行するためのサンプルとして、BABCALCX.TXT BABOFONT.BASを2.1に同梱しました。BABOFONT.BASは必要なくなれば削除してください。

劇的速度向上版唯電明日公開予定

at 2002 05/24 16:27 編集

ルーチンの改良を行い、劇的に速度向上を図った唯電2.2を、明日公開する予定です。
どれほど向上したかみてみたい方は、今のうちに2.1をおとしといて下さい。
ただし縦ザウルスの方は速度向上を体感することは、困難かと思います。

また、どれほど向上したかは、未検証につき不明です(^^;

横ザウ対応唯電 Ver2.2 公開開始

at 2002 05/24 22:28 編集

明日公開する予定でしたが、少し早く公開してしまいました。

妻のMI-P10で試してみたところ、充分早いことを確認しました。以前試した1から10の足し算で、Ver2.1では、10を打ち終わってから答の55が表示されるまで4、5秒かかってたのが、Ver2.2では一瞬で答が表示されます。

アムロか高橋名人並みの反応速度の方でなければ、支障なく使えるのではないかと思います。

次は何するかな・・・

at 2002 05/28 23:03 編集

トランプがやりかけのままなんですが、今んとこあんまりやる気がおこなんなくて、子供用のお絵かきソフトなんか作りたいなと思いながら、まだ固まらずにいます。

私にとってプログラミングは正にパズルで、解くまでが結構はまってしまって、今は少し小休止状態。

さて問題です

at 2002 05/29 21:56 編集

for i=0 to 5
 a=???
 print a;
 print ')';
next i
keywait

としたときに
1)0)0)-1)0)0)
と表示されるためには、???にはどんな式が入るでしょう(^_^)

これ何かというと、0から240まで数値を与えることにより12色環をなだらかに表示するっていうことをするのに使います。
こんなことを毎日考えながら通勤しています。

ザウルスわすれたー

at 2002 05/30 17:27 編集

会社の机の上に忘れてきてしまいました。あるべきものがないと無茶苦茶不安。
今日一日はまったく触れません。

さみしーよー

今日は携帯で日記の書き込みしています。

とうとう944さんとこでアイコンエディタ公開

at 2002 05/30 23:09 編集

もう公開されてたんですね。Keiさんとこで知りました。早速落とさせてもらいました。いや〜楽しみ。
(944BASIC関連にリンクはっときました>9Bソフトライブラリ)



何で今日に限って忘れてきたんやろう・・・