PHPで宝探しゲームの作成について
下記の問題について回答案をいただけますでしょうか。
複数の島をボートで巡って、ゴールドを探し出し、無事ゴールへたどり着けるか!?
プレイヤーはターンごとに1回または複数回サイコロを振ります(通常は1回ですが、島によっては複数回必要な場合があります)。 プレイヤーのいる島ごとに、サイコロの目に応じてターンの行動が決まります。 スタート地点から出発し、ゴールへ到達して下さい。群島はスタートとゴール、およびA島~E島の5つの島からなります。プレイヤーは、ターン数、所持ゴールド、および巡った島の記録を保持しています。島ごとのサイコロの目と行動は、次のように決められています。
スタート地点:サイコロの出目が1ならA島へ、2ならB島へ、6ならC島へ、その他なら、動けない
A島:サイコロの出目が3ならB島へ、4ならC島へ、その他なら100Gゲットしてスタートへ
B島:サイコロの出目が奇数ならD島へ、偶数ならE島へ
C島:サイコロを2回ふって、出目の和が奇数なら200GゲットしてD島へ、偶数なら100GゲットしてE島へ
D島:サイコロの出目が4か5ならE島へ、それ以外は、スタートへ
E島:サイコロの出目が6かつ所持Gが500G以上ならゴールへ、それ以外なら、100GゲットしてC島へ
問題1
サイコロの出目の配列を入力値で受け取り、配列を最後まで処理した段階での、プレイヤーのステータスを出力とするプログラムを作成してください。 入出力は、以下の4パターンをすべてパスするようにしてください。
記録に使う島名は、以下のようにしてください
スタート地点:S
A島:A
B島:B
C島:C
D島:D
E島:E
ゴール:G
ターン数は、サイコロを振った回数ではなく、ヒントの判定を行った回数です。
スタート地点でサイコロを振り、移動しても移動しなくても1ターン。
C島では2回サイコロを振り、その結果移動で1ターン。
テストデータ(CSV)
No., 入力, ターン数, 所持ゴールド, 履歴
1, "214211643636466", 12, 600, "S 2, B 1, D 4, E 2, C 11, E 6, C 43, D 6, S 3, S 6, C 46, E 6, G"
2, "3261255154523256", 13, 900, "S 3, S 2, B 6, E 1, C 25, D 5, E 1, C 54, D 5, E 2, C 32, D 5, E 6, G"
3, "261621212322554264554221633114221645351356", 33, 2200, "S 2, B 6, E 1, C 62, E 1, C 21, D 2, S 3, S 2, B 2, E 5, C 54, D 2, S 6, C 45, D 5, E 4, C 22, E 1, C 63, D 3, S 1, A 1, S 4, S 2, B 2, E 1, C 64, E 5, C 35, E 1, C 35, E 6, G"
4, "624334152252512416431546432413114514414135214511425615154236231334534125561142642614615452623143232142224616116334416142653453565356335425423432454212534324465262655434651434641534565325652536", 152, 9300, "S 6, C 24, E 3, C 34, D 1, S 5, S 2, B 2, E 5, C 25, D 1, S 2, B 4, E 1, C 64, E 3, C 15, E 4, C 64, E 3, C 24, E 1, C 31, E 1, C 45, D 1, S 4, S 4, S 1, A 4, C 13, E 5, C 21, D 4, E 5, C 11, E 4, C 25, D 6, S 1, A 5, S 1, A 5, S 4, S 2, B 3, D 6, S 2, B 3, D 1, S 3, S 3, S 4, S 5, S 3, S 4, S 1, A 2, S 5, S 5, S 6, C 11, E 4, C 26, E 4, C 26, E 1, C 46, E 1, C 54, D 5, E 2, C 62, E 3, C 14, D 3, S 2, B 3, D 2, S 1, A 4, C 22, E 2, C 46, E 1, C 61, D 1, S 6, C 33, E 4, C 41, D 6, S 1, A 4, C 26, E 5, C 34, D 5, E 3, C 56, D 5, E 3, C 56, D 3, S 3, S 5, S 4, S 2, B 5, D 4, E 2, C 34, D 3, S 2, B 4, E 5, C 42, E 1, C 25, D 3, S 4, S 3, S 2, B 4, E 4, C 65, D 2, S 6, C 26, E 5, C 54, D 3, S 4, S 6, C 51, E 4, C 34, D 6, S 4, S 1, A 5, S 3, S 4, S 5, S 6, C 53, E 2, C 56, D 5, E 2, C 53, E 6, G"
テストデータ(関数形式)
/* 1 */ test(1, "214211643636466", 12, 600, "S 2, B 1, D 4, E 2, C 11, E 6, C 43, D 6, S 3, S 6, C 46, E 6, G");
/* 2 */ test(2, "3261255154523256", 13, 900, "S 3, S 2, B 6, E 1, C 25, D 5, E 1, C 54, D 5, E 2, C 32, D 5, E 6, G");
/* 3 */ test(3, "261621212322554264554221633114221645351356", 33, 2200, "S 2, B 6, E 1, C 62, E 1, C 21, D 2, S 3, S 2, B 2, E 5, C 54, D 2, S 6, C 45, D 5, E 4, C 22, E 1, C 63, D 3, S 1, A 1, S 4, S 2, B 2, E 1, C 64, E 5, C 35, E 1, C 35, E 6, G");
/* 4 */ test(4, "624334152252512416431546432413114514414135214511425615154236231334534125561142642614615452623143232142224616116334416142653453565356335425423432454212534324465262655434651434641534565325652536",152, 9300, "S 6, C 24, E 3, C 34, D 1, S 5, S 2, B 2, E 5, C 25, D 1, S 2, B 4, E 1, C 64, E 3, C 15, E 4, C 64, E 3, C 24, E 1, C 31, E 1, C 45, D 1, S 4, S 4, S 1, A 4, C 13, E 5, C 21, D 4, E 5, C 11, E 4, C 25, D 6, S 1, A 5, S 1, A 5, S 4, S 2, B 3, D 6, S 2, B 3, D 1, S 3, S 3, S 4, S 5, S 3, S 4, S 1, A 2, S 5, S 5, S 6, C 11, E 4, C 26, E 4, C 26, E 1, C 46, E 1, C 54, D 5, E 2, C 62, E 3, C 14, D 3, S 2, B 3, D 2, S 1, A 4, C 22, E 2, C 46, E 1, C 61, D 1, S 6, C 33, E 4, C 41, D 6, S 1, A 4, C 26, E 5, C 34, D 5, E 3, C 56, D 5, E 3, C 56, D 3, S 3, S 5, S 4, S 2, B 5, D 4, E 2, C 34, D 3, S 2, B 4, E 5, C 42, E 1, C 25, D 3, S 4, S 3, S 2, B 4, E 4, C 65, D 2, S 6, C 26, E 5, C 54, D 3, S 4, S 6, C 51, E 4, C 34, D 6, S 4, S 1, A 5, S 3, S 4, S 5, S 6, C 53, E 2, C 56, D 5, E 2, C 53, E 6, G");
問題2
サイコロの出目および実行ターン数(10~100)をランダムで与えて実行し、最終的なプレイヤーのステータスを出力できるようにプログラムを変更してください
お礼
なるほど!そうするとc)の卵細胞は受精卵と考えれば、B)に対応するということですね。 となるとb)の生殖細胞は減数分裂に対応するとして、 また、A)がG2→第一分裂→G1⇔G2→第二分裂→・・・だと考えれば、b)生殖細胞はA)に対応するということでしょうか? つまり、答えは a)静止細胞・・・C) b)生殖細胞・・・A) c)卵細胞・・・B) d)癌細胞・・・E) e)細胞分化・・・D) ということでしょうか? 間違っていると思われるものがありましたら訂正よろしくお願いします!