За последние 24 часа нас посетили 16915 программистов и 1297 роботов. Сейчас ищут 1442 программиста ...

[ Кибершахматы ] на PHP

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

  1. Dremax

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

    С нами с:
    13 фев 2015
    Сообщения:
    154
    Симпатии:
    4
    Обновление на AJAX стояло,но там не виден HTML код,и анимация не работает
    Код (Javascript):
    1. <script>
    2.         function show()
    3.         {
    4.             $.ajax({
    5.                 url: "shess_x.php",
    6.                 cache: false,
    7.                 success: function(html){
    8.                     $("#panec").html(html);
    9.                 }
    10.             });
    11.         }
    12.    
    13.         $(document).ready(function(){
    14.             show();
    15.             setInterval('show()',1000*6);
    16.         });
    17.     </script>
    Как быть? Функцию еще не искал в интернете,там будет куча примеров
     
  2. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    440
    Симпатии:
    85
    Адрес:
    Бавария, Германия
    Вам нужно убрать jQuery код, который Вы показали.
    В Chessboard.js есть функция ProcessingChessMove
    Она после второго клика по фигуре (ход завершён) отправляет AJAX XLHttpRequest на сервер в processing.php
    и принемает ответный ход. Получив ответный ход - JSON Response, вызывает функции
    movePiece(moveInfoObj["hod_shto2"], moveInfoObj["hod_kuda2"]); - выводит на доске ответный ход
    addInfo(moveInfoObj); дополняет инфо о ходе в инфоблок.
    Код (Javascript):
    1. function ProcessingChessMove(hod_shto1, hod_kuda1, hod_piece ){
    2. var xmlhttp = new XMLHttpRequest();
    3. var url = `processing.php?hod_shto1=${hod_shto1}&hod_kuda1=${hod_kuda1}&hod_piece=${hod_piece}`;
    4. xmlhttp.onreadystatechange = function()
    5. {
    6.    if (this.readyState == 4 && this.status == 200)
    7.    {
    8.     var moveInfoObj = JSON.parse(this.responseText);
    9.     movePiece(moveInfoObj["hod_shto2"], moveInfoObj["hod_kuda2"]);
    10.     addInfo(moveInfoObj);
    11.    }
    12. };
    13. xmlhttp.open("GET", url, true);
    14. xmlhttp.send();
    15. }
    Вам необходимо перенести в processing.php всё, что требуется для ответного хода.
     
  3. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    440
    Симпатии:
    85
    Адрес:
    Бавария, Германия
    На всякий случай, это может быть не обязательно processing.php

    Так это можно встроить в index.php
    PHP:
    1. <?
    2. if(isset($_GET["hod_shto1"]) AND isset($_GET["hod_kuda1"])
    3. {
    4.     //Обработчик AJAX Request
    5.     $hod_shto1 = $_GET["hod_shto1"];
    6.     $hod_kuda1 = $_GET["hod_kuda1"];
    7.     $hod_piece = $_GET["hod_piece"];
    8.     /*
    9.     здесь ИИ должен регировать на ход игрока и делать свой следущий ход.
    10.     За неимение ИИ для тестa присвоены случайные столбцы от "A" до "H"
    11.     */
    12.     $letters = range("A","H");
    13.     $ind = random_int(0, 7);
    14.     $col = $letters[random_int(0, 7)];
    15.     $hod_shto2 = $col."7";
    16.     $hod_kuda2 = $col."5";
    17.     $out = [
    18.         "hod_shto1" => $hod_shto1,
    19.         "hod_kuda1" => $hod_kuda1,
    20.         "hod_piece" => $hod_piece,
    21.         "hod_shto2" => $hod_shto2,
    22.         "hod_kuda2" => $hod_kuda2
    23.     ];
    24.  
    25.     //Отправляем JSON Response
    26.     header('Content-Type: application/json; charset=utf-8');
    27.     echo json_encode($out);
    28.     exit;
    29. }
    30. ?>
     
  4. Dremax

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

    С нами с:
    13 фев 2015
    Сообщения:
    154
    Симпатии:
    4
    Добавил украшение на все варианты:

    td{ border-radius:4px; }
    td:hover{ background:#404040; }

    div{border-radius:4px; }
    div:hover{ background:#404040; }

    Доски "ожили" и реагируют на движение мышкой

    Самое интересное - что за 8 лет никто не подсказал это сделать.Всё самому надо придумывать
     
  5. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    440
    Симпатии:
    85
    Адрес:
    Бавария, Германия
    Добрый день!

    Сделал update. Ссылка нa демо и zip:
    https://www.alto-booking.com/developer/chessPieceAnimation/script
    https://www.alto-booking.com/developer/chessPieceAnimation/script/chess.zip

    Изменено и дополненно:

    1. ChessboardMaster.php в допонение к файлам blackPayerChessBord.html,
    whitePayerChessBord.html создаёт файл cellsId.js

    2. В index.php опделяется рандомно цвет фигур игрока, определяются переменные сессии
    $_SESSION["playerPieces"]
    $_SESSION["playerName"]
    $_SESSION["pieceImgFiles"]=["patch" => $patch, "ext" => $ext];
    затем редирект на chess_play.php

    3. После загрузки установливается обработчик события click по id клеток (div).
    Убрал определение позициий всех клеток и фигур. Отказался от создание объекта cellsPosition.
    Убрал в СSS position:absolute для элементов img.

    4. Изменена реализация анимации. Теперь при клике определятся позиции клеток (top,left)
    Дочернему элементу img задаются CSS свойства top,left, position:absolute.
    При клике на клетку "куда" изменяется свойства top,left и анимируется пемещение фигуры.
    По окончанию, свойства top,left, position:absolute удалются и img вставляется в клетку.
    Если клетка "куда" не была пустой, запоминается название фигуры, которая в ней была.
    Это фигура отображается как выигранная в поле справа.

    5. Для демонстации ходов противника в processing.php, за неимением ИИ, ходы предопределются
    в файле demoMoves.txt (задано только 5 ходов)
    Код (Text):
    1. E7,E5
    2. D7,D5
    3. B8,C6
    4. G8,F6
    5. F8,A3
    Демо видео 1. Игрок чёрными, игру начинает противник белыми
    https://www.alto-booking.com/developer/chessPieceAnimation/script/PayerBlackBeginWhite.mp4

    Демо видео 2. Игрок белыми начинает игру, противник отвечает.
    https://www.alto-booking.com/developer/chessPieceAnimation/script/PayerWhiteBegin.mp4

    Удачи!

    P.S. Правила ходов фигур в JS не обрабатываются.
     
    #80 Vladimir Kheifets, 24 янв 2024
    Последнее редактирование: 24 янв 2024
  6. Dremax

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

    С нами с:
    13 фев 2015
    Сообщения:
    154
    Симпатии:
    4
    Vladimir Kheifets, Добрый день

    Я познакомился с чатом GPT ,это искусственный интеллект
    Он пишет любые программы за 5 секунд, я просил написать шахматную доску, калькулятор, уроки по JS, обработку фигур в шахматах
    Этот ИИ умнее меня в 100 раз )

    Вот ИИ спрограммировал калькулятор:
    https://кибершахматы.рф/petuh/calc.php

    Знакомьтесь и тестируйте, в день дается 10 сообщений
    Просите написать "Калькулятор в 20 математическими функциями и 30 кнопками"

    Чувствую что теперь программисты буду уволены, ИИ напишет любые программы

    Чат GPT: https://chat-gpt.org/chat

    [[[ Я скачал книгу по JS и начал читать, прочитал 43 страницы - я там почти всё знаю ]]]
     
  7. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    440
    Симпатии:
    85
    Адрес:
    Бавария, Германия
    Лучший метод изучения языков, это программирование на них.
    Поэтому в хороших учебниках должно быть много примеров.
    Надеюсь, что то, что я сделал кому-нибудь пригодится.
    Удачи!
     
  8. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
    260 000 теперь получит GPT.
     
  9. Dremax

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

    С нами с:
    13 фев 2015
    Сообщения:
    154
    Симпатии:
    4
    Vladimir Kheifets,

    Спрограммируйте Морской бой на шахматной доске 20х20:
    https://кибершахматы.рф/gallery/data/nnn555.jpg

    Сон приснился как я это программирую,в 6 утра проснулся
    Начну переделывать ИИ под Морской бой

    Мою программу легко переделать,ходы будут рандомными,мы в школе в 90е года играли в это на бумаге
     
  10. rooybooy

    rooybooy Новичок

    С нами с:
    17 янв 2024
    Сообщения:
    3
    Симпатии:
    0
    ради интереса спросил у ChatGPT, вот что выдал:

    Код (Text):
    1. <?php
    2.  
    3. class BattleshipGame {
    4.     private $gridSize = 20;
    5.     private $grid;
    6.     private $shipRow;
    7.     private $shipCol;
    8.  
    9.     public function __construct() {
    10.         $this->initializeGrid();
    11.         $this->placeShip();
    12.     }
    13.  
    14.     private function initializeGrid() {
    15.         $this->grid = array_fill(0, $this->gridSize, array_fill(0, $this->gridSize, ' '));
    16.     }
    17.  
    18.     private function placeShip() {
    19.         $this->shipRow = rand(0, $this->gridSize - 1);
    20.         $this->shipCol = rand(0, $this->gridSize - 1);
    21.     }
    22.  
    23.     public function printBoard() {
    24.         foreach ($this->grid as $row) {
    25.             echo implode(' ', $row) . PHP_EOL;
    26.         }
    27.     }
    28.  
    29.     public function takeTurn($guessRow, $guessCol) {
    30.         if ($guessRow == $this->shipRow && $guessCol == $this->shipCol) {
    31.             echo "Congratulations! You sank my battleship!" . PHP_EOL;
    32.             return true;
    33.         } else {
    34.             if ($guessRow >= 0 && $guessRow < $this->gridSize && $guessCol >= 0 && $guessCol < $this->gridSize) {
    35.                 if ($this->grid[$guessRow][$guessCol] == 'X') {
    36.                     echo "You already guessed that one." . PHP_EOL;
    37.                 } else {
    38.                     echo "You missed my battleship!" . PHP_EOL;
    39.                     $this->grid[$guessRow][$guessCol] = 'X';
    40.                 }
    41.             } else {
    42.                 echo "Oops, that's not even in the ocean." . PHP_EOL;
    43.             }
    44.             return false;
    45.         }
    46.     }
    47. }
    48.  
    49. function playBattleship() {
    50.     $game = new BattleshipGame();
    51.  
    52.     echo "Welcome to Battleship!" . PHP_EOL;
    53.     echo "Try to sink my battleship on a 20x20 grid." . PHP_EOL;
    54.  
    55.     $turns = 0;
    56.     while (true) {
    57.         $game->printBoard();
    58.  
    59.         $guessRow = (int) readline("Enter guess row (0-19): ");
    60.         $guessCol = (int) readline("Enter guess column (0-19): ");
    61.  
    62.         $turns++;
    63.  
    64.         if ($game->takeTurn($guessRow, $guessCol)) {
    65.             echo "You sank my battleship in $turns turns!" . PHP_EOL;
    66.             break;
    67.         }
    68.     }
    69. }
    70.  
    71. playBattleship();
    72. ?>
     
  11. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    440
    Симпатии:
    85
    Адрес:
    Бавария, Германия
    Примерно тогда, а может и раньше был популярный фильм "Кавказская пленница."
    Может кто помнит замечальный тост из этого фильма -
    "Выпьем же за то, чтобы наши желания совпадали с нашими возможностями" :)
     
    rooybooy нравится это.
  12. Dremax

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

    С нами с:
    13 фев 2015
    Сообщения:
    154
    Симпатии:
    4
    Навалял,весь алгортм шахматный вырезал:
    https://кибершахматы.рф/gallery/data/nnn777.jpg

    Подскажите,как "раздавать" корабли компьютеру рандомно? И еще чтобы выстраивались как полагается
    Спросил у чата GPT - он наковеркал вроде умно,но у меня массив fexo_comp[];

    Вот такой:
    PHP:
    1. 40
    2. 40
    3. 40
    4. 40
    5. 40
    6. 40
    7. 40
    8. 40
    9. 40
    10. 40
    11. 40
    12. 40
    13. 4
    14. 40
    15. 2
    16. 2
    17. 2
    18. 40
    19. 40
    20. 4
    21. 40
    22. 40
    23. 40
    24. 40
    25. 40
    26. 40
    27. 40
    28. 40
    29. 40
    30. 40
    31. 40
    32. 40
    33. 3
    34. 3
    35. 40
    36. 40
    37. 2
    38. 2
    39. 2
    40. 40
    41. 40
    42. 40
    43. 40
    44. 40
    45. 40
    46. 40
    47. 40
    48. 40
    49. 40
    50. 40
    51. 40
    52. 40
    53. 40
    54. 40
    55. 40
    56. 40
    57. 3
    58. 3
    59. 40
    60. 4
    61. 40
    62. 40
    63. 2
    64. 2
    65. 2
    66. 40
    67. 40
    68. 40
    69. 40
    70. 40
    71. 40
    72. 40
    73. 40
    74. 40
    75. 40
    76. 40
    77. 40
    78. 40
    79. 3
    80. 3
    81. 40
    82. 40
    83. 4
    84. 40
    85. 4
    86. 40
    87. 40
    88. 40
    89. 40
    90. 40
    91. 40
    92. 40
    93. 40
    94. 40
    95. 40
    96. 40
    97. 3
    98. 3
    99. 40
    100. 40
    101. 40
    102. 40
    103. 40
    104. 40
    105. 40
    106. 40
    107. 40
    108. 40
    109. 40
    110. 40
    111. 40
    112. 40
    113. 40
    114. 40
    115. 40
    116. 40
    117. 40
    118. 40
    119. 40
    120. 40
    121. 40
    122. 40
    123. 40
    124. 40
    125. 40
    126. 40
    Корабли компьютера потом спрячу,после наладки
     
  13. Dremax

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

    С нами с:
    13 фев 2015
    Сообщения:
    154
    Симпатии:
    4
  14. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    440
    Симпатии:
    85
    Адрес:
    Бавария, Германия
    Добрый день!
    Однако, как и в шахматах возникает вопрос: "Как синхорнизировать на сервер ходы хотя бы одной пары игроков?"
    Интересно, что ответит Вам ИИ.
    Удачи!
     
  15. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    440
    Симпатии:
    85
    Адрес:
    Бавария, Германия
    Давно не играл в эту замечательную игру. М.б. поэтому не понял почему массив одномерный.
    По идее, должен, где-то быть массив с количеством клеток на каждый тип корабля и другой массив, в котором рандом определяется начальная и конечная клетка на поле для каждого корабля.
     
  16. Dremax

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

    С нами с:
    13 фев 2015
    Сообщения:
    154
    Симпатии:
    4
    Ходы двоих игроков записываются нормально,можем сыграть вдвоем онлайн на любом варианте
    Вот:
    https://кибершахматы.рф/variant1/archive_d_tip1_uvel.php?namer=Guest880&tip=1&nomer=n5984r
    --- Добавлено ---
    Корабли раздаю рамдомно,наладил с 5й попытки,корабли липнут дург к другу:
    PHP:
    1. <?
    2.  
    3. $k1='2';
    4. $d1='0';
    5. $p1='0';
    6.  
    7.  
    8. // Заполняем доску рандомными значениями
    9. for ($i = 0; $i < 101; $i++) {
    10.        
    11. $r='0';
    12. // Рандомно заполняем клетки значениями 2, 3 или 4
    13.         if(!$start[$i]) { $start[$i] = rand(1, 20); $r='1'; }
    14.  
    15. if($start[$i]=='1' && $k1=='1' && $r=='1') { $start[$i]='40'; }
    16. if($start[$i]=='1' && $k1!='1') { $k1='1'; $rer=rand(1,2);
    17.  
    18. if($rer=='1') { $start[$i+10]='1'; $start[$i+20]='1'; $start[$i+30]='1'; }
    19.  
    20. if($rer=='2') { $start[$i+1]='1'; $start[$i+2]='1'; $start[$i+3]='1'; }
    21.  
    22. }
    23.  
    24. if($start[$i]=='2' && $d1=='1' && $r=='1') { $start[$i]='40'; }
    25. if($start[$i]=='2' && $d1!='1') { $d1='1'; $start[$i+10]='2'; $start[$i+20]='2'; $tet=rand(1,2);
    26.  
    27. if($tet=='1') { $start[$i+24]='2'; $start[$i+25]='2'; $start[$i+26]='2'; }
    28. if($tet=='2') { $start[$i+22]='2'; $start[$i+32]='2'; $start[$i+42]='2'; }
    29.  
    30. }
    31.  
    32. if($start[$i]=='3' && $p1=='1' && $r=='1') { $start[$i]='40'; }
    33. if($start[$i]=='3' && $p1!='1') { $p1='1'; $start[$i+10]='3';  
    34.                                                             $start[$i+21]='3'; $start[$i+22]='3';
    35.                                                             $start[$i+24]='3'; $start[$i+34]='3';  }
    36.  
    37. if($start[$i]=='5') { $start[$i]='40'; }
    38. if($start[$i]=='6') { $start[$i]='40'; }
    39. if($start[$i]=='7') { $start[$i]='40'; }
    40. if($start[$i]=='8') { $start[$i]='40'; }
    41. if($start[$i]=='9') { $start[$i]='40'; }
    42. if($start[$i]=='10') { $start[$i]='40'; }
    43. if($start[$i]=='11') { $start[$i]='40'; }
    44. if($start[$i]=='12') { $start[$i]='40'; }
    45. if($start[$i]=='13') { $start[$i]='40'; }
    46. if($start[$i]=='14') { $start[$i]='40'; }
    47. if($start[$i]=='15') { $start[$i]='40'; }
    48. if($start[$i]=='16') { $start[$i]='40'; }
    49. if($start[$i]=='17') { $start[$i]='40'; }
    50. if($start[$i]=='18') { $start[$i]='40'; }
    51. if($start[$i]=='19') { $start[$i]='40'; }
    52. if($start[$i]=='20') { $start[$i]='4'; }
    53.    
    54. }
    55. ?>
    Мелкий корабль это =4,
    2х клеточный это =3,
    3х клеточный это =2,
    И самый большой это =1
    Клетка 40 это пустота

    Надо еще пару раз улучшить,чтобы корабли не липли.
    Если сможете - помогите
     
  17. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    440
    Симпатии:
    85
    Адрес:
    Бавария, Германия
    Вот:
    https://кибершахматы.рф/variant1/archive_d_tip1_uvel.php?namer=Guest880&tip=1&nomer=n5984r
    --- Добавлено ---
    Вот не работает. Это мы уже обсуждали. О перезагрузках страницы после каждого хода.

    Про корабли ничего не понял. Сколько типов кораблей и сколько клеток в каждом типе?
    Ориентация кораблей может быть любая?

    P.S. Если Вы не разберётесь с JS и AJAX, и с этой игрой Вам тоже не справиться, как и с любой другой игровой программой.
     
  18. Dremax

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

    С нами с:
    13 фев 2015
    Сообщения:
    154
    Симпатии:
    4
    https://кибершахматы.рф/variant2/archive_d_tip2_uvel.php?namer=Guest936&tip=2&nomer=n7694h
    Это просмотр чужой партии,там ниче не должно работать

    За сегодняшний день добавил 2 чужих ИИ:
    https://кибершахматы.рф/chess_comp/dosa.php //на мобиле не работает
    https://кибершахматы.рф/chess_comp2/dosa.php //очень слабо ирает

    Правила морского боя описывать не буду,в течении месяца сам допишу цикл for и расставлю корабли

    AJAX успешно работает на всех 8ми вариантах
     
  19. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    440
    Симпатии:
    85
    Адрес:
    Бавария, Германия
    Ради интереса посмотрел как вы пристроили 2 чужих ИИ.
    Оба варианта чисто браузерные HTML и JS (чистый без jQuery).
    Обратие внимание на кодировку страницы и в chess_comp2. Выдаёт так:
    ����� �� ��� 0.008 ���. ( пишет в utf-8 в кодировке windows-1251)
    Оба чужих скрипт для игр через сервер не годятся.
    Смотрел несколько похожих JS скриптов. Очень слабый ИИ.

    В Ваших вариантах доски перезагружаются после каждого хода, значит, AJAX как не работал так и не работает.
    Чтобы заработал не достаточно подключить JQuery и вызвать функцию Ajax.
     
  20. Dremax

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

    С нами с:
    13 фев 2015
    Сообщения:
    154
    Симпатии:
    4
    Написал простенькую функцию,чтобы компьютер побеждал в Морской бой.Так вот,компьютер попадает на 100%,если указать в цкиле $dd<100,я убавил "Мозги" компьютера,и указал $dd<30,чтобы компьютер немного промахивался

    PHP:
    1. $zet='1';
    2. for($dd=0;$dd<30;$dd++) {
    3.  
    4. if($zet=='1') {
    5. $rr=rand(1,100);
    6. if($fexo[$rr]=='98') { if($fexo[$rr+'1']<'5') { $hod_one=$rr+'1'; $zet='2'; } }
    7. if($fexo[$rr]=='98') { if($fexo[$rr-'1']<'5') { $hod_one=$rr-'1'; $zet='2'; } }
    8. if($fexo[$rr]=='98') { if($fexo[$rr+'10']<'5') { $hod_one=$rr+'10'; $zet='2'; } }
    9. if($fexo[$rr]=='98') { if($fexo[$rr-'10']<'5') { $hod_one=$rr-'10'; $zet='2'; } }
    10.                    
    11. }
    12.                                            }
     
  21. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    440
    Симпатии:
    85
    Адрес:
    Бавария, Германия
    Про морской бой прокоментировать ничего не могу, а вот про "Мозги" компьютера могу предположить,
    что если к значению переменной $rr типа integer нужно прибавить или отнять нечто, а она задано в кавычках
    т.е. как string, то до выполнение арифметической операции string д.б. преобразована в integer.
    Вопрос зачем? Может быть просто вместо $rr+'1' , написать $rr+1 и так везде?
     
  22. Dremax

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

    С нами с:
    13 фев 2015
    Сообщения:
    154
    Симпатии:
    4
    Так у меня повелось с 2009 года,что любые цифры в php пишу в кавычках,и комплиятор никогда не ругал
    Давно знаю что $ret=1; это число ,а $ret='1'; это строка,но php меня никогда не ругал

    Я сыграл по телику в свой Морской бой - И КОМПЬЮТЕР МЕНЯ ВЫИГРАЛ ))
    Я реализовал логику школьника в этой игре,сначала бьем наугад,ищем попадание,потом от подбитой клетки ищем продолжение корабля

    Сыграйте)
    Компьютер снайпер на 50% ,написал в цикле $dd<50;
    Там и дизайн изменился, https://кибершахматы.рф/sea_battle/dosa.php
    Кажется мне интереснее поиграть в Морской бой,чем в шахматы)
     
  23. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    440
    Симпатии:
    85
    Адрес:
    Бавария, Германия
    Советую Вам так не делать. В каждом случае добавляется лишняя операция.
    Кроме того РНР 8.2 не столь талератен к типам данных, как PHP 5.2, на котором Вы начинали.
    Сейчас во многих случаях, которые старый интерпретатор "додумывал", теперь возникают фатальные ошибки.