goo blog サービス終了のお知らせ 

TOY VOX

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

チンチロリン

2025-02-17 20:12:00 |  ダイス
「いいじゃねえか、まだサイを投げたわけじゃねぇ」

(2020年4月記事の再掲)

サイコロを使ったかんたんなゲーム、「チンチロリン」を作ってみよう。
まずはサイコロを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でシェアする

ヨット 15

2022-04-12 20:52:09 |  ダイス
 基本部分のヨットを何回かくりかえして、この思考ルーチンの最高点(変数HS)と平均点(変数AV)を見てみよう。
 初期設定の前にプログラム追加。


 終了サブルーチンの後に追加。


 サンプル採取100回。最高点77、平均点54。


 もう100回、最高点79、平均点50。







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

ヨット 14

2022-04-12 00:55:50 |  ダイス
 つづいて「どのサイコロを振りなおすか」の思考ルーチン(@think)を作る。


 シンプルに大きい目を優先して出目を形成する。


 動作確認。1回目、55点。


2回目、74点。


3回目、62点。


4回目、54点。


5回目、67点。


 正しく動作している。


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

ヨット 13

2022-04-12 00:42:46 |  ダイス
 得点選択の思考ルーチンをシンプル化。forループ3つにまとめてみた。


 動作確認。


 目がそろわなくて「2」が1個のとき、コンピュータは「1」を選択して0を得点した。改善の余地があるかもしれない。
 試行錯誤のすえ、思考ルーチンはやはりif文羅列のままにしておいた。こちらのほうが後々ヨットセクションに対応できるだろう。



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

ヨット 12

2022-04-11 01:02:22 |  ダイス
 仕切り直し。ラウンド1、サイコロの目「1,5,6,5,6」でコンピュータはカテゴリ「1」を選択し1得点。


 ラウンド2、サイコロの目「5,5,4,5,4」でコンピュータはカテゴリ「5」を選択し15得点。

 ラウンド3、サイコロの目「3,4,1,1,4」でコンピュータはカテゴリ「2」を選択し0得点。

 ラウンド4、サイコロの目「6,6,6,2,2」でコンピュータはカテゴリ「6」を選択し18得点。

 ラウンド5、サイコロの目「5,2,5,4,3」でコンピュータはカテゴリ「3」を選択し3得点。


 ラウンド6、サイコロの目「6,4,5,4,1」でコンピュータはカテゴリ「4」を選択し8得点。


 合計45点。動作正常。






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