php - 如何为游戏实现库存系统?

标签 php

我将如何着手使用 PHP 为游戏实现库存系统?我一直在想办法让元素可以动态使用,而不是仅仅放在你的库存中,例如装备武器、使用药水、传送等。

我能想到的唯一解决方案是将 PHP 代码存储在数据库中,并在使用该项目时获取它,但这似乎并不合适。有没有更好的方法来实现它?

澄清一下:这是一个mmo网页游戏,每个玩家的库存需要在游戏中持续存在。如果要进行任何更改,每个项目(可能有数百个项目)都有一个类似乎很难维护。

最佳答案

除了按照建议实现“baseItem”类之外,您可能还需要考虑开发一个接口(interface)类来概述所有项目应具有的方法。然后,每种类型的项目都可以不同地实现这些方法。

例如,所有项目可能都需要有一个“equip()”方法,但根据项目的种类不同来实现它。您可能不需要为每个单独的项目创建一个类,但您可能应该创建能够根据您提供的某种数据结构(可以存储在数据库中)创建项目的唯一实例的类。

一个非常普遍的例子可能是:

class Leather_Armor extends Armor_Base implements Equippable
{
     // these would probably be defined in the base class instead of here
     protected $_itemName;
     protected $_itemDescription;
     protected $_defenseRating;

     public function __construct(params)
     {
         // intialize properties with data from the db
     }


     // the Equippable interface requires us to define this function
     public function equip()
     {
        // call a function from the base class
        $this->recalculateDefenseRating($this->defenseRating)
     }

}

您可能应该阅读有关接口(interface)和抽象类的内容以完全理解这个想法。

另外,请注意,这是一个非常宽泛的开放式问题,可以用一千种不同的方式来解决。您可能想问更具体的问题,或提供具体示例。

关于php - 如何为游戏实现库存系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1045976/

相关文章:

phpsdk_deps 在 Windows 上返回 fatal error

php - 如何在收到新邮件时刷新收件箱。(如 Gmail)

php - 如何设置对话历史记录和处理已删除的消息

PHP PDO - bindValue PARAM_BOOL 作为字符串

php - Laravel 5 Hasmanythrough 逆向查询

java - ER 建模中的常见错误?

PHP MySQL : How to retrieve all images associated to an item id from images table

php - Laravel 5.4 中任何用户登录时喜欢和不喜欢的功能

php - 如何从 laravel 中给定的 lat long 获得附近的法院?

php - 为什么我的应用程序 (Android) 和网站 (PHP) 的相同帐户无法获得相同的 Facebook ID?