我有一个关于如何使用类的快速问题。我就是那个我称之为编程初学者的人,并且自己设定了创建一个基于Web的小游戏来学习的任务。在游戏中我想拥有各种单位类型(即剑客,骑兵,弓箭手)。我被告知我应该为每种类型的单元创建一个单独的类,但是我也被告知要创建一个类“类单元”。哪个是使用类的正确方法?如果这个含糊不清,我很抱歉,但我想不出更好的说法。在搜索本网站以寻找其他与课程相关的问题之后,他们似乎并没有涵盖这种用法。
class unit {
$unitName = "";
$unitSpeed = "";
$unitHealth = "";
$unitDamage = "";
}
或
class archer {
$archerSpeed = "";
$archerHealth = "";
$archerDamage = "";
}
class cavalry {
$cavalrySpeed = "";
$cavalryHealth = "";
$cavalryDamage = "";
}
答案 0 :(得分:2)
我可以更好地组织您的代码,例如:
abstract class Unit
{
public $speed=0;
public $health=0;
public $damage=0;
}
class Archer extends Unit
{
}
class Wizard extents Unit
{
public $mana;
}
class ArcherAdvanced extends Unit
{
public function __construct()
{
$this->health = 4;
}
}
使用此结构您必须始终使用特定的类,但实现它可以非常简单。它也很容易添加一些属性用于不同的用途(如向导)。
你可以在其他类中使用它:
class Game
{
public function run()
{
$gandalf = new Wizard();
$legolas = new Archer();
// then fight!!
}
}
我希望这会有所帮助。不过我建议看看这里:http://www.phptherightway.com/
在ArcherAdvanced类中,当你使用它并执行新的ArcherAdvanced()时,你会自动将health设置为value = 4.
答案 1 :(得分:0)
执行所需操作的一种方法是使用子类。看这里: http://php.net/manual/en/language.oop5.inheritance.php
你会创建一个名为" unit"的基类。这将包含所有类型单位之间共有的所有信息。
然后,您将为每种类型的单元创建一个类,其中包含使这种类型的单元与其他单元不同的任何逻辑。
通过这种方法,你正在" DRY"通过不重复所有单元通用的代码(可能会发生3个不同的类),并且在代码属于类文件的情况下它们之间存在差异(其中只使用一个"单元&#34) ;类你可能必须使用条件来完成同样的事情。)
这是基本代码的样子:
class Unit {
//Defaults for all units
$unitName = "";
$unitSpeed = "1";
$unitHealth = "1";
$unitDamage = "1";
}
class Archer extends Unit{
$unitName = "archer";
}
class Cavalry extends Unit {
$unitName = "cavalry";
}