我已经开始使用尽可能多的PHP制作BlackJack游戏,现在我已经有了这个:
<?php
session_start();
// cards on pile
if(!isset($_SESSION["pile"])) $_SESSION["pile"] = array(
1 => 1,
2 => 2,
3 => 3,
4 => 4,
5 => 5,
6 => 6,
7 => 7,
8 => 8,
9 => 9,
10 => 10,
'Jack' => 10,
'Queen' => 10,
'King' => 10,
'Ace' => 11);
// cards in hand
if(!isset($_SESSION["hand"])) $_SESSION["hand"] = array();
// draw a card from the pile into the hand
function draw_card() {
$card = array_rand($_SESSION["pile"]);
$_SESSION["hand"][$card] = $_SESSION["pile"][$card];
unset($_SESSION["pile"][$card]);
}
function list_hand() {
foreach($_SESSION["hand"] as $card=>$points) {
echo 'Card: ' . $card . '<br>';
echo 'Points: ' . $points . '<br><br>';
}
}
// detect which form was triggered
function FORM($value) {
return isset($_POST["form"]) && $_POST["form"]==$value;
}
// handle the draw form
if(FORM("draw")){
draw_card();
list_hand();
}
?>
<form method="post">
<input type="hidden" name="form" value="draw">
<input type="submit" value="Draw a card">
</form>
很抱歉为你们丢掉一堆代码。
这个问题是,当这个页面打开时,它将启动会话。每次刷新时,给我标准的1张卡。 (它会加起来)我知道这是一个会话的重点,但不是我的页面的重点。我需要在页面刷新或页面关闭时结束会话。我没有运气搜索互联网。尝试过onUnload和许多其他事情。
其次,因为它不断添加卡片,直到所有14张都被绘制出来。它会添加最后一个Card:
Points:
,并在顶部添加Notice: Undefined index
。
我使用这个脚本第一次接触会话。所以我在结束/重置我的会话时会有点失落,如果我可以将它绑定到一个按钮。
总结我的问题:
会话需要在刷新或关闭页面时重置/停止。
打开页面时不应绘制1张标准卡。 (我宁愿拥有0和一个可以添加2的按钮,也许是一个开始按钮或其他东西)
每当最后一张牌从我的阵列中抽出时,会话都需要自动停止。 (这并不重要,因为在任何情况下,一个二十一点的玩家都不可能持有所有牌)
提前致谢!
答案 0 :(得分:0)