Важная информация
Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 13

Тема: Адаптация исходника со спектрума

  1. #1 Адаптация исходника со спектрума 
    Профи Аватар для stabud
    Регистрация
    05.01.2013
    Сообщений
    765
    Сказал(а) спасибо
    318
    Поблагодарили 337 раз(а) в 266 сообщениях
    Записей в блоге
    6
    Когда я написал в [Ссылки могут видеть только зарегистрированные пользователи. ] теме, что хочу перевести исходник на современные стандарты языка, я наивно перегнул. Все что реально было сделать, это перевести его на синтаксис режима Qbasic. Когда видишь подобный код, невольно вспоминаешь Дейкстру и его изречение по поводу бейсиков... Автор исходника просто незауряден в создании своего детища. Это надо же, там где все нужно было сделать просто и элегантно, код издевательски усложнен за счет косвенной адресации.

    Ну да ладно, вот исходные коды игры "президент":

    [Ссылки могут видеть только зарегистрированные пользователи. ]

    Вообще хотел исходные коды выложить напрямую, но дикое ограничение на 10000.
    Ответить с цитированием  
     

  2. #2  
    Гуру Аватар для Konstantin Shcherba
    Регистрация
    08.11.2010
    Сообщений
    1,336
    Сказал(а) спасибо
    26
    Поблагодарили 139 раз(а) в 107 сообщениях
    Записей в блоге
    1
    Цитата Сообщение от stabud Посмотреть сообщение
    Вообще хотел исходные коды выложить напрямую, но дикое ограничение на 10000.
    Какое такое ограничение?
    Ответить с цитированием  
     

  3. #3  
    Профи Аватар для stabud
    Регистрация
    05.01.2013
    Сообщений
    765
    Сказал(а) спасибо
    318
    Поблагодарили 337 раз(а) в 266 сообщениях
    Записей в блоге
    6
    Цитата Сообщение от admin Посмотреть сообщение
    Какое такое ограничение?

    Вот такое:

    Вы ввели слишком длинный текст (53888 символов). Пожалуйста, сократите его до 10000 символов.
    Я даже один исходник вместить не смог, а мне нужно было два. Пришлось в архив пихать, не разбивать же на 5-6 сообщений.
    Ответить с цитированием  
     

  4. #4  
    Супер модератор Аватар для >Quiet Snow<
    Регистрация
    11.04.2011
    Адрес
    Планета земля
    Сообщений
    3,819
    Сказал(а) спасибо
    1,806
    Поблагодарили 932 раз(а) в 794 сообщениях
    Записей в блоге
    1
    Автор исходника просто незауряден в создании своего детища. Это надо же, там где все нужно
    было сделать просто и элегантно, код издевательски усложнен за счет косвенной адресации.
    Вот что я называю старыми принципами программирования. Печально когда код кишит GOTO.
    С нумерацией и без форматирования вообще беда...
    Но если не ошибусь, не было SUB'ов раньше, всё делалось через GOTO, сам бейсик таким был
    и люди привыкли к этой байде, также как я привык к процедурному коду. Сейчас полюбому есть
    кодеры, которые пишут в старом ключе с нумерацией и GOTO.
    Со времён QuickBasic\Turbo Pascal началось как раз таки нормальное процедурное
    программирование, т.е. массовая тенденция отучения от старого стиля.

    Вы ввели слишком длинный текст (53888 символов). Пожалуйста, сократите его до 10000 символов.
    Да у меня уже возникали подобные проблемы, и тоже с исходником.
    Сами то сообщения короткие, а вот исходники как правило длиннее.
    Но как я понимаю, это пофиксить никак нельзя, иначе размер БД возрастёт и замедлится
    её работа.

    Хотя в принципе никогда не сложно засунуть в архив. Просто CTRL+C CTRL+V побыстрее и
    бывает надо, чтобы код удобнее было смотреть...
    Обучение прикладному программированию(по skype), качественно, недорого, 18+, вопросы в личку.
    «Если вы ничего не сделаете, я уверяю вас, ничего и не произойдёт» © Жак Фреско
    Ограниченно модерирую.
    Ответить с цитированием  
     

  5. #5  
    Профи Аватар для stabud
    Регистрация
    05.01.2013
    Сообщений
    765
    Сказал(а) спасибо
    318
    Поблагодарили 337 раз(а) в 266 сообщениях
    Записей в блоге
    6
    Цитата Сообщение от >Quiet Snow< Посмотреть сообщение
    Вот что я называю старыми принципами программирования. Печально когда код кишит GOTO.
    С нумерацией и без форматирования вообще беда...
    Леха , я имел ввиду прыганье по gosub когда надо было вывести одну из строк на экран. Ведь есть же массивы, смещайся по индексу и выводи что требуется. Вот один из примеров кода автора:

    Код :
    1110 PRINT " KBAPT?P?";:RETURN 
    1210 PRINT " MA??H?  ";:RETURN 
    1310 PRINT " B????   ";:RETURN 
    1410 PRINT " ?XT?    ";:RETURN 
    1510 PRINT " CAMO?ET ";:RETURN 
    1610 PRINT " ?AP     ";:RETURN 
    1710 PRINT " PECTOPAH";:RETURN 
    1810 PRINT " MA?A3?H ";:RETURN 
    1910 PRINT " OTE??   ";:RETURN 
    2010 PRINT " 3ABO?   ";:RETURN 
    ...
    3630 PRINT "B? ?MEETE:"
    3640 LET J=1010:FOR I=1 To 5:LET J=J+100:IF (-(1-C(3,I))^2)<0 Then GO TO 3650
    3645 GO SUB J:PRINT 
    3650 NEXT I

    И вот такая байда и еще похлеще по всему коду.

    Код :
    Но если не ошибусь, не было SUB'ов раньше, всё делалось через GOTO, сам бейсик таким был

    Ошибаешься, и функции и процедуры есть. Более того, автор знал о них, поскольку в одном месте даже использовал функцию.

    А вот насчет сносного кодинга , стиля - это ты прав. Тогда этому никто не учил, как умели так и кодили.
    Ответить с цитированием  
     

  6. Пользователь сказал cпасибо:

    >Quiet Snow< (04.08.2013)

  7. #6  
    Супер модератор Аватар для >Quiet Snow<
    Регистрация
    11.04.2011
    Адрес
    Планета земля
    Сообщений
    3,819
    Сказал(а) спасибо
    1,806
    Поблагодарили 932 раз(а) в 794 сообщениях
    Записей в блоге
    1
    Леха , я имел ввиду прыганье по gosub когда надо было вывести одну из строк на экран.
    Понятно, я просто весь код уж читать не стал, полистал чуток, опупел и закрыл))), слишком необузданно.

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

    От этого реально крышу срывает:
    3630 PRINT "B? ?MEETE:"
    3640 LET J=1010:FOR I=1 To 5:LET J=J+100:IF (-(1-C(3,I))^2)<0 Then GO TO 3650
    3645 GO SUB J:PRINT
    3650 NEXT I
    Обучение прикладному программированию(по skype), качественно, недорого, 18+, вопросы в личку.
    «Если вы ничего не сделаете, я уверяю вас, ничего и не произойдёт» © Жак Фреско
    Ограниченно модерирую.
    Ответить с цитированием  
     

  8. #7  
    Профи Аватар для stabud
    Регистрация
    05.01.2013
    Сообщений
    765
    Сказал(а) спасибо
    318
    Поблагодарили 337 раз(а) в 266 сообщениях
    Записей в блоге
    6
    Цитата Сообщение от >Quiet Snow< Посмотреть сообщение
    От этого реально крышу срывает:
    Самое интересное, что в любом новомодном бейсике такое сделать невозможно. Ни один из известных мне бейсиков не позволит прыгать по gosub , использую адрес из переменной. А вот спектрумский умеет
    Ответить с цитированием  
     

  9. #8  
    Супер модератор Аватар для >Quiet Snow<
    Регистрация
    11.04.2011
    Адрес
    Планета земля
    Сообщений
    3,819
    Сказал(а) спасибо
    1,806
    Поблагодарили 932 раз(а) в 794 сообщениях
    Записей в блоге
    1
    Ни один из известных мне бейсиков не позволит прыгать по gosub , использую адрес из переменной. А вот спектрумский умеет
    Это кстати забавная фича, можно такого нагородить что писец, круче брейнфака...
    Дейкстра там в гробу крутится от такой деструктуризации алгоритма.
    Последний раз редактировалось >Quiet Snow<; 04.08.2013 в 08:44.
    Обучение прикладному программированию(по skype), качественно, недорого, 18+, вопросы в личку.
    «Если вы ничего не сделаете, я уверяю вас, ничего и не произойдёт» © Жак Фреско
    Ограниченно модерирую.
    Ответить с цитированием  
     

  10. #9  
    Новичок
    Регистрация
    07.04.2016
    Сообщений
    1
    Сказал(а) спасибо
    0
    Поблагодарили 0 раз(а) в 0 сообщениях
    Цитата Сообщение от stabud Посмотреть сообщение
    я имел ввиду прыганье по gosub когда надо было вывести одну из строк на экран. Ведь есть же массивы, смещайся по индексу и выводи что требуется.
    Молодые люди, такие смешения по индексу вряд ли были возможны в очень древних версиях Бейсика. Задолго до ваших спектрумовских компьютеров мы играли в эту игру на больших компьютерах серии ЕС/СМ в Вычислительных Центрах. Иностранная игра была написана на заре зарождения компьютерных игр. На ваш спектрум она попала намного позже. Отечественные умельцы как могли редактировали и подстраивали игру под текущие версии Бейсика, в т.ч. стали применять упомянутые смещения. Я видел эту игру во всевозможных редакциях. Большинство редакций пришло в СССР уже с (логическими) ошибками, но это уже отдельная тема.
    Ответить с цитированием  
     

  11. #10  
    Разбирающийся
    Регистрация
    01.04.2015
    Сообщений
    59
    Сказал(а) спасибо
    3
    Поблагодарили 35 раз(а) в 27 сообщениях
    Ни один из известных мне бейсиков не позволит прыгать по gosub , использую адрес из переменной.
    Да ладно! Если захотеть что-то подобное сделать, то всегда можно придумать как. Единственное что нумерации строк нет, поэтому нужно искать их альтернативу.
    PureBasic Code:
    1. OpenConsole()
    2. For i=0 To 9
    3.   CallFunctionFast(PeekI(?Point+(i*SizeOf(Integer))))
    4. Next i
    5. PrintN("Нажмите Enter для закрытия программы")
    6. Input()
    7. End
    8.  
    9. m1: : PrintN("1") : Return
    10. m2: : PrintN("2") : Return
    11. m3: : PrintN("3") : Return
    12. m4: : PrintN("4") : Return
    13. m5: : PrintN("5") : Return
    14. m6: : PrintN("6") : Return
    15. m7: : PrintN("7") : Return
    16. m8: : PrintN("8") : Return
    17. m9: : PrintN("9") : Return
    18. m10: :PrintN("10") :Return
    19.  
    20. DataSection
    21.   Point:
    22.   Data.i ?m1, ?m2, ?m3, ?m4, ?m5, ?m6, ?m7, ?m8, ?m9, ?m10
    23. EndDataSection
    Ответить с цитированием  
     

Страница 1 из 2 12 ПоследняяПоследняя
Информация о теме
Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права
  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •