こんにちは。なんとなく書きたくなったので書きます。
私が高校生の時、工業系の学科に属していたわけですが、生徒全員が関数電卓を買うことになっていました。そして、渡されたものがカシオの fx-700AZ という電卓でした。この電卓にはプログラム機能がついていて、まあ普通は複雑な計算とかをいちいち入力しなくて済むように的な用途なんでしょうが、授業中に暇になった私はこれを使って数字暗記ゲームを作ってました(笑)。結局、このプログラム機能を高校の間使わず、プログラムした内容が残っていたので、ちょっと記事にしてみようと思いました。
まず、この電卓には 4 つまでプログラムが記憶できます。そのうち残っていたのは 3 つで、 P1 に数字暗記ゲームその 1 、 P2 は空で P3 に JAN コードのチェックデジット計算、 P4 に数字暗記ゲームその 2 となっています。なんかいろいろ作りまくってたような気がしますが、残っていたのはこれだけです。
まず、 P1 の数字暗記ゲームですが、実行すると数字が 1 つ表示され、 [EXE] キーで進むたびにその数字が変わっていくので、それら(合計 8 桁)を覚えて、答え合わせ、という感じのものです。写真で見てみましょう。
実行すると何か数字が表示されます。今回は最初は 8 ですね。 [EXE] キーで進むたびに変わっていきます。 10 分の 1 の確率で同じものになりますが(笑)。
そしてさらに進むとこの画面になります。
暗記した数字を入力しましょう。 [EXE] キーを押して答え合わせです。
正解の場合はこのように 1 が表示されます。不正解の場合は 0 です。
P3 の JAN のやつは飛ばして、 P4 の数字暗記ゲームです。これは先ほどのものとは若干異なり、一度に数字を表示して暗記、答え合わせするというものです。難易度が低くなったように感じられるかもしれませんが、秒数を指定することにより、数字が消えてから、答えの入力画面を表示する時間を調整することが出来るので、難易度を高くすることが出来ます(笑)。
まずは暗記すべき数字が消えてから、解答入力画面を表示するまでの待ち時間を秒で指定します。今はとりあえず、表示されている 1 (秒)のままにします。
次に 8 桁の数字が出てきますので覚えます。次に進みます。
そうすると、一度画面が消え、指定時間経過後にこの画面になります。
覚えた数字を入力しましょう。今度は間違えてみます。
そうするとこのように 0 という表示になります。
P3 の JAN のやつは、写真撮りましたが、面倒なので動作だけ書いておきます(笑)。実行すると始めに入力画面が出てきますので 13 桁の JAN コードを入力します。次へ進むと演算を行い、そのチェックデジットがあっていれば -1 、間違っていれば正しいチェックデジットが表示される、ただそれだけです。
最後にそれぞれのプログラムでも書いておきましょう。若干記号を書き換えています。「→」は “->” 、「×」は “*” 、「÷」は “/” 、「≧(本体では等号の棒が 1 本)」は “>=” 、「≦(本体では等号の棒が 1 本)」は “<=” 、「≠」は “!=” 、ディスプレイに表示する命令の記号(正三角形の直角が右下を向いているようなもの)は “@” にしています。また、本体にはマイナス記号と引き算記号がありますが、両方とも “-” としています、そして、ブログの都合上、改行されてしまっていますが、当たり前ですが、実際には 1 行です。
P1 数字暗記ゲームその 1
Fix 0:0->X:0->A:0->B:While A<8:Lbl 1:Rnd(Ran#*10)->C:If C>=10:Then Goto 1:IfEnd:If A!=0:Then Goto 2:IfEnd:If C=0:Then Goto 1:IfEnd:Lbl 2:C@A+1->A:B*10+C->B:WhileEnd:?->X:If X=B:Then 1:Else 0:IfEnd
P4 数字暗記ゲームその 2
Fix 0:0->X:?->Y:Rnd(Y*40.5)->B:Lbl 1:(Ran#*10^(12)+Ran#*10^(9)+Ran#*10^(6)+Ran#*10^(3))*(Ran#*10^(3))->A:(A*10^(-8)-Rnd(A*10^(-8)))*10^(8)->!:If A<0:Then A+10^(8)->A:IfEnd:If A<10^(7):Then Goto 1:IfEnd:A@While B>0:B-1->B:WhileEnd:?->X:If X=A:Then 1: Else 0:IfEnd
P3 JAN コードのチェックデジット判定
Fix 0:4910123450640->X:0->Y:0->C:0->D:?->X:If X>10^(13):Then Goto 9:IfEnd:12->A:While A>0:If A/2-Rnd(A/2)=0:Then Goto 1:IfEnd:Rnd(X*10^(-A))->Y:X-Y*10^(A)->X:If X<0:Then X+10^(A)->X:Y-1->Y:IfEnd:Y+C->C:Goto 2:Lbl 1:Rnd(X*10-(-A))->Y:X-Y*10^(A)->X:If X<0:Then X+10^(A)->X:Y-1->Y:IfEnd:Y+D->D:Lbl 2:A-1->A:WhileEnd:C*3+D->Y:Y-Rnd(Y/100)*100->Y:If Y<0:Then Y+100->Y:IfEnd:Y-Rnd(Y/10)*10->Y:If Y<=0:Then Y+10->Y:IfEnd:If 10-Y=X:Then (-1):Goto 3:Else 10-Y:Goto 3:IfEnd:Lbl 9:(-2):Lbl 3
一番面白味のない JAN コードのやつが一番長いという(笑)。そして、コピーするのに非常に疲れました。何せディスプレイの表示領域があれしかないもので、写し間違えとかあるかもしれません。試してみて動かなかったら、自力でデバッグするか、若しくは聞いてください(笑)。
とまあ、こんな感じです。書き出してみると意外に量がありますね。今、これらのプログラムを読んでも何やってるのかよくわからないです(笑)。とりあえず、当時の自分なりにいろいろ工夫したんだろうなーと。乱数生成周りとか。
fx-700AZ は学販専用みたいなので、一般の人は手に入れられないと思いますが、同じプログラムが書けるものが一般向けに出てると思うので、それを入手すれば動くかもしれません。
というわけで、この電卓みたいに限られた環境の中で何かやるってのも、楽しいですね!授業中の暇つぶしにも最適!(笑)
ではでは!
素晴らしい、学生生活を楽しんでいたのですねー。