【发布时间】:2017-07-24 02:22:12
【问题描述】:
首先,对不起,如果这是重复的,我已经搜索过,到目前为止我一无所获。
所以,当用户转到“fightzone1.php”时,它会发起随机战斗。
$query=$db->prepare('SELECT * FROM monsters ORDER BY RAND() LIMIT 1');
怪物的最大生命值在数据库中。但是,他的实际健康是这样计算的:
$monster_actualhealth = ($data["monster_health"] - $_SESSION['damage']);
$Monster_actualhealth 是怪物的生命值。
$data["monster_health"] 是怪物的最大生命值,位于数据库中
$_SESSION['damage'] 是用户将对怪物造成的伤害。
<form action="" method="POST"><input type="submit" value="Attack the creature" name="attacking"></form>
使用此按钮,用户可以对怪物造成伤害
if (isset($_POST['attacking'])) {
if (!isset($_SESSION['last_post'])) {
$_SESSION['last_post'] = 0;
}
$currtime = time();
if ($currtime > ($_SESSION['last_post'] + 2)) {
$_SESSION['last_post'] = $currtime;
$randomdamageperso = rand(5, 12);
$query->execute();
$query->CloseCursor();
$_SESSION['damage'] = ( $_SESSION['damage'] + $randomdamageperso);
$monster_actualhealth = ($data["monster_health"] - $_SESSION['damage']);
echo "You inflicted " . $randomdamageperso . " !";
echo '<meta http-equiv="refresh" content="1.5" />';
}
}
}
(我删除了一些文本以使脚本易于理解且不那么混乱,他工作正常,但如果我忘记删除 1 或 2 个元素,请不要担心。)
(从现在开始我们就叫$_SESSION['damage'] 就叫$damage)
所以,基本上;它将一个随机数添加到$damage(介于 5 和 12 之间),并将该数字添加到 $damage 的前一个数字中,使其更大。因此,例如,如果$damage 为 12,怪物生命值为 35,则实际怪物生命值为 23。
现在,棘手的部分是用户可以离开页面,去治疗,然后回到这个页面。是的,怪物会改变,它会是另一个,但 $_SESSION['damage'] 会保持不变,让怪物在战斗尚未开始时失去生命值。
正如你在我的脚本中看到的,有 echo 使页面刷新以实际刷新怪物的健康显示,因此用户可以跟踪战斗。 (它显示了他造成了多少,1.5秒后文字消失并刷新。)
我不能用“卸载”功能做一些javascript,因为按钮会刷新页面,我不希望$damage在我按下按钮时变为0。
我试图把一切都说清楚,所以感谢您抽出时间来帮助我!
编辑:
<?php
$query=$db->prepare("SELECT * FROM fightmonster WHERE player_id='" . $_SESSION['id'] . "' ORDER BY time_stamp desc limit 1");
$query->execute();
$result=$query->fetch();
$query->CloseCursor();
if (isset($result['id'])){
echo "unfinished business!";
}
【问题讨论】:
标签: javascript php jquery ajax session