gpt4 book ai didi

php - 如何从玩家手中移除重复的扑克牌?

转载 作者:行者123 更新时间:2023-12-03 23:52:18 26 4
gpt4 key购买 nike

我正在尝试将一手五张牌发给一位玩家并计分。我的计分程序似乎运行良好,但我时常遇到重复发牌的问题。我尝试使用 while 循环来检查重复的卡片,但这似乎有点老套。我的代码如下。请记住,我绝对是新手,所以解决方案越简单越好!非常感谢。

// create suits array
$suits = array("996", "997", "998", "999");

// create faces array
$faces = array();
$faces[1] = "1";
$faces[2] = "2";
$faces[3] = "3";
$faces[4] = "4";
$faces[5] = "5";
$faces[6] = "6";
$faces[7] = "7";
$faces[8] = "8";
$faces[9] = "9";
$faces[10] = "10";
$faces[11] = "11";
$faces[12] = "12";
$faces[13] = "13";

// create player's hand
$card = array();

for ($i = 0; $i < 5; $i++)
{
$face_value = shuffle($faces);
$suit_value = shuffle($suits);
$card[$i] = $faces[$face_value].$suits[$suit_value];

$counter = 0;
while ($counter < 100)
{
if (in_array($card[$i], $card))
{
$face_value = shuffle($faces);
$suit_value = shuffle($suits);
$card[$i] = $faces[$face_value].$suits[$suit_value];
}
$counter++;
}

print ("<img src=\"../images/4/$card[$i].gif\">");

}

最佳答案

简单地设置一个包含 52 个元素的数组可能更有效,每个元素对应一张卡片。

$cards = range(0,51);
shuffle($cards);
$hand = array();
for ($i = 0; $i < 5; $i++)
{
$hand[$i] = $cards[$i];
}

请注意,您可以通过以下操作简单地提取出一张牌 $i 的花色和点数

$suit = $hand[$i] % 4;
$rank = $hand[$i] / 4;

这将防止重复。

编辑:花色和等级颠倒了。他们现在应该是正确的。

关于php - 如何从玩家手中移除重复的扑克牌?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15602651/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com