サイコロの目を*で表示する、簡単なIchigoJamBASICプログラムです(・は空白で実際には表示されないところ)。
・・・ *・・ *・・ *・* *・* *・*
・*・ ・・・ ・*・ ・・・ ・*・ *・*
・・・ ・・* ・・* *・* *・* *・*
1 2 3 4 5 6
プログラムの考え方は人それぞれ異なるので、書いたコードも違うことが多いでしょう。
そこで今回は、実行結果が同じでも、考え方が異なるプログラムをいくつか作ってみました(厳密にはちょっと違ったり、かなり強引なのもありますが・・・)。
プログラミング教室などでは、1つのプログラム例しか説明されなかったりすることも多いのです。
しかし、本来プログラムの考え方は、いろいろあるのだということを理解してもらえればと思います。
いろいろな考え方の中で、見やすかったり、あとで改良しやすかったり、バグしにくかったりする書き方を発見していくのだと思います。
おまけとして、「でっかいサイコロ」の改造プログラムを画像に貼りました。
他にもひらめきが来たら、チャレンジしてみてください。









プログラム例1
10 LET R,RND(6)
20 LET R,R+1
30 IF R=1 ?" ":?" * ":?
40 IF R=2 ?"* ":?" ":?" *"
50 IF R=3 ?"* ":?" * ":?" *"
60 IF R=4 ?"* *":?" ":?"* *"
70 IF R=5 ?"* *":?" * ":?"* *"
80 IF R=6 ?"* *":?"* *":?"* *"
90 PRINT R
プログラム例2
10 R=RND(6)
20 R=R+1
30 IF R>=2 ?"*"; ELSE ?" ";
35 ?" ";
40 IF R>=4 ?"*" ELSE ?" "
50 IF R=6 ?"*"; ELSE ?" ";
60 IF R%2=1 ?"*"; ELSE ?" ";
70 IF R=6 ?"*" ELSE ?" "
80 IF R>=4 ?"*"; ELSE ?" ";
85 ?" ";
90 IF R>=2 ?"* " ELSE ?" "
100 ? R
プログラム例3
10 S=ASC("*"):T=ASC(" ")
20 R=RND(6)+1
30 IF R>1 A=S ELSE A=T
40 IF R>3 B=S ELSE B=T
50 IF R=6 C=S ELSE C=T
60 IF R%2 D=S ELSE D=T
70 ? CHR$(A,T,B)
80 ? CHR$(C,D,C)
90 ? CHR$(B,T,A)
100 ? R
プログラム例4
10 S=#2A
20 R=RND(6)+1
30 LET A,S*(R>1)
40 LET B,S*(R>3)
50 LET C,S*(R=6)
60 LET D,S*(R%2)
70 ? CHR$(A,0,B)
80 ? CHR$(C,D,C)
90 ? CHR$(B,0,A)
100 ? R
プログラム例5
20 R=RND(6)+1
70 ? CHR$(#2A*(R>1),0,#2A*(R>3))
80 ? CHR$(#2A*(R=6),#2A*(R%2),#2A*(R=6))
90 ? CHR$(#2A*(R>3),0,#2A*(R>1))
100 ? R
プログラム例6
10 S=ASC("*")-32
20 R=RND(6)+1
30 X="***"
40 Y="***"
50 Z="***"
60 POKE X,S*(R>1)+32,32,S*(R>3)+32
70 POKE Y,S*(R=6)+32,S*(R%2)+32,S*(R=6)+32
80 POKE Z,S*(R>3)+32,32,S*(R>1)+32
90 ?STR$(X):?STR$(Y):?STR$(Z)
100 ?R

シンプルなサイコロプログラム……から、たくさんのプログラムのパターンを考えるとは、見事! おっしゃるとおり、作るものが同じでも色々な考え方ができるので、プログラムも様々ですよね。色んなパターンを考えてみるというのは、すごく勉強になると思います!