Почему функция rrr(); не срабатывает? PHP: <?php rrr(); function rrr() { $k1='2'; $d1='0'; $p1='0'; $tt='0'; $pp='0'; $dd='0'; $korabl4='0'; $rr='0'; for ($i = 1; $i < 102; $i++) { $start[$i]='40'; } for ($i = 1; $i < 102; $i++) { $r='0'; if($start[$i]=='40') { $start[$i] = rand(1, 8); $r='1'; } if($start[$i]=='1' && $k1=='1' && $r=='1') { $start[$i]='40'; } if($start[$i]=='1' && $k1!='1') { $rer=rand(1,2); if($rer=='1') { if($start[$i-10]=='40' && $start[$i+1]=='40' && $start[$i-1]=='40' && $start[$i+1+10]=='40' && $start[$i-1-10]=='40' && $start[$i+1+20]=='40' && $start[$i-1-20]=='40' && $start[$i+1+30]=='40' && $start[$i-1-30]=='40' && $start[$i+40]=='40' && $start[$i-1-10]=='40' && $start[$i+1-10]=='40' && $start[$i+1+40]=='40' && $start[$i-1+40]=='40') { $start[$i+10]='1'; $start[$i+20]='1'; $start[$i+30]='1'; $k1='1'; } else $start[$i]='40'; } if($rer=='2') { if($start[$i-1]=='40' && $start[$i+10]=='40' && $start[$i-10]=='40' && $start[$i+1+10]=='40' && $start[$i+1-10]=='40' && $start[$i+2+10]=='40' && $start[$i+2-10]=='40' && $start[$i+3+10]=='40' && $start[$i+3-10]=='40' && $start[$i+4]=='40' && $start[$i-1-10]=='40' && $start[$i-1+10]=='40' && $start[$i+4-10]=='40' && $start[$i+4+10]=='40') { $start[$i+1]='1'; $start[$i+2]='1'; $start[$i+3]='1'; $k1='1'; }else $start[$i]='40'; } } if($start[$i]=='2' && $d1=='1' && $r=='1') { $start[$i]='40'; } if($start[$i]=='2' && $d1!='1') { if($start[$i-1]=='40' && $start[$i+10]=='40' && $start[$i-10]=='40' && $start[$i+1+10]=='40' && $start[$i-1-10]=='40' && $start[$i+2+10]=='40' && $start[$i+2-10]=='40' && $start[$i+3]=='40' && $start[$i-1-10]=='40' && $start[$i-1+10]=='40' && $start[$i+3-10]=='40' && $start[$i+3+10]=='40') { $d1='1'; $start[$i+1]='2'; $start[$i+2]='2'; } else $start[$i]='40'; } if($start[$i]=='5' && $tt=='1') { $start[$i]='40'; } if($start[$i]=='5' && $tt!='1') { if($start[$i-1]=='40' && $start[$i+1]=='40' && $start[$i-10]=='40' && $start[$i+1+10]=='40' && $start[$i-1-10]=='40' && $start[$i+1+20]=='40' && $start[$i-1+20]=='40' && $start[$i+30]=='40' && $start[$i-1-10]=='40' && $start[$i-1+10]=='40' && $start[$i+1+30]=='40' && $start[$i-1+30]=='40') { $tt='1'; $start[$i]='2'; $start[$i+10]='2'; $start[$i+20]='2'; } else $start[$i]='40'; } if($start[$i]=='3' && $p1=='1' && $r=='1') { $start[$i]='40'; } if($start[$i]=='3' && $p1!='1') { if($start[$i-1]=='40' && $start[$i+1]=='40' && $start[$i-10]=='40' && $start[$i+1+10]=='40' && $start[$i-1+10]=='40' && $start[$i+20]=='40' && $start[$i-1-10]=='40' && $start[$i-1+10]=='40' && $start[$i+1+20]=='40' && $start[$i-1+20]=='40') { $p1='1'; $start[$i+10]='3'; } else $start[$i]='40'; } if($start[$i]=='6' && $pp=='1') { $start[$i]='40'; } if($start[$i]=='6' && $pp!='1') { if($start[$i-1]=='40' && $start[$i+10]=='40' && $start[$i-10]=='40' && $start[$i+1+10]=='40' && $start[$i-1-10]=='40' && $start[$i+2]=='40' && $start[$i-1-10]=='40' && $start[$i-1+10]=='40' && $start[$i+2-10]=='40' && $start[$i+2-10]=='40') { $pp='1'; $start[$i]='3'; $start[$i+1]='3'; } else $start[$i]='40'; } if($start[$i]=='7' && $dd=='1') { $start[$i]='40'; } if($start[$i]=='7' && $dd!='1') { if($start[$i-1]=='40' && $start[$i+1]=='40' && $start[$i-10]=='40' && $start[$i+1+10]=='40' && $start[$i-1+10]=='40' && $start[$i+20]=='40' && $start[$i-1+10]=='40' && $start[$i+1+20]=='40' && $start[$i-1+20]=='40') { $dd='1'; $start[$i]='3'; $start[$i+10]='3'; } else $start[$i]='40'; } if($start[$i]=='8' && $rr=='1') { $start[$i]='40'; } if($start[$i]=='8' && $rr!='1') { if($start[$i-1]=='40' && $start[$i+10]=='40' && $start[$i-10]=='40' && $start[$i+1+10]=='40' && $start[$i-1-10]=='40' && $start[$i+2]=='40' && $start[$i-1+10]=='40' && $start[$i+2-10]=='40' && $start[$i+2-10]=='40') { $rr='1'; $start[$i]='3'; $start[$i+1]='3'; } else $start[$i]='40'; } if($start[$i]=='4') { if($korabl4<'7') { if($start[$i-1]=='40' && $start[$i+1]=='40' && $start[$i-10]=='40' && $start[$i+10]=='40' && $start[$i-1-10]=='40' && $start[$i-1+10]=='40' && $start[$i+1+10]=='40' && $start[$i+1-10]=='40') { $korabl4=$korabl4+'1'; $start[$i]='4'; } else $start[$i]='40'; } else $start[$i]='40'; } } $schet_func='0'; // Заполняем доску рандомными значениями for ($i = 1; $i < 102; $i++) { if($start[$i]<'5') { $schet_func=$schet_func+'1'; } } } ?>
Добрый день, уважаемый коллега! Вы упорно продолжаете, писать числа в кавычках, но это на результат не влияет, а только на время. PHP умный, справится, приведёт все string к типу integer. Чтобы понять почему, нужно попытаться прочесть код, но он оформлен так, что уж, простите, сделать это невозможно. Однако, если включить error_reporting, то Вы возможно, что-то увидите Warning: Undefined array key 0 inC:\OSPanel\domains\php_su\rrr.phpon line42 Warning: Undefined array key -8 inC:\OSPanel\domains\php_su\rrr.phpon line130 Warning: Undefined array key -7 inC:\OSPanel\domains\php_su\rrr.phpon line58 Warning: Undefined array key -6 inC:\OSPanel\domains\php_su\rrr.phpon line80 Warning: Undefined array key -5 inC:\OSPanel\domains\php_su\rrr.phpon line80 Warning: Undefined array key -4 inC:\OSPanel\domains\php_su\rrr.phpon line130 Warning: Undefined array key -3 inC:\OSPanel\domains\php_su\rrr.phpon line93 Warning: Undefined array key -2 inC:\OSPanel\domains\php_su\rrr.phpon line93 Warning: Undefined array key -1 inC:\OSPanel\domains\php_su\rrr.phpon line68 Warning: Undefined array key 0 inC:\OSPanel\domains\php_su\rrr.phpon line93 Warning: Undefined array key 0 inC:\OSPanel\domains\php_su\rrr.phpon line119 Warning: Undefined array key 103 inC:\OSPanel\domains\php_su\rrr.phpon line68 Warning: Undefined array key 104 inC:\OSPanel\domains\php_su\rrr.phpon line68 Warning: Undefined array key 102 inC:\OSPanel\domains\php_su\rrr.phpon line68 Warning: Undefined array key 103 inC:\OSPanel\domains\php_su\rrr.phpon line68 Warning: Undefined array key 104 inC:\OSPanel\domains\php_su\rrr.phpon line68 Warning: Undefined array key 111 inC:\OSPanel\domains\php_su\rrr.phpon line68 Удачи!
Капец просто... Говнокод из говнокодов... Кто и вам сказал что не отрабатывает функция? Отрабатывает. Только ничего не выводит, и ничего не с возвращает... Кароче нах не нужна...
Добрый день Я так понял переменные $start[$i] зачисляются внутри функции,а снаружи не работают Без функции все переменные зачисляются Пробовал обьявить $start[]=arra(); все равно не зачисляются Как правильно обьявить массив $start[] до функции?? У меня опять реформа,снова редизайн игры 2.0: https://кибершахматы.рф/gallery/data/kkk888.jpg Настраиваю "Новая игра", кодина длиннющая,по другому не умею
блин.. а почитать про синтаксис функций никак? про видимость переменных, про аргументы? функция - обычно вызывается с аргументами и возвращает результат например PHP: function f(a,b){ return a+b; } //вызываем $result = f(5,7); echo $result; // выдаст 12 в вашем случае в качества аргумента передавайте массив после обработки функцией - отдавайте массив может для начала научится? чтоб кодина не только не длиннющая была.. но и имела хоть какой-то смысл?
Накидал немного - инициализация карты + при желании рандом расположение кораблей. p.s. Не претендую на лучший скрипт года, так шо...) Dremax Глянь инициализацию карты, всяко лучше, чем то, что написал ты. + рандомное расположение кораблей на карте при клике на кнопке(кнопка под картой внизу). Логику доделывай если что сам. https://replit.com/@truthofwars/SmartBetterGenericsoftware залогинся и сможешь потестить.
Добрый день! Вам нужно в функции добавить PHP: function rrr() { global $start; ... //или return $start; } Tогда результат будет передан в скрипт, вызывающий функцию Я добавил return PHP: <? $start = rrr(); echo "<pre>"; print_r($start); function rrr() { $k1='2'; $d1='0'; $p1='0'; $tt='0'; $pp='0'; $dd='0'; $korabl4='0'; $rr='0'; for ($i = 1; $i < 102; $i++) { $start[$i]='40'; ... ... return $start; } ?> Результат: Array ( [1] => 40 [2] => 40 [3] => 40 [4] => 40 [5] => 40 [6] => 40 [7] => 40 [8] => 40 [9] => 40 [10] => 40 [11] => 40 [12] => 3 [13] => 40 ... Попробуйте довести код функции, так чтобы его можно было прочесть и понять. К вопросу о массивах. Нужно обязательно инициализировать массив в таком случае PHP: $start = []; //или $start = array(); $start[] = array(); Если убрать первую строку, то на $start[] = array() выйдет фатальная ошибка. Удачи!
Сделал Вопрос решил Чат GPT от Сбербанка https://developers.sber.ru/gigachat/ Теперь код работает,корабли раздаются с первого клика,функция rrr(); с одного захода выполняется 20-30 раз: PHP: <?php $start=array(); $schet_func; rrr(); function rrr() { global $start; global $schet_func; //дальше код спрятал //концовка while ($schet_func != '35') { unset($start); rrr(); } Всем спасибо.Вопрос решен Две программы работают,морской бой 10х10 и 15х15