【问题标题】:Verify the figure gap between 2 numbers and a random number in PHP在 PHP 中验证 2 个数字和一个随机数之间的数字差距
【发布时间】:2015-12-22 16:58:08
【问题描述】:

我对 PHP 有一点小问题。我用 PHP 创建了一个小游戏,其中两个玩家必须选择一个数字,最接近的一个获胜。

以下是规则:

  • 玩家 1 选择最小数(生成要查找的随机数)CHECK

  • 玩家2选择最大数(生成随机数来查找)CHECK

  • 两位玩家选择他们的号码(在最小值和最大值之间)

  • 最接近随机生成的数字(在最小值和最大值之间)的玩家,赢得比赛

这是我的脚本

<form action="" method="post">
    <input name="min" type="number" placeholder="Min" />
    <input name="max" type="number" placeholder="Max" />
    <input name="player1" type="number" placeholder="player1" />
    <input name="player2" type="number" placeholder="player2" />
    <input name="submit" type="submit" />
</form>

<?php

    // Variables

    $min = $_POST['min'];
    $max = $_POST['max'];
    $player1 = $_POST['player1'];
    $player2 = $_POST['player2'];


    // Get Random Number

    function getRandomNumber($min, $max) {

        return mt_rand($min, $max);

    }


    // Submit Form

    if (isset($_POST['submit'])) {

        echo "The random number is " . getRandomNumber($min, $max) . "<br />";
        echo "Player 1: " . $player1 . "<br />";
        echo "Player 2: " . $player2 . "<br />";

    }

?>

提前感谢您的回复。

【问题讨论】:

  • 玩家 1 和玩家 2 坐在同一台电脑上?

标签: php random


【解决方案1】:

毫无疑问,您已经找到了问题的答案,但如果没有,那么这可能会有所帮助。

$min = intval( $_POST['min'] );
$max = intval( $_POST['max'] );

$player1 = intval( $_POST['player1'] );
$player2 = intval( $_POST['player2'] );

function getRandomNumber( $min, $max ) {
    return mt_rand($min, $max);
}


if ( isset( $_POST['submit'] ) ) {

    $random=getRandomNumber( $min, $max );

    $results=array();
    $results['player1']=abs( $random-$player1 );
    $results['player2']=abs( $random-$player2 );

    $low=min( $results );
    $high=max( $results );
    $winner=array_search( $low, $results );
    $loser=array_search( $high, $results );



    if( $low!==$high ){
        echo ucfirst( $winner ).' wins by guessing '.$_POST[ $winner ].' and being '.$low.' away from the random number of '.$random.'. 
            '.ucfirst( $loser ).' lost by guessing '.$_POST[ $loser ].' which was '.$high.' from the designated random number...';
    } else {
        echo 'It\'s a draw!!! Both players guessed '.$_POST[ $winner ].' which is '.$low.' away from the target of '.$random;
    }
}

【讨论】:

    【解决方案2】:

    如果没有某种持久性数据,这是行不通的。您有一个服务器将为每个用户进行会话。但是你不能在没有中间握手的情况下与其他用户共享会话。

    我建议将输入发布到数据库。数据库还必须保存每个玩家的状态(无论他们是否已提交)。

    我进一步建议您使用带有 AJAX 的 JavaScript 来控制每个客户端,并轮询服务器以获取状态。

    【讨论】:

    • 当然,这只是一个直接测试的快速演示;)
    【解决方案3】:
    <?php
    
    // Variables
    
    $min = $_POST['min'];
    $max = $_POST['max'];
    $player1 = $_POST['player1'];
    $player2 = $_POST['player2'];
    
    
    // Get Random Number
    
    function getRandomNumber($min, $max) {
    
        return mt_rand($min, $max);
    
    }
    
    
    // Submit Form
    
    if (isset($_POST['submit'])) {
        $rd =  getRandomNumber($min, $max);
        $p1 = $player1 - $rd;
        $p2 = $player2 - $rd;
        echo "The random number is " . $rd . "<br />";
        echo "Player 1: " . $player1 . "<br />";
        echo "Player 2: " . $player2 . "<br />";
        if($p1<$p2){
             echo "Player 1 wins!";
    
       }else{
            echo "Player2 wins!";
       }
    }
    
    ?>
    

    【讨论】:

      猜你喜欢
      • 2014-07-06
      • 2017-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多