Перейти к содержимому

Фото
- - - - -

[PHP] вопросик


  • Вы не можете создать новую тему
  • Please log in to reply
12 ответов в этой теме

#1 Aquafen

Aquafen
  • Пользователь
  • 61 сообщений
  • Откуда:Таллинн

Отправлено 21 августа 2004 - 15:26

Значит есть у меня код, только он немного неработает. помогите чем сможете :)
if($team1[6]=$withball) {   //ïначало (1) if

$a = array(пассует);
$b = array(продвигается_сам);
$c = array(теряет_мяч
$d = array(получает_желтую);
$e = array(получает_красную);
$f = array(вибивает_за_пределы_поля);

  function getRandomElement($a, $b, $c, $d, $e, $f) {
  $i = rand(0, 100);
  $index = rand(0, sizeof($a) - 1);
  if($i <= 40) {
    return $a[$index];
  } else if( $i > 40 && $i <= 70 ) {
    return $b[$index];
  } else if( $i > 70 && $i <= 90 ) {
    return $c[$index];
  } else if( $i > 90 && $i <= 93 ) {
    return $d[$index];
  } else if( $i > 93 && $i <= 97 ) {
    return $e[$index];
  } else {
    return $f[$index];
  }

 }
  print getRandomElement($a, $b, $c, $d, $e, $f);
  print "<br>";

      if (getRandomElement==$a) {  // начало (2) if
      $svoemu = array(пасс_своему);
      $chuzomu = array(пасс_чужому);
      function getRandomElement1($svoemu, $chuzomu) {
      $i = rand(0, 100);
      $index = rand(0, sizeof($a) - 1);
      if($i <= 70) {
        return $svoemu[$index];
        } else {
        return $chuzomu[$index];
       }
      }
      print getRandomElement1($svoemu, $chuzomu);

      } // конец (2) if

} // конец(1) if


суть в следуещем
значит опрелляется согласно процентной ставке, как кой массив выберется
  function getRandomElement($a, $b, $c, $d, $e, $f) {
  $i = rand(0, 100);
  $index = rand(0, sizeof($a) - 1);
  if($i <= 40) {
    return $a[$index];
  } else if( $i > 40 && $i <= 70 ) {
    return $b[$index];
  } else if( $i > 70 && $i <= 90 ) {
    return $c[$index];
  } else if( $i > 90 && $i <= 93 ) {
    return $d[$index];
  } else if( $i > 93 && $i <= 97 ) {
    return $e[$index];
  } else {
    return $f[$index];
  }
и потом, идет следующее, если выберается массив $a, то должна сработать следующая функция
      if (getRandomElement==$a) {  // начало (2) if
      $svoemu = array(пасс_своему);
      $chuzomu = array(пасс_чужому);
      function getRandomElement1($svoemu, $chuzomu) {
      $i = rand(0, 100);
      $index = rand(0, sizeof($a) - 1);
      if($i <= 70) {
        return $svoemu[$index];
        } else {
        return $chuzomu[$index];
       }
      }
      print getRandomElement1($svoemu, $chuzomu);

      } // конец (2) if
однако вторая функция работает неправильно, она срабатывает даже в том случае, если выбирается любой другой массив :(
кто поможет? :)

Заранее благодарен :)
  • 0

#2 Setor

Setor
  • Постоялец
  • 1 890 сообщений
  • Откуда:Эстония, Таллин

Отправлено 21 августа 2004 - 15:31

if (getRandomElement==$a) {  // начало (2) if

getRandomElement - Это имя функции? а параметры где?

function getRandomElement1($svoemu, $chuzomu) {
     $i = rand(0, 100);
     $index = rand(0, sizeof($a) - 1);
     if($i <= 70) {
       return $svoemu[$index];
       } else {
       return $chuzomu[$index];
      }
     }


откуда у тебя $a ? она не объявлена глобально!

Сообщение изменено: Setor (21 августа 2004 - 15:33 )

  • 0

#3 Aquafen

Aquafen
  • Пользователь
  • 61 сообщений
  • Откуда:Таллинн

Отправлено 21 августа 2004 - 16:06

как это необьявлена?
$a = array(пассует);
$b = array(продвигается_сам);
$c = array(теряет_мяч
$d = array(получает_желтую);
$e = array(получает_красную);
$f = array(вибивает_за_пределы_поля);

пробовал так:
if (getRandomElement($a, $b, $c, $d, $e)==$a[0]) {  // начало (2) if
     $svoemu = array(пасс_своему);
     $chuzomu = array(пасс_чужому);
     function getRandomElement1($svoemu, $chuzomu) {
     $i = rand(0, 100);
     $index = rand(0, sizeof($a) - 1);
     if($i <= 70) {
       return $svoemu[$index];
       } else {
       return $chuzomu[$index];
      }
     }
     print getRandomElement1($svoemu, $chuzomu);

     } // конец (2) if
но все равно какаято ерунда получается, она срабатыват в любом случае.
  • 0

#4 Setor

Setor
  • Постоялец
  • 1 890 сообщений
  • Откуда:Эстония, Таллин

Отправлено 21 августа 2004 - 16:37

Aquafen, похоже, что не смыслишь ты в программировании!

Времени нету объяснять в чём ты не прав! Если ни кто не объяснит, позже напишу!

переменная $a в функции должна быть объявлена глобальной, если ты хочешь ей пользоваться!
$a = 4;
function foo()
{
echo $a; // otvet - pusto
global $a;
echo $a; // otvet - 4
}

Сообщение изменено: Setor (21 августа 2004 - 16:37 )

  • 0

#5 Aquafen

Aquafen
  • Пользователь
  • 61 сообщений
  • Откуда:Таллинн

Отправлено 21 августа 2004 - 16:45

Setor, я только учусь :)
  • 0

#6 Setor

Setor
  • Постоялец
  • 1 890 сообщений
  • Откуда:Эстония, Таллин

Отправлено 21 августа 2004 - 18:58

Посмотрел я твой код... полный бред!

Зачем там массивы? Что ты пытаешься сделать? (Я помню что ты хочешь сделать эмулятор футбольного матча)

Бред, короче :) Оно никогда не заработает...

Лучше напиши поподробней что ты пытаешься сделать!

Сообщение изменено: Setor (21 августа 2004 - 22:25 )

  • 0

#7 tomatensaft

tomatensaft

    Samurai Jack

  • Пользователь
  • 449 сообщений
  • Откуда:Tallinn

Отправлено 21 августа 2004 - 22:53

Правило номер один в программировании: хорошо разберись с тем, что ты хочешь сделать, особенно, если сомневаешься в чем-то.

Аналогично, необходимо разобраться и инструментами, которые ты используешь. Я имею в виду PHP. Это, конечно, язык весьма "либеральный" (позволяет много чего писать), но это не значит, что код, написаный "от балды" (я не только о твоем коде) должен будет работать...

Код должен работать не как-нибудь, а совершенно определенно. Это прежде всего съекономит тебе чуток денег на покраску волос в будущем (ибо они у тебя будут седыми после длительной работы с таким непонятно что делающим кодом). :D
  • 0
"This is all I want'd t' say 'bout dat..." © Forest Gump

#8 Aquafen

Aquafen
  • Пользователь
  • 61 сообщений
  • Откуда:Таллинн

Отправлено 23 августа 2004 - 15:36

Setor,
я пытаюсь сделать следующее:
еапример игрок с мячем и далее выичсляется с какой вероятность (в процентном виде) произойдет то или иеное событие, далее исходя ис того какое событие произошло и следует следует следующее событие.
Можно конечно вместо массивов определить переменные, но это что нибудь изменит?
  • 0

#9 tomatensaft

tomatensaft

    Samurai Jack

  • Пользователь
  • 449 сообщений
  • Откуда:Tallinn

Отправлено 24 августа 2004 - 18:04

1) Насколько точно ты хочешь симулировать футбольную игру?

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

Вообще, определись с алгоритмом симуляции сначала. Для этого тебе нужно ясно и четко определить, что происходит в том или ином случае, на каждом шаге программы. Учесть нужно очень многие вещи, в зависимости от целей программы. Твоя идея практически не симулирует, а подбирает случайный расклад в игре. Симуляция -- это когда ты по определенным правилам создаешь модель некоего процесса (то есть, например, в течение времени, по квантам, изменяешь данные о положении неких тел в заданном пространстве согласно определенных физических законов).
  • 0
"This is all I want'd t' say 'bout dat..." © Forest Gump

#10 Aquafen

Aquafen
  • Пользователь
  • 61 сообщений
  • Откуда:Таллинн

Отправлено 25 августа 2004 - 19:10

tomatensaft,
тоесть например так:
30 секунд, игрок с мячом он может либо отдать пас, либо продвигаться сам, либо пасс перехватят
35: если игрок отдает пасс, то кто то его получает, либо мяч перехватывают, либо он продвигается сам и мяч перехватытвают, либо он обыгрывает игрока

Но если так то код программы бесконечен :)
  • 0

#11 tomatensaft

tomatensaft

    Samurai Jack

  • Пользователь
  • 449 сообщений
  • Откуда:Tallinn

Отправлено 28 августа 2004 - 09:26

Код будет не бесконечен, но займет много времени на реализацию. :)
  • 0
"This is all I want'd t' say 'bout dat..." © Forest Gump

#12 Aquafen

Aquafen
  • Пользователь
  • 61 сообщений
  • Откуда:Таллинн

Отправлено 28 августа 2004 - 15:30

tomatensaft, дак если я понял правильно, почему код написанный выше неправильный? я чего то совсем непонимаю
там ведь действия реализуются именно так как написал ты
  • 0

#13 tomatensaft

tomatensaft

    Samurai Jack

  • Пользователь
  • 449 сообщений
  • Откуда:Tallinn

Отправлено 30 августа 2004 - 08:01

Ты должен лучше знать, почему он неправильный. В первую очередь -- у тебя там набор синтаксических ошибок, на которые должен был указать PHP.

$c = array(теряет_мяч # Что это значит? :)

Да и твой код только выбирает случайные элементы из набора событий. Совершенно не учитываются условия игры, физика... Это не эмуляция, а гадание на картах Таро. :)
  • 0
"This is all I want'd t' say 'bout dat..." © Forest Gump