基于PHP文本的游戏时间段

时间:2012-01-30 18:22:56

标签: php mysql time

许多基于网络的文字游戏都有完成现实世界时间的任务。一个基本的例子是你需要处理一些资源的游戏。您可以“升级”您的加工厂,但这样做需要6个小时。如果您选择进行此升级,除非看到剩余时间屏幕,否则在游戏过去6小时之前,您将无法在游戏中执行任何其他操作。有没有人建议如何在用PHP编写的游戏中实现这一目标?

3 个答案:

答案 0 :(得分:1)

实际上非常简单:

  • 每项任务与完成任务所需的时间相关联
  • 当任务处于活动状态时,不会启动任何其他任务

现在,当用户启动新任务时,您会记录任务的启动时间和任务,并添加完成任务的时间。您将其存储在数据库中。用户下次登录游戏时,会检查该用户是否有任何活动任务,如果是,则显示剩余时间。

所以你可以有一张表Tasks

  • ID
  • 名称
  • 描述
  • time_to_complete

另一个User表和一个Active_Tasks

  • USER_ID
  • TASK_ID
  • started_at
  • ends_at

在PHP脚本中,您有相应的代码来查询和更新这些表。

尝试从该说明中获得一些效果,当遇到任何障碍时,请询问有关特定部分的新问题。

答案 1 :(得分:1)

首先,大部分游戏都不是用PHP编写的(我熟悉你所说的,因为我玩过它们)。

但如果在php中执行它是必须的,那么你还需要使用某种类型的数据库(你也可以使用mysql作为你的标签之一)。

我不确定你想让你的游戏做什么,例如:假设游戏的目标是让用户互相竞争对手或其他东西。

表:用户

  • ID
  • 用户名
  • 密码

表: business_types

  • ID
  • title(例如:面包店,咖啡店,零售店)
  • 价格(建立此类业务的成本)

表: users_businesses (一个用户可以拥有多个商家)

  • ID
  • user_id(显然对应于用户表)
  • business_type(对应于business_types表:面包店,咖啡店,零售店等)
  • 级别(业务所在的当前级别)
  • 上次活动(日期时间,您可以进行查询,用户无法升级业务级别,直到经过一定时间。您可以根据业务级别增加等待所需的时间...更高等级会有更长的等待时间。等待时间结束后才能执行任何活动。)
  • 其他领域,例如这家公司每小时赚多少钱

表: users_resources

  • ID
  • USER_ID
  • 金额(正整数或负整数。用户可以每小时从他们的业务中获利,并可以花钱升级或购买新业务)

这只是一个例子......你需要cron工作来为每个用户每小时拥有的业务奖励资源,即使他们没有登录也能收集资金。

但是,我再次建议这不是在php。

答案 2 :(得分:0)

答案取决于几个不同的事情。在php中有多种方法可以做到这一点。 例子:

  1. 如果您在升级“加工厂”时不想发生任何其他事情,可以使用php的sleep或usleep功能。我会从php.net读取文档,但基本上它们会延迟执行php函数x毫秒。

  2. 如果您仍然需要用户能够在升级“处理工厂”时执行其他任务,那么您可以通过时间功能获取启动该功能时的确切unix时间戳。当您在游戏中运行其他功能时,您可以使用其中一个功能来检查时间戳,该变量包含等待升级过程完成所需的时间。

  3. 希望这会有所帮助。