PHPで作るゲーム覚書

気分転換や、占い代わりに一日一回だけ出来るゲームを作る。

データベースに結果を蓄積してグラフにする練習を兼ねる

スポンサーリンク

出目を足して行くゲーム

アイデア

1人制。1ターン3シュート。3ターン。

基本概念:3回シュートして出た目の合計が得点。ただし10(か11)を超えたら0点になってしまう。2シュートでのストップ可。3ターンまでの合計が総合得点になる。

拡張概念:自由ドラ。開始前に指定した目が入っていたら得点加算

拡張概念:日付に応じたドラ。(日付÷6)+1の剰余系など

拡張概念:3シュート後にロールしてドラを決める

拡張概念:3シュート振った場合のみ、形に役をつける。目がそろっている(スリー、ツー)。目が連続している。など

これ、簡単で良いな♪

実装

基本の流れ(ボツ)

全体は3ターンのループ。for($t=0;$t<3;$t++){~~~}

内側に3ロールのループ。for($r=0;$r<3;$r++){~~~}
ブレイクあり(合計が10を超える、または2ターンでの切り上げ)

ダイスロールは$num=mt_rand(1,6);

出目を配列$result[0][0]~[2][2]に入れる。
$result[$t][$r]=$num;

合計得点を配列$score[0]~[2]に入れる
$score[$t]+=$result[$t][$r];

10点超えたら得点を0にしてブレイクして次のターンへ
if( $score[$t]>10 ){$score[$t]=0;break;}

2ターンでの切り上げを選択したらブレイクして次のターンへ
ダイアローグを出すか?

10点超えずに3ロール終わったら($r=2)ループ終了して次のターンへ

3ターン($t=2)終わったらゲーム終了

流れ(修正版)

久しぶりに作ったので忘れていた(汗)フォームによる画面遷移後に表示するのでタイミングが直感的でないんだったわ。

画面は3つ。「start.php」「roll.php」「out.php」「result.php」

主な変数

$SESSION_[‘turn’]→現在のターン数。0~2
$SESSION_[‘shoot’]→現在のシュート数。0~2

$SESSION_[‘roll’]→出目の配列。
1ターン目の2シュート目の場合は、$SESSION_[‘roll’][0][1] 現在の目は、$SESSION_[‘roll’][$SESSION_[‘turn’]][$SESSION_[‘shoot’]] 面倒くせえ…

$SESSION_[”]→

画面と遷移

(start.phpで開始)
色んな変数をリセット

フォームA表示。<form action=”” method=”post”>
名前入力(パスワード)。ドラやボーナス決め。フォームボタン押し下げでstart.php自身を再表示。

フォームB表示<form action=”roll.php” method=”post”>
「開始」ボタン押し下げでroll.phpへ遷移


(roll.php)

初回処理なし

通常処理なし

ルール説明。スコア合計。などを表示

フォーム表示<form action=”out.php”>
「roll」ボタン押し下げでout.phpへ遷移


(out.php)

初回処理

通常処理
出目を計算$rollN=mt_rand(1,6);
配列に収納$SESSION_[‘roll’][$SESSION_[‘turn’]][$SESSION_[‘shoot’]]=$rollN;

回数処理
シュートを+1する。$SESSION_[‘shoot’]++;
シュート>3ならシュートを0に戻してターンを+1する。

ルール説明。スコア合計。などを表示↓

フォーム表示
ロールが$2なら「ロール」か「ストップ」か選択

「Roll」押し下げなら何もせずplay.phpへ。
「Stop」なら$r+1してplay.phpへ。


result.phpへ

「再遊」ボタンでstart.phpへ

 

ミニヤッツイー(ミッツィーMittzee)

サイコロ3つで行うヤッツィー。3回ロール。全ターン

役一覧(考案中)
ミッツィー(3つの目がそろう)
ストレート端(123,456)
ストレート中(234,345)
ステップ(135,246)
ナンバーズ(選択した目×数を得点にする)
ボーナス(ナンバーズの合計が31点を超えた場合)

 

タイトルとURLをコピーしました