1

我正在用 php 编写一个足球经理模拟器,[HARD AlGORITHMS!]

我有 3 节课:

播放器

class Player {

protected $name;

public function addAttr($name) {
    $this->name = $name;
}
}

团队

class Team {

protected $name;

protected $players = array();


public function setName($name) {
    $this->name = $name;
}

public function getName() {
    return $this->name;
}

public function addPlayer($player) {
    $this->players[] = $player;
}

public function getPlayers() {
    print_r($this->players);
}

public function getOpponetsPosition() {
    GAME::getOpponetPlayersPosition();
}

游戏

class Game {

protected $t1;
protected $t2;

function setTeams($team1,$team2) {
    $this->t1 = $team1;
    $this->t2 = $team2;
}

function getOpponetPlayersPosition() {
        $this->t1->getPlayers();
}

}

和主脚本

require_once 'classes/CPlayer.php';
require_once 'classes/CTeam.php';
require_once 'classes/CGame.php';

$game = new Game;

$team1 = new Team;
$team1->setName("PO-1");
$team2 = new Team;
$team2->setName("PO-2");

$p1 = new Player;
$p2 = new Player;


$p1->addAttr("payam babaiy");
$p2->addAttr("parsa babaiy");

$team1->addPlayer($p1);
$team2->addplayer($p2);

$game->setTeams($team1,$team2);

$team1->getOpponetsPosition();

我需要在Team类中使用getOpponetsPosition()函数获取游戏中的所有玩家位置

但它不返回我在主脚本中输入的值。我这样做对吗?这是应用即时通讯写作的好方法吗?

4

2 回答 2

4

你的方法很好,有几点:

使用构造函数,它们可以让你的生活更轻松:

class Player {

    protected $name;
    
    public function __construct($name) {
        $this->name = $name;
    }

    public function addAttr($name) {
        $this->name = $name;
    }
}

进而

new Player("Lionel Messi");

构造函数还确保您不会得到空名的球员/球队!您可以更好地控制课程中的内容!

不要混合使用静态代码和普通代码

您的 getOpponentsPosition 函数不正确

public function getOpponetsPosition() {
    GAME::getOpponetPlayersPosition();
}

事实上,它甚至不应该在这里,Team获取其他球队的位置不是 ' 的工作,而是游戏的工作,因为它包含两者。

请参阅此要点,了解我将如何实现您的目标。

于 2012-05-11T20:41:08.683 回答
3

不,您正在调用一个静态函数,GAME::getOpponetPlayersPosition();因此$this该函数内部没有定义。

于 2012-05-11T20:36:31.493 回答