了解类(使用它们的内容)

时间:2015-03-09 14:59:47

标签: php class

我有一个关于如何使用类的快速问题。我就是那个我称之为编程初学者的人,并且自己设定了创建一个基于Web的小游戏来学习的任务。在游戏中我想拥有各种单位类型(即剑客,骑兵,弓箭手)。我被告知我应该为每种类型的单元创建一个单独的类,但是我也被告知要创建一个类“类单元”。哪个是使用类的正确方法?如果这个含糊不清,我很抱歉,但我想不出更好的说法。在搜索本网站以寻找其他与课程相关的问题之后,他们似乎并没有涵盖这种用法。

class unit {

$unitName = "";
$unitSpeed = "";
$unitHealth = "";
$unitDamage = "";

}

class archer {

$archerSpeed = "";
$archerHealth = "";
$archerDamage = "";

}

class cavalry {

$cavalrySpeed = "";
$cavalryHealth = "";
$cavalryDamage = "";

}

2 个答案:

答案 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";

}