2013-07-30 5 views
-2

Я пытаюсь сделать простой боевой сценарий для игры до сих пор так хорошо, но этот кусок кода, который обрабатывает боевые всегда возвращает следующие ошибки:Примечание: Использование неопределенная константа, для моего конкретного случая

Примечание: использование неопределенной константы ime - предполагаемое «ime» в C: \ Program Files (x86) \ wamp \ www \ php \ gozd.php в строке 17

Примечание: использование неопределенного постоянного napad - предполагаемого 'napad 'в C: \ Program Files (x86) \ wamp \ www \ php \ gozd.php в строке 18

и т. Д. Я надеюсь, что кто-то может решить проблему?

if($_POST['action'] == 'Napadi') { 

    $igralec_ime = $_SESSION['username']; 
    $igralec = array (
         ime   => $igralec_ime, 
         napad  => prikazi_stat('ofe',$igralec_ime), 
         obramba => prikazi_stat('def',$igralec_ime), 
         curhp   => prikazi_stat('curhp',$igralec_ime) 
        ); 

    $monster_ime = $_POST['monster']; 
    $monster = array (
         ime   => $monster_ime, 
         napad  => prikazi_monster_stat('atk',$monster_ime), 
         obramba => prikazi_monster_stat('def',$monster_ime), 
         curhp   => prikazi_monster_stat('maxhp',$monster_ime) 
        );  

    $combat = array(); 
    $turns = 0;  
    while($igralec['curhp'] > 0 && $monster['curhp'] > 0) { 

     if($turns % 2 != 0) { 
      $napadalec = &$monster; 
      $branilec = &$igralec; } 
     else { 
      $napadalec = &$igralec; 
      $branilec = &$monster; } 

     $damage = 0;  
     if($napadalec['napad'] > $branilec['obramba']) { 
      $damage = $napadalec['napad'] - $branilec['obramba']; } 

     $branilec['curhp'] -= $damage; 
     $combat[$turns] = array(
      napadalec => $napadalec['ime'], 
      branilec => $branilec['ime'], 
      damage  => $damage 
           ); 
     $turns++; } 

    update_stat('curhp',$igralec_ime,$igralec['curhp']); 
    if($igralec['curhp'] > 0) { 
     update_stat('cek',$igralec_ime,prikazi_stat('cek',$igralec_ime)+ prikazi_monster_stat('cek',$monster_ime)); 
     $zmaga = 1; 
     $cekini = prikazi_monster_stat('cek',$monster_ime); } 
    else { 
     $zguba = 1; } } 
+1

Похоже, что вы должны указывать ime, napad и т. Д. I.e. ime => $ igralec_ime, 'должно быть' 'ime '=> $ igralec_ime,' – StephenTG

+0

у вас есть весь индекс массива, испорченный. имена 'ime',' napadalec', 'npad' и т. д. рассматриваются как const по php. так что вы получите ошибки – bansi

ответ

3

Ключи массива не указаны. Код должен гласить:

"ime"  => $igralec_ime, 
"napad"  => prikazi_stat('ofe',$igralec_ime), 
"obramba" => prikazi_stat('def',$igralec_ime), 
"curhp"  => prikazi_stat('curhp',$igralec_ime) 

Однако РНР «помогает» вам, говоря: «гы, я понятия не имею, что ime это - программист, вероятно, имел в виду "ime" (с кавычками), так что давайте делать вид, что не то, что Я просто увидел".

Очень жаль, что PHP ведет себя так, как сегодня (причины исторические, а лучшие остались невыразимыми), но по крайней мере имеет приличия, чтобы уведомить, что что-то может быть ошибкой.

+1

Мне нравится ваш последний комментарий :) – bansi

+0

Мой бог, это было спасибо, у меня нет большого опыта работы с массивами, поэтому я полностью пропустил это –

Смежные вопросы