質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

2回答

4327閲覧

PHPによる「じゃんけんゲーム」

Sen

総合スコア12

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2015/04/24 11:11

このソースをさらに簡潔にすることはできるのでしょうか?

lang

1<html> 2<head> 3<meta http-equiv="content-type" content="text/html;charset=utf-8"/> 4<title>jankenform</title> 5<style> 6img{border-style: none;} 7a{text-decoration: none;} 8</style> 9</head> 10<body> 11<div align="center"> 12<div><h1>じゃんけんゲーム</h1></div> 13<?php 14 //「グー、チョキ、パー」を配列で準備 15 $hand = array("グー","チョキ","パー"); 16?> 17<p>あなたが出す手を選んでください。</p> 18<?php 19 for($i=0;$i<3;$i++){ 20 echo"<a href='jankenresult_6.php?choice=".$i."'><img src='img/". $i .".png' height='100px'/></a>"; 21 } 22?> 23</div> 24</body> 25</html>

lang

1<?php 2 session_start(); 3?> 4<html> 5<head> 6<meta http-equiv="content-type" content="text/html;charset=utf-8"/> 7<title>jankenresult</title> 8<style> 9img{border-style: none;} 10a{text-decoration: none;} 11td{text-align: center;} 12</style> 13</head> 14<body> 15<div align="center"> 16<?php 17 if(!isset($_SESSION["userhand"])){ 18 $_SESSION["user_cnt"]=0; 19 $_SESSION["com_cnt"]=0; 20 $_SESSION["userhand"]=array(); 21 $_SESSION["comhand"]=array(); 22 $_SESSION["fight_u"]=array(); 23 $_SESSION["fight_c"]=array(); 24 } 25 //「グー、チョキ、パー」を配列で準備 26 $hand = array("グー","チョキ","パー"); 27 $judge = array("あいこ","勝ちです","負けです"); 28 29 //ユーザーの手を変数に格納 30 $userhand = $_GET["choice"]; 31 32 //コンピューターの手を0~2の数値でランダムに発生させ、変数に格納 33 $comhand = mt_rand(0,2); 34 $fight = $userhand - $comhand; 35 array_push($_SESSION["userhand"],$userhand); 36 array_push($_SESSION["comhand"],$comhand); 37 38 //じゃんけんの勝敗を表示 39 if($fight == 0){ 40 echo "<h1>あいこです!!</h1><br/>"; 41 array_push($_SESSION["fight_u"],0); 42 array_push($_SESSION["fight_c"],0); 43 }else if($fight == 2 || $fight== -1){ 44 45 ++$_SESSION["user_cnt"]; 46 echo "<h1>勝ちです!!</h1><br/>"; 47 array_push($_SESSION["fight_u"],1); 48 array_push($_SESSION["fight_c"],2); 49 }else{ 50 ++$_SESSION["com_cnt"]; 51 echo "<h1>負けです!!</h1><br/>"; 52 array_push($_SESSION["fight_u"],2); 53 array_push($_SESSION["fight_c"],1); 54 } 55 echo "あなたは <img src='img/". $userhand .".png' height='100px'/> をだしました。 "; 56 echo "コンピューターは <img src='img/". $comhand .".png' height='100px'/> をだしました。<br/>"; 57 58 $pub = ""; 59 $pub .= "<br/><table><tr><th style='text-align:left;'>あなたの手:</th>"; 60 foreach ($_SESSION["userhand"] as $u){ 61 $pub .= "<td><img src='img/". $u .".png' height='30px'/></td>"; 62 } 63 $pub .= "</tr><tr><th style='text-align:left;'>コンピューターの手:</th>"; 64 foreach ($_SESSION["comhand"] as $c){ 65 $pub .= "<td><img src='img/". $c .".png' height='30px'/></td>"; 66 } 67 68 //5回先に勝ったときの表示、また5回未満のときの表示 69 if($_SESSION["user_cnt"]==5){ 70 echo "<p><font size='20px'>あなたの勝ちです。<br/>☆☆☆☆☆<br/><br/>勝率 : ". (int)(5/sizeof($_SESSION["userhand"]) * 100) ."%</font></p><br/><a href=\"jankenform_6.php\">もう一度じゃんけんする!</a>"; 71 echo $pub; 72 echo "</tr><tr><th style='text-align:left;'>あなたの勝敗:</th>"; 73 foreach ($_SESSION["fight_u"] as $f_u){ 74 echo "<td>". $judge[$f_u] ."</td>"; 75 } 76 echo "</tr></table>"; 77 $_SESSION = array(); 78 }else if($_SESSION["com_cnt"]==5){ 79 echo"<p><font size='20px'>コンピューターの勝ちです。<br/>★★★★★<br/><br/>勝率 : ". (int)(5/sizeof($_SESSION["comhand"]) * 100) ."%</font></p><br/><a href=\"jankenform_6.php\">もう一度じゃんけんする!</a>"; 80 echo $pub; 81 echo "</tr><tr><th style='text-align:left;'>コンピューターの勝敗:</th>"; 82 foreach ($_SESSION["fight_c"] as $f_c){ 83 echo "<td>". $judge[$f_c] ."</td>"; 84 } 85 echo "</tr></table>"; 86 $_SESSION = array(); 87 }else { 88 echo"あなたの勝ち数:"; 89 for($i=0;$i<$_SESSION["user_cnt"];$i++){ 90 echo "☆"; 91 } 92 echo"<br/>"; 93 echo"コンピューターの勝ち数:"; 94 for($i=0;$i<$_SESSION["com_cnt"];$i++){ 95 echo "★"; 96 } 97 echo"<br/>"; 98 echo"<p>あなたが出す手を選んでください。</p>"; 99 for($i=0;$i<3;$i++){ 100 echo"<a href='jankenresult_6.php?choice=".$i."'><img src='img/". $i .".png' height='100px'/></a>"; 101 } 102 } 103?> 104</div> 105</body> 106</html>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

簡潔にする前段階として
__HTML__部分をできるだけPHPの中に入れないような作りにすることをオススメします。

HTMLがコード内で重複している部分がなくなります。

lang

1if ($_SESSION["user_cnt"] == 5) { 2 $winner = "あなた"; 3} 4... 5<p><font size='20px'><?=$winner?>の勝ちです。<br /> 6... 7</body> 8</html>

また簡潔に__コードの読みやすさ__も含めるとすると__array()[]__にするなど新しめの書き方を覚えるのはどうでしょう?(参考書が古いとarray()となっているかもしれません)

lang

1$_SESSION["userhand"] = [];

投稿2015/04/29 15:54

hum2

総合スコア51

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

回答ではありませんが、考えるヒントを入れることにしました。
(それにしても懐かしいと感じたのは僕だけですかね・・・)

ユーザー定義関数クラスの基礎について勉強されると少し見え方が変わるかも知れません。

じゃんけんゲーム一つでも中々興味深く面白いところでもあるので、挑戦されてる方が多いですね。
たとえば、こちらや、アルゴリズムについて考えていらっしゃるこちらなど、 みんな一様ですね。
是非頑張ってみんなが楽しめるゲームを作成されることを期待します。

投稿2015/04/28 10:58

lib

総合スコア446

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問