【发布时间】:2025-12-03 20:30:01
【问题描述】:
我正在开发一款刮刮卡游戏,用户从我/我的商店购买刮刮卡,然后可以通过刮掉数字并匹配 3 张图片来兑换该刮刮卡以赢取奖品
像实体刮刮卡一样,我希望预先配置好奖品,以便我知道何时中奖,但显然用户不知道,这样我可以限制奖品,所以它不是真正的随机,而是会中奖者是随机的。
我知道如何设置奖品,但我需要检查数组中的每个数据值,以确保没有 3 个匹配的数字,除非他们真的赢了..
到目前为止我有这个(我会整理它并尽快缩短代码)
$numbers = array(
0 => rand(0,9),
1 => rand(0,9),
2 => rand(0,9),
3 => rand(0,9),
4 => rand(0,9),
5 => rand(0,9),
6 => rand(0,9),
7 => rand(0,9),
8 => rand(0,9)
);
随机生成9个数字
echo "<table>";
$i=0;
for($x=0;$x<3;$x++){
echo "<tr>";
for($y=0;$y<3;$y++){
echo "<td>" . $numbers[$i] . "</td>";
$i++;
}
echo "</tr>";
}
将它们排列成一个 3x3 的表格
我知道有命令 in_array() 将通过数组进行排序以查找某些值,但我不想运行一个无限循环检查每个值以查看是否匹配,因为它是劳动密集型的并且会很混乱也是。
我正在寻找任何人都可能提出的建议,以便我可以对数组进行排序并查看是否存在任何 3 个数字,如果存在,并且它们不应该存在(即用户实际上并没有中奖) 则应将其中一个更改为新数字。
所以提前感谢您的帮助,我期待您的建议
卢克
**** 编辑 **
+更多信息
为了挑选获胜者,我将使用这样的数据库查询
$stock = $conn -> query("SELECT DISTINCT * FROM codes WHERE Available = 1 AND 0 = FLOOR(RAND()*Chance) ORDER BY RAND()");
每个代码都有一定的获胜机会,如果匹配,则会显示,根据赢得的代码,将显示特定的奖品
$stock = $conn -> query("SELECT DISTINCT * FROM codes WHERE Available = 1 AND Win = 1);
'Win' 将是数据库中的一个表,每次有人玩游戏时它都会下降 1
所以每个代码都会有表格 Win 当它命中 1 时会在下一场比赛中弹出
这是我能想到的两种我认为可行的方法,这两种方法都可以让我大致控制何时以及是否有人获胜,但第二种解决方案显然是一种更准确的方法
【问题讨论】: