我如何在PHP中实现游戏库存系统?我一直试图找出一种方法,以便动态使用商品,而不是只是坐在你的库存中,例如装备武器,使用魔药,传送等等。
我能想到的唯一解决方案是将PHP代码存储在数据库中,并在使用该项时获取它,但这似乎并不合适。有没有更好的方法来实现这个?
澄清:这是一个mmo浏览器游戏,每个玩家的库存需要在游戏中持续存在。如果要进行任何更改,每个项目的课程(可能有数百个项目)似乎很难维护。
答案 0 :(得分:4)
除了按照建议实现'baseItem'类之外,您可能还需要考虑开发一个接口类来概述所有项目应该具有的方法。然后,每种类型的项目都可以以不同的方式实现这些方法。
例如,所有项目可能都需要具有“装备()”方法,但根据它的类型实现不同的方法。您可能不需要为每个单独的项创建一个类,但您应该创建能够根据您提供的某种数据结构(可以存储在数据库中)创建项的唯一实例的类。
一个非常普遍的例子可能是:
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)
}
}
你应该阅读接口和抽象类来完全理解这个想法。
此外,请注意,这是一个非常广泛的,开放式的问题,而不是千种不同的方式。您可能想要提出更具体的内容,或提供具体的例子。
答案 1 :(得分:3)
使用PHP,您需要设置一个库存类,以及每个项目的类 - 包括项目继承的“baseItem”类,其中包括所有项目共有的内容(icon?sound?amount?)。
您需要将用户的库存类实例存储在会话变量中。如果你想要它持久存在,它应该在数据库中。
访问广告资源的任何页面都需要引用包含商品和广告资源类的文件。
This link显示将对象设置为会话并跨页面访问它。
编辑:键入太快并混淆了几个关键术语