• 締切済み

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)をランダムで与えて実行し、最終的なプレイヤーのステータスを出力できるようにプログラムを変更してください

noname#233492
noname#233492
  • Ruby
  • 回答数1
  • ありがとう数1

みんなの回答

回答No.1

どっかの問題のまる投げですか?少しも、自分で考えたというのが見えないのですが?世の中そんな甘くないですよ!

関連するQ&A

  • ジェットコースターの運動の向きの問題

    物理。ジェットコースターの運動の向きの問題。Aの位置からスタートするジェットコースターがある。 写真のジェットコースターから以下の問に答える問題です。解答はあっていますでしょうか? ①A地点と運動の向きが反対になる地点を全てあげよ。 ②速さが最も速い地点はどこですか? ③速さが最もおそい地点は どこですか? ④速さがDと同じ地点はどこですか全てあげよ。 ⑤速さがC地点よりはおそくてB地点よりはやい地点を全てあげよ。 ⑥速さがB地点よりはやくてH地点よりおそい地点を全てあげよ。 解答:①:E,F,G,H ②:G ③:B ④:E,F ⑤:A,D,E,F,H ⑥:A,D,E,F

  • PHP5 XML クエリ 

    PHP5でXMLのテストをしているのですが、わからないことがあります。 --- test.xml <A> <B> <C>TEST</C> <D> <E>1</E> <F>2</F> <G>3</G> </D> </B> </A> <?php $doc = new DOMDocument; $doc->preserveWhiteSpace = false; $doc->Load('test.xml'); $xpath = new DOMXPath($doc); $query = '//A/B/D/E'; $entries = $xpath->query($query); foreach ($entries as $entry) { echo "$entry->nodeValue\n"; } で1が返されますが、 $query = '//A/B/D/E'; で、Eのノードを決め打ちしているので、foreachで回すのが気に入らないのですが この方法が一般的でしょうか? $e = なんとか??; で$entries = $xpath->query($query); のあと、取得できないでしょうか? あと、クエリという使い方で例えば2以上データを取得する この場合はF,Gの要素を取得するクエリの記述方法が知りたいです。

    • ベストアンサー
    • PHP
  • すごろくの順位の決め方

    例えば3人(A,B,C)が遊んでいます。 A,B,Cの順番でスタートしました。 Aがゴールしたすぐ次(同じ順目)にBがゴールした場合、 ※同じ順目とは、サイコロを振る回数がAもBも同じという意味です。 (1)Aが1番でBが2番なのか、 (2)AとBが同時1位でしょうか? とにかく早抜けなら(1)、サイコロを振るチャンスを同じにするなら(2)が正解だと思うのですが。 皆さん通常どっちで遊んでいますか? よろしくお願いします。

  • 曲名を教えてください

    ヒーリング系の音楽で、一度テレビ番組のBGMとして流れているのを聞いたのですが、どうしても曲名がわかりません。 http://www.musipedia.org/flash_piano.html こちらのサイトで、鍵盤をクリックして旋律を(曲の前奏部分から)引いてみたところ、 g2-465 b2-800 a2-1223 d2-496 g2-816 f2s-456 d2-855 b1-449 c2-792 b1-407 c2-408 e2-464 f2s-424 g2-2112 g2-479 b2-810 a2-1278 d2-449 g2-792 f2s-463 d2-791 b1-393 c2-792 b1-407 c2-481 e2-431 f2s-464 g2-848 g2-456 f2s-488 g2-2112 f2s-431 d2-2258 e2-814 g2-401 e2-423 d2-432 c2-472 d2-1656 g2-480 f2s-439 g2-1784 f2s-425 d2-2231 e2-824 d2-935 c2-840 d2-2296 g2-816 f2s-1256 e2-440 d2-2264 e2-728 d2-1568 c2-414 d2-2113 e2-792 d2-1136 c2-399 d2-1440 b1-744 d2-1329 f2s-711 g2-1391 a2-688 b2-1976 b2-2192 c3-2088 b2 ということでした。g2とかはコードで、そのあとの数字は音の長さのようです。三拍子で、前奏の最初に半拍空きます。 天使の歌声のような感じなのですが、サビ部分にコーラスがあるだけで、歌詞などはなかったと思います。

  • PHPによるXML作成について

    PHPによるXML作成について いつもお世話になっております。 XMLファイルの署名の作成を行っております。 A.xmlというXMLファイルに後で作成した部分をまとめて追記したいと思っています。 「まとめて」というのは、後で追記する部分をプログラム上で一つの変数に格納して、その変数に格納した内容(複数行)を指定した場所に書き込むということです。 XMLの操作として、PHPにこういう機能が無いのであればファイル操作としてでもかまいません。 何かうまく行く方法はありませんでしょうか? よろしくお願いいたします。 実際の例は以下のような感じです。 【A.xmlの例】 <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet href="00001.xsl" type="text/xsl"?> <DataRoot> <A>999000000000000009</A> <B>0001</B> <STYLESHEET>999000000000000009.xsl</STYLESHEET> <C ID="CCCCCC"> <D> <E> <E1>100495</E1> <E2>4950000020161F01</E2> </E> <F>ファイル名称</F> </D> </C> ******** ここの一括で作成した部分を追記したい ******** </DataRoot> 【追記情報 この部分を変数に格納しています。】 <G xmlns = "http://www.xxxxxxxxx" id = "2009010101"> <Hinfo> <I> <I1></I1> <I2></I2> </I> </Hinfo> </G> 【結果のA.xml】 <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet href="00001.xsl" type="text/xsl"?> <DataRoot> <A>999000000000000009</A> <B>0001</B> <STYLESHEET>999000000000000009.xsl</STYLESHEET> <C ID="CCCCCC"> <D> <E> <E1>100495</E1> <E2>4950000020161F01</E2> </E> <F>ファイル名称</F> </D> </C> <G xmlns = "http://www.xxxxxxxxx" id = "2009010101"> <Hinfo> <I> <I1></I1> <I2></I2> </I> </Hinfo> </G> </DataRoot>

    • ベストアンサー
    • PHP
  • 芝地にボールを転がす物理の質問です。

    芝地にボールを転がす物理の質問です。 芝地に20度の角度で板を設置してボールを転がします。 ボールのスタート地点をAとして、Aの高さをB、その時の板の長さをC、Aから転がしたボールが芝地を転がった距離をDとします。 スタート地点をAの距離の2倍(2B、2C)地点Eにした場合、ボールが芝地を転がる距離Fも2倍の2Dになるのでしょうか?

  • excel 関数作成の簡素化 ?

    A B C D E F G H I J 1784 1784 1781 1782 1809 1813 1821 1813 1784 1784 (1)A-B B-C C-D D-E E-F F-G G-H H-I I-J (1)0 3 -1 -27 -4 -8 8 29 0 (2)=SUMIF(A:I,">0",A:I) で 40になる 上記の(1)を使用せず (2)のように一気に出来ないか? もしも 表示が悪ければ 書き直し する為 回答不要

  • C言語 経路探索 経路リストの作成

    S→B→C → D →G   ↓  ↓→E→↑   →F→→↑ Start(S)からGoal(G)までのとりうる全経路を自動作成するプログラムを C言語で作成したいです。 上の例だと、 ルート1: SBCDG ルート2: SBCEG ルート3: SBFEG の3つのルートを算出できるプログラムです。 節と節の接続情報は持っているものとします。 S→B B→C C→D D→G C→E E→G B→F F→E struct connectList{ int node1; int node2; } struct root{ int nodeId; int nodeCost; root_t** next; }; 木構造のような構造体で作成していこうとしたのですが、 ひとつのS→Gまでのパスは作成できるのですが、 すべてのパスを求めるにはどうしたらよいのでしょうか? データ構造、プログラムサンプルを教えていただけないでしょうか?

  • エクセルで、ある列に並んでいる各数字の間隔を表示させたい

    エクセル(2003)を使ってます。 Sheet1に下のようなサイコロの出目の表があります。 (1日1回サイコロをふって、出た目を調べていく…) A B 1 年月 出目 2 2008/1/1 3 3 2008/1/2 4 4 2008/1/3 1 5 2008/1/4 1 6 2008/1/5 6 7 2008/1/6 4 8 2008/1/7 2 9 2008/1/8 5 10 2008/1/9 3 そしてSheet2に下のような表を作りたいのですが… A B 1 2008/1/9  現在 2  出目   出目の空き数 3 1 5 4 2 2 5 3 0 6 4 3 7 5 1 8 6 4 やりたいことはSheet2のB3セル~B8セルに サイコロの各出目の空き数(すなわちサイコロの各目が 最後に出てから何日間出ていないかの日数)を表示させたいのです。 ※ちなみにSheet1のA列は日々増えていきます。 Sheet2のB3セル~B8セルに入る関数を教えてください。 よろしくお願いします。m(_ _)m

  • 2つの項目で重複値を入力させない

    以下のような地点間の距離を保存するテーブルで、逆区間を登録させたくない場合は どのような制約をかければよいでしょうか。 CREATE TABLE DISTANCE_TBL ( S_POS CHAR(1), -- スタート地点 E_POS CHAR(1), -- ゴール地点 DISTANCE NUMBER(6) -- 距離 ) S_POS='A'、E_POS='B'がすでに登録されていた場合に S_POS='B'、E_POS='A'を登録させたくありません。 「CONSTRAINT CK_DISTANCE CHECK (S_POS < E_POS)」 として、登録時に自前でチェックするぐらいしか思いつきませんでした。 なにかよい方法があればご教授願います。

専門家に質問してみよう