TOY VOX

管理人VOX6336が昭和レトロな遊びをするだけのブログです。スマートフォンでの閲覧推奨。

チンチロリン 1

2020-04-28 08:24:01 |  ダイス
・条件分岐
サイコロを使ったかんたんなゲーム、「チンチロリン」を作ってみよう。
まずはサイコロを3個ふる。3個のサイコロはそれぞれ、A、B、Cとする。

A=RND(6)+1
B=RND(6)+1
C=RND(6)+1
PRINT A;" ";B;" "C

これで3個のサイコロの出目が表示される。 つぎにこの出目がどのような役なのかを判定しなければならない。
もっとも単純なのはIF文でゴリ押する方法だろう。たとえば、

IF A=="■" AND B=="■" AND C=="■" THEN ~

という命令文(■には数字がはいる)を6×6×6=186行くりかえせばいい。
あるいは、

D=A*100+B*10+C

と3個の出目を3ケタの数字におきかえて、READ文を使って判定させる方法もあるだろう。だが、もっと楽なやりかたはないだろうか。それが今回のテーマ、「条件分岐」である。

まず、3個の目のでかたのうち、もっとも特殊な「ゾロ目」について判定する。

IF A==B AND A==C THEN PRINT "ゾロメ":END

命令文の最後にENDをつけたのは、これ以降の判定をしないため。GOTO~におきかえてもよい。つぎに3個のうち2個が同じ場合を判定する。

IF A==B THEN PRINT "デメ = ";C:END
IF A==C THEN PRINT "デメ = ";B:END
IF B==C THEN PRINT "デメ = ";A:END

AとBがそろった場合Cが出目、AとCがそろった場合Bが出目、BとCがそろった場合Aが出目になる。たとえば、4、4、2と出た場合、2が出目となる。4、4、4の場合はすでに先の分岐ではじかれているので、この分岐にはこない。4、4、4はゾロ目として判定され、出目4とは判定されない。

つぎに「456」について判定する。これは、2×2×2=8パターンしかないため、力押し、つまりIF文を8行書いてもよいだろう。
だがもっと楽な方法がある。

IF A+B+C==15 THEN PRINT "シゴロ":END

すでに、5、5,5のパターン、6、6、3のパターンは先の分岐ではじかれているため、この分岐にはこない。したがってこの分岐で合計数が15になるのは、4+5+6のパターンしかない。同様に「123」については、

IF A+B+C==6 THEN PRINT "ヒフミ":END

で判定できる。さて、ここまでの分岐ではじかれていない目については「出目なし」と判定することができる。

PRINT "メナシ" :END

これですべての目の出方について判定することができた。ただし、「チンチロリン」は目が出ない場合、3回までサイコロをふることができる。そこでサイコロをふる回数を変数FURUに代し、このようにプログラムを組んでみた

FURU=0
@SAIOFURU
IF FURU==3 THEN PRINT "メナシ":END
A=RND(6)+1
B=RND(6)+1
C=RND(6)+1
PRINT A;" ";B;" "C
IF A==B AND A==C THEN PRINT "ゾロメ":END
IF A==B THEN PRINT "デメ = ";C:END
IF A==C THEN PRINT "デメ = ";B:END
IF B==C THEN PRINT "デメ = ";A:END
IF A+B+C==15 THEN PRINT "シゴロ":END
IF A+B+C==6 THEN PRINT "ヒフミ":END
FURU=FURU+1:GOTO @SAIOFURU



ダイレクトモードにして、

RUN (エンター)

で起動する。2回目からは、十字キー上、Ⓐボタンで起動する。
音は、♪チンチロリンではなく、♪ピコピコだ。




コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする