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にするだけで勝つ率が極端に減ることが分かります。また、最初の持ち玉の数を減らしても勝つ回数は減ります。作った自分の勉強になりました。


戻る