За последние 24 часа нас посетили 85357 программистов и 4735 роботов. Сейчас ищут 1792 программиста ...

Фукнция rrr();

Тема в разделе "Прочие вопросы по PHP", создана пользователем Dremax, 31 янв 2024.

  1. Dremax

    Dremax Активный пользователь

    С нами с:
    13 фев 2015
    Сообщения:
    184
    Симпатии:
    4
    Почему функция rrr(); не срабатывает?

    PHP:
    1. <?php
    2.  
    3. rrr();
    4.  
    5. function rrr() {
    6.  
    7. $k1='2';
    8. $d1='0';
    9. $p1='0';
    10. $tt='0';
    11. $pp='0';
    12. $dd='0';
    13. $korabl4='0';
    14. $rr='0';
    15.  
    16. for ($i = 1; $i < 102; $i++) {
    17. $start[$i]='40';
    18.                                          }
    19.  
    20.  
    21. for ($i = 1; $i < 102; $i++) {
    22.        
    23. $r='0';
    24.  
    25.         if($start[$i]=='40') { $start[$i] = rand(1, 8); $r='1'; }
    26.  
    27. if($start[$i]=='1' && $k1=='1' && $r=='1') { $start[$i]='40'; }
    28. if($start[$i]=='1' && $k1!='1') { $rer=rand(1,2);
    29.  
    30.  
    31.  
    32.  
    33. if($rer=='1') {
    34. 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') {
    35. $start[$i+10]='1'; $start[$i+20]='1'; $start[$i+30]='1'; $k1='1';
    36.                                                                                                             } else  $start[$i]='40';
    37.                    }
    38.  
    39.  
    40.  
    41. if($rer=='2') {
    42. 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') {
    43. $start[$i+1]='1'; $start[$i+2]='1'; $start[$i+3]='1'; $k1='1';
    44.                                                                                                               }else $start[$i]='40';
    45.                     }
    46.  
    47. }
    48.  
    49.  
    50.  
    51.  
    52.  
    53. if($start[$i]=='2' && $d1=='1' && $r=='1') { $start[$i]='40'; }
    54. if($start[$i]=='2' && $d1!='1') {
    55.  
    56. 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') {
    57.                                                
    58.                                                 $d1='1'; $start[$i+1]='2'; $start[$i+2]='2'; } else $start[$i]='40';                                                            
    59.                                                }
    60.  
    61.  
    62.  
    63. if($start[$i]=='5' && $tt=='1') { $start[$i]='40'; }
    64. if($start[$i]=='5' && $tt!='1') {
    65.                      
    66. 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') {
    67.                                            
    68.                                               $tt='1'; $start[$i]='2';  $start[$i+10]='2'; $start[$i+20]='2';                                            
    69.                                    } else $start[$i]='40';  
    70.                                               }
    71.  
    72.  
    73.  
    74. if($start[$i]=='3' && $p1=='1' && $r=='1') { $start[$i]='40'; }
    75. if($start[$i]=='3' && $p1!='1') {
    76.  
    77.      
    78. 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') {
    79.              
    80.               $p1='1'; $start[$i+10]='3';
    81.                                                                                                                                                                                                                     } else $start[$i]='40';
    82.                                             }
    83.  
    84.  
    85.  
    86.  
    87.  
    88. if($start[$i]=='6' && $pp=='1') { $start[$i]='40'; }
    89. if($start[$i]=='6' && $pp!='1') {
    90.  
    91. 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') {
    92.  
    93. $pp='1';     $start[$i]='3'; $start[$i+1]='3';
    94.                                                                                                                                                                                                                      } else $start[$i]='40';
    95.                                              }
    96.                                                            
    97.  
    98.  
    99.  
    100.  
    101. if($start[$i]=='7' && $dd=='1') { $start[$i]='40'; }
    102. if($start[$i]=='7' && $dd!='1') {
    103.  
    104.  
    105. 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') {
    106.        
    107. $dd='1';     $start[$i]='3'; $start[$i+10]='3';                                                                                                                                                    } else $start[$i]='40';
    108.  
    109.                                               }
    110.                                                            
    111.  
    112.  
    113.  
    114. if($start[$i]=='8' && $rr=='1') { $start[$i]='40'; }
    115. if($start[$i]=='8' && $rr!='1') {
    116.  
    117. 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') {
    118.  
    119. $rr='1';     $start[$i]='3'; $start[$i+1]='3';
    120.                                                                                                                                                                                                                     } else $start[$i]='40';
    121.                                             }
    122.                                                            
    123.  
    124.  
    125.  
    126. if($start[$i]=='4') {  if($korabl4<'7') {
    127.  
    128. 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') {
    129. $korabl4=$korabl4+'1'; $start[$i]='4';
    130.                                                                                                                      } else $start[$i]='40';
    131.                                                      } else $start[$i]='40'; }
    132.  
    133.  
    134. }
    135.  
    136.  
    137.  
    138.  
    139.  
    140.  
    141.  
    142. $schet_func='0';
    143.  
    144. // Заполняем доску рандомными значениями
    145. for ($i = 1; $i < 102; $i++) {
    146.  
    147. if($start[$i]<'5') { $schet_func=$schet_func+'1'; }
    148.  
    149.                                          }
    150.  
    151. }
    152.  
    153. ?>
     
  2. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    485
    Симпатии:
    97
    Адрес:
    Бавария, Германия
    Добрый день, уважаемый коллега!

    Вы упорно продолжаете, писать числа в кавычках, но это на результат не влияет, а только на время.
    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
    Удачи!
     
  3. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.874
    Симпатии:
    756
    Адрес:
    Татарстан
    Капец просто... Говнокод из говнокодов...
    Кто и вам сказал что не отрабатывает функция? Отрабатывает. Только ничего не выводит, и ничего не с возвращает... Кароче нах не нужна...
     
  4. Dremax

    Dremax Активный пользователь

    С нами с:
    13 фев 2015
    Сообщения:
    184
    Симпатии:
    4
    Добрый день
    Я так понял переменные $start[$i] зачисляются внутри функции,а снаружи не работают
    Без функции все переменные зачисляются
    Пробовал обьявить $start[]=arra(); все равно не зачисляются
    Как правильно обьявить массив $start[] до функции??

    У меня опять реформа,снова редизайн игры 2.0:
    https://кибершахматы.рф/gallery/data/kkk888.jpg
    Настраиваю "Новая игра", кодина длиннющая,по другому не умею
     
  5. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.874
    Симпатии:
    756
    Адрес:
    Татарстан
    блин.. а почитать про синтаксис функций никак? про видимость переменных, про аргументы?
    функция - обычно вызывается с аргументами и возвращает результат
    например
    PHP:
    1. function f(a,b){
    2. return a+b;
    3. }
    4.  
    5. //вызываем
    6. $result = f(5,7);
    7. echo $result;
    8. // выдаст 12
    в вашем случае в качества аргумента передавайте массив
    после обработки функцией - отдавайте массив

    может для начала научится? чтоб кодина не только не длиннющая была.. но и имела хоть какой-то смысл?
     
  6. Survivor

    Survivor Новичок

    С нами с:
    8 фев 2023
    Сообщения:
    93
    Симпатии:
    19
    Накидал немного - инициализация карты + при желании рандом расположение кораблей.
    p.s. Не претендую на лучший скрипт года, так шо...)

    Dremax
    Глянь инициализацию карты, всяко лучше, чем то, что написал ты.
    + рандомное расположение кораблей на карте при клике на кнопке(кнопка под картой внизу).
    Логику доделывай если что сам.

    https://replit.com/@truthofwars/SmartBetterGenericsoftware

    залогинся и сможешь потестить.
     
  7. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    485
    Симпатии:
    97
    Адрес:
    Бавария, Германия
    Добрый день!
    Вам нужно в функции добавить
    PHP:
    1. function rrr() {
    2. global $start;
    3. ...
    4. //или
    5. return $start;
    6. }
    Tогда результат будет передан в скрипт, вызывающий функцию
    Я добавил return
    PHP:
    1. <?
    2. $start = rrr();
    3. echo "<pre>";
    4. print_r($start);
    5. function rrr() {
    6.   $k1='2';
    7.   $d1='0';
    8.   $p1='0';
    9.   $tt='0';
    10.   $pp='0';
    11.   $dd='0';
    12.   $korabl4='0';
    13.   $rr='0';
    14.  
    15.   for ($i = 1; $i < 102; $i++) {
    16.   $start[$i]='40';
    17.   ...
    18.   ...
    19.   return $start;
    20. }
    21. ?>
    Результат:
    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:
    1. $start = []; //или $start = array();
    2. $start[] = array();
    Если убрать первую строку, то на $start[] = array() выйдет фатальная ошибка.
    Удачи!
     
    #7 Vladimir Kheifets, 1 фев 2024
    Последнее редактирование: 1 фев 2024
  8. Dremax

    Dremax Активный пользователь

    С нами с:
    13 фев 2015
    Сообщения:
    184
    Симпатии:
    4
    Сделал
    Вопрос решил Чат GPT от Сбербанка https://developers.sber.ru/gigachat/

    Теперь код работает,корабли раздаются с первого клика,функция rrr(); с одного захода выполняется 20-30 раз:
    PHP:
    1. <?php
    2.  
    3. $start=array();
    4. $schet_func;
    5.  
    6. rrr();
    7.  
    8. function rrr() {
    9.  
    10. global $start;
    11. global $schet_func;
    12.  
    13. //дальше код спрятал
    14.  
    15. //концовка
    16. while ($schet_func != '35') {
    17. unset($start);
    18. rrr();
    19. }
    Всем спасибо.Вопрос решен
    Две программы работают,морской бой 10х10 и 15х15