我正在建立一个网站。我希望它拥有的一个功能是拥有一个将2个玩家连接在一起的简单游戏。我的问题是我不知道怎么做,所以两个球员都在同一个“房间”,因为在房间里只有2名球员。 在接近这个问题的过程中,一旦一个玩家加入,他就会得到一个“等待下一个玩家”的消息,并在向一个玩家加入的数据库中等待。如果下一位玩家加入,我如何让它继续检查接下来的3分钟?
更新
首先是这里的代码:
<html>
<title>SiteName (test)</title>
<head>
<?php
$servername = "localhost";
$u
sername =
$password =
$dbname =
try
{
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare('SELECT * FROM game');
$stmt->execute(array('gameID' => $gameID));
while($row = $stmt->fetch()) {
print_r($row);
echo "<br />\n";
}
}
catch(PDOException $e)
{
echo $sql . "<br>" . $e->getMessage();
}
?>
<button onclick="myFunction()" id="w">Look for Game</button><br>
<a href="https://www.google.com" id="lbl" class="button"></a>
<script>
function myFunction() {
var elem = document.getElementById("w").innerHTML = "Wait";
var counter = 10;
var label= document.getElementById("lbl");
var counter = 10;
var clabel= document.createElement("p");
clabel.innerHTML = "You can download the file in 10 seconds.";
var id;
label.parentNode.replaceChild(clabel, label);
id = setInterval(function() {
counter--;
if(counter < 0) {
clabel.parentNode.replaceChild(label, clabel);
clearInterval(id);
} else {
clabel.innerHTML = "You can download the file in " + counter.toString() + " seconds.";
}
}, 1000);
}
</script>
<?php
$conn = null;
?>
</body>
</html>
我试图做到这一点,如果第一个玩家加入,他将等待(我在这里作为测试10秒),直到另一个加入。尝试这样做的方法是让数据库中的一个字段知道一个玩家是否在该页面中并等待下一个玩家。我读了一些关于长轮询的内容,但不知道如何为我的案例实现它。
任何反馈都会有所帮助,谢谢
答案 0 :(得分:2)
PHP不是最好的语言,但如果您仍想这样做。
使用Ratchet(http://socketo.me/),这是一个PHP websocket库。 websocket是全双工的,这意味着服务器和客户端之间的连接保持打开状态。然后可以通过此传达游戏状态和玩家行为。
http://socketo.me/docs/hello-world是您可以学习的一个例子。
答案 1 :(得分:0)
first you will want javascript or some client side code to handle this. as php will execute on the server side then display to the user. if you use ajax with javascript you can get the client side and server side to work together.
you will want to use a while loop, in this loop you will set a timeout.
in the while loop you can call the ajax script you want untill you get your result you want. I'm assuming you plan on making this a turn by turn game for the players. you will want a table that sets "true" to if player 1 or player 2 are in the game. if both are turn then the game begins.
Hope this logic helps