gpt4 book ai didi

c++ - 在服务器端实现游戏超时

转载 作者:搜寻专家 更新时间:2023-10-31 01:45:59 26 4
gpt4 key购买 nike

目前我正在为 iOS 平台编写一款回合制游戏。客户端是用带有 CocoaTouch 的 Objective-C 编写的,服务器是用 C++ 为 Ubuntu Server OS 编写的。服务器连接到 MySQL 数据库,其中存储用户和游戏数据。

现在我想实现每回合时间限制,这必须在服务器端完成。当一个用户轮到一个用户时,下一个用户将有最多 24 小时的时间来回答,否则我希望游戏跳过这个用户的轮到下一个玩家。我对如何做到这一点有一些想法,但我不确定它们是否有用。我一直在想的是将上一回合的日期和时间存储为与我的 SQL 数据库中的游戏表相关的实体。然后我想在服务器上启动一个线程,该线程一直运行到终止,并查找当前时间减去每场比赛的最后一轮,比如每分钟左右。如果自上次轮到后已超过 24 小时,则此线程允许队列中的下一个玩家轮到他们,并跳过懒惰的玩家。

这听起来是不是太复杂了?还有另一种更简单的方法吗?我知道以前在很多游戏中都这样做过,只是不知道怎么做。提前致谢!

最佳答案

在这种情况下,我认为您根本不需要任何线程或后台进程。

我在这里看到的是一个简单的算法:

  1. 当用户登录游戏/比赛时 - 检查数据库中的最后一轮结束时间,
  2. 如果距离最后一轮结束时间的耗时大于 24 小时,则获取当前时间,从数据库中减去时间(显然你需要将这两个时间都转换为小时)并将其除以 24,
    • 如果分区的结果为奇数,则轮到另一位玩家(玩家 A)
    • 如果部门的结果是偶数,则轮到玩家 B。
  3. 设置数据库时间为databaseTime+division*24

该算法可以跳过多个回合。当玩家 A 完成他的移动并经过 48 小时后,轮到玩家 B。

关于c++ - 在服务器端实现游戏超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21294876/

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