3Dグラフとパチンコ
19.3Dグラフ
100 rem 3D-sine curve
110 graphics 0
115 graphics window 680,480
120 type person
130 gu as integer
140 end type
150 dim uvmax(800),uvmin(800)
160 mat uvmax = -80 : mat uvmin = 480
170 graphics color 100,0,0
180 for x = 150 to -50 step -1
190 for y = -100 to 300
200 z = 8*sin(0.04*x*y)
210 gu = y-x+300
220 gv = -(z-x)+150
230 if gv > uvmax(gu) then uvmax(gu) = gv : goto 260
240 if gv < uvmin(gu) then uvmin(gu) = gv : goto 260
250 if gv < uvmax(gu) and gv > uvmin(gu) then goto 270
260 graphics pset gu,gv
270 next y
280 next x
290 end
解説)
3Dのグラフを描くプログラムです。230から250行で陰線を消しています。前面から曲線を描いて行き、見た目がそれより大きいものと小さいものだけ描いて行き、その間のものは描かないようにしています。
また、描いた時、既往の値より大きい値uvmax、小さい値uvminは更新しています。
120から130では、変数の方を整数形に定義しています。
ただ、残念ながら簡単な処理でやっているので、関数によっては、うまく行きません。
20.パチンコ
100 rem pachinco99.6.20
110 randomize (timer)
120 nn = 0 : nhit = 0 : kachi = 0
130 print " n hit rest max min property"
140 for i = 1 to 10
150 restball = 300 : n = 0 : hit = 0
160 maxball = 0 : minball = 100
170 for k = 1 to 100000
180 n = n+1
190 if maxball < restball then maxball = restball
200 x = rnd(15)+1
210 if x = 10 then restball = restball+15 : hit = hit+1 : else restball = restball-1
220 if minball > restball then minball = restball
230 if restball = 0 then 250
240 next k
250 if maxball >= 5000 then kachi = kachi+1
260 print using "######";n,hit,restball,maxball,minball,
270 print using "##.###";hit/n
280 nn = nn+n
290 nhit = nhit+hit
300 next i
310 print "Soukei ";nn,nhit,nhit/nn,nn/nhit,"kachi=";kachi
320 end
解説)
パチンコの数値シュミレーションです。残念ながらゲームではありません。
200行目で球の入る確率を1/15にしています。入った時には15個球が出ることにしています。また、150行目のrestballで最初の球の数を300個にしています。変数kachiで球が5000個以上になった時に勝ったことにしています。これらの値を変えるといろいろ面白いことが分かります。
例えば、球の入る確率を1/16にするだけで勝つ率が極端に減ることが分かります。また、最初の持ち玉の数を減らしても勝つ回数は減ります。作った自分の勉強になりました。