Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何完成这个游戏_Php - Fatal编程技术网

Php 如何完成这个游戏

Php 如何完成这个游戏,php,Php,我正在用php做一个游戏。我的问题是如何将其循环成10轮,如何使其不区分大小写,并接受前两个字母的单词,即使它错了。需要将用户输入到字符串。我成功地编写了这个代码,但不知道下一步该怎么办 剪刀 当对用户IQ有疑问时,尽可能使用下拉框、无线电框等限制预定义答案的选择 我写得很快。如果有任何错误,我认为你将能够调试,但我认为你会得到jist <?php session_start(); if(isset($_POST['play'])) { $p1 = $_POST['p1']; /

我正在用php做一个游戏。我的问题是如何将其循环成10轮,如何使其不区分大小写,并接受前两个字母的单词,即使它错了。需要将用户输入到字符串。我成功地编写了这个代码,但不知道下一步该怎么办


剪刀

当对用户IQ有疑问时,尽可能使用下拉框、无线电框等限制预定义答案的选择

我写得很快。如果有任何错误,我认为你将能够调试,但我认为你会得到jist

<?php
session_start();
if(isset($_POST['play']))
{
    $p1 = $_POST['p1']; //don't need to check if post empty, 'cause used has a default value
    $p2 = $_POST['p2']; //don't need to check if post empty, 'cause used has a default value
    $loop = intval($_POST['play']);
    echo $p2;
    switch($p1)
    {
        case 'ROCK':
            if($p2=='PAPER')$_SESSION['game'][$loop]='Round '. $loop . ' - Player 2 WINS!';
            else if($p2=='SCISSORS')$_SESSION['game'][$loop]='Round '. $loop . ' - Player 1 WINS!';
            else if($p2=='ROCK')$_SESSION['game'][$loop]='Round '. $loop . ' - It\'s a DRAW!';
            break;
        case 'PAPER':
            if($p2=='ROCK')$_SESSION['game'][$loop]='Round '. $loop . ' - Player 2 WINS!';
            else if($p2=='SCISSORS')$_SESSION['game'][$loop]='Round '. $loop . ' - Player 1 WINS!';
            else if($p2=='PAPER')$_SESSION['game'][$loop]='Round '. $loop . ' - It\'s a DRAW!';
            break;
        case 'SCISSORS':
            if($p2=='PAPER')$_SESSION['game'][$loop]='Round '. $loop . ' - Player 1 WINS!';
            else if($p2=='ROCK')$_SESSION['game'][$loop]='Round '. $loop . ' - Player 2 WINS!';
            else if($p2=='SCISSORS')$_SESSION['game'][$loop]='Round '. $loop . ' - It\'s a DRAW!';
            break;

    }

    $loop++;
}
?>
<html>
<body>
<h1>ROCK PAPER SCISSORS</h1>
<form method="post">
<input type="hidden" name="play" value='<?php if(isset($loop))echo $loop; else echo 1; ?>'>
<p>Player 1: 
    Rock<input type="radio" name="p1" value='ROCK' checked>
    PAPER<input type="radio" name="p1" value='PAPER'>
    SCISSORS<input type="radio" name="p1" value='SCISSORS'>
</p>
<p>Player 2: 
  Rock <input type="radio" name="p2" value='ROCK' checked>
  PAPER <input type="radio" name="p2" value='PAPER'>
   SCISSORS<input type="radio" name="p2" value='SCISSORS'>
</p>
<button>Submit</button>
</form>
<?php
    if(!empty($_SESSION['game']))
    {
    $game=$_SESSION['game'];
    foreach($game as $count=>$comment)echo $comment.'<br>';
    if($count==10)echo '<h1>END OF GAME</h1>';
    }
?>
</body>
</html>

剪刀

要使其不区分大小写,请在输入上使用strtolower使其小写,并使用小写字符串进行比较。 在代码中替换此选项:

$player1 = $_POST['p1'];
$player2 = $_POST['p2'];
为此:

$player1 = strtolower($_POST['p1']);
$player2 = strtolower($_POST['p2']);
还可以通过在中使用多个表达式来减少elseif块的数量 一个

两者

结果相同。您可以使用或表达式将两者组合到一个块中,如下所示:

if(($player1 == 'Rock' && $player2 =='Paper') || ($player1 == 'Scissors' && $player2 == 'Rock'))
for($round=1; $round<=10; $round++)
要循环10次,可以使用如下的for循环:

if(($player1 == 'Rock' && $player2 =='Paper') || ($player1 == 'Scissors' && $player2 == 'Rock'))
for($round=1; $round<=10; $round++)

for($round=1;$roundhi tnx)用于您的帮助。我将for循环放在哪里?@datagutten