我正在使用PHP开发这个基于文本的游戏,但是在第22行遇到错误

时间:2012-09-17 21:00:01

标签: php debugging

我遇到的错误是unexpected T_STRING, expecting '(' on line 22,但我没有看到任何(丢失。

有人可以向我解释这里发生了什么吗?在第22行之前我错过了什么吗?

这是我的代码:

<?php

class Room { 
  protected $description = "";
  protected $name = "";
  protected $rooms = array(
   "ne" => NULL,
   "n" => NULL,
   "nw" => NULL,
   "e" => NULL,
   "c" => NULL,
   "w" => NULL,
   "se" => NULL,
   "s" => NULL,
   "sw" => NULL 
   );

  public function __construct ($n = "", $desc = "") { 
    $this->description = $desc;
    $this->name = $n;
  } 

  public function get Description () {
    return $this->description; 
  }

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

  public function set Room ($direction = "c", $room) {
    $this->rooms[$direction] = $room; return True; 
  }

  public function getNewRoom ($direction = "") {
    return $this->rooms[$direction]; 
  } 
}


$start Room = new Room ("First Room", "A small room. There is a door to the north.");
$second Room = new Room ("Second Room", "A short hallway that ends in a dead end. There is a door to the south.");
$start Room->set Room("n", $second Room);
$second Room->set Room("s", $first Room);
$current Room = $start Room;

$play = True; 

while ($play) {
  print $current Room->get Name();
  print $current Room->get Description();

  $input = readline("(Enter your command. Type QUIT to quit.) >");

  if ($input == "QUIT") {
    $play = False; 
  } else { 
    if ($input == 'nw' || 
        $input == 'n' || 
        $input == 'né' || 
        $input == 'e' || 
        $input == 'e' || 
        $input == 'e' || 
        $input == 'e' || 
        $input == 'e' || 
        $input == 'e') 
    { 
      $current Room = $current Room->getNewRoom($input); 
    }
  } 

}

?>

1 个答案:

答案 0 :(得分:10)

你的一些方法名称中都有空格。

public function get Description () {
public function get Name () {
public function set Room ($direction = "c", $room) {

这些是不允许的。您必须使用单字名称:

public function getDescription () { // For example

然后,以同样的方式调用它:

print $currentRoom->getDescription();

同样的事情必须适用于变量。

$current Room = $start Room; // Not allowed
$currentRoom = $startRoom; // Good!