我正在尝试制作一个基于文本的游戏,但我似乎无法弄清楚为什么这段代码不起作用。
- 它在核心文件中有一个 mysqli 连接。
- 它具有数据库中的机会值。
- 排名在数据库中设置。
- 我没有收到任何错误,只是没有显示“成功”和“失败”消息。
代码:
<?php
include_once "core.php";
function checkRandom($chance){
return rand(1, 100) <= (int)$chance;
}
$userid = '1';
$getAllQuery = $data->query("SELECT * FROM players WHERE id = '$userid'") or die($data->error);
while ($getall = $getAllQuery->fetch_assoc()) {
$rank = $getall['rank'];
$chance1 = $getall['crime_chance1'];
$chance2 = $getall['crime_chance2'];
$chance3 = $getall['crime_chance3'];
$chance4 = $getall['crime_chance4'];
$chance5 = $getall['crime_chance5'];
$chance6 = $getall['crime_chance6'];
}
if (isset($_POST['crime'])) {
$choice = $_POST['crime'];
$pass = 0;
$fail = 0;
if ($choice == 1 && $rank <= 1) {
echo "3esd";
if (checkRandom($chance1)) {
echo "Success";
} else {
echo "Failure";
}
} else {
if ($choice == 2 && $rank <= 2) {
if (checkRandom($chance2)) {
echo "Success";
} else {
echo "Failure";
}
}
}
}
echo "<form method='POST' action='#'>";
if ($rank >= 1) {
echo "<label><input type='radio' name='crime' value='1'>Crime 1 " . $chance1 . "% chance</label><br />";
if ($rank >= 2) {
echo "<label><input type='radio' name='crime' value='2'>Crime 2 " . $chance2 . "% chance</label><br />";
if ($rank >= 3) {
echo "<label><input type='radio' name='crime' value='3'>Crime 3 100% chance</label><br />";
}
}
}
echo "<input type='submit'>
</form>";
?>
我真的很感激一些帮助。 :D
最佳答案
除以下情况外,此代码似乎工作正常:
1) 没有任何东西可以处理 Rank 3+,因为 IF 语句是 <= 1 或 <= 2 且 3 是 > then 1 和 3。
2) 如果您选择第一个选项,并且排名不是 1,则代码不会返回任何内容,因为第一个 IF 语句仅限于所选选项为 1 并且排名 <= 1。
3) 如果您选择第二个选项,并且排名不是 2,则代码不会返回任何内容,因为第二个 IF 语句仅限于所选选项为 1 并且排名 <= 2。
关于PHP 排名和选择操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24170767/