|
Модератор
1245 / 676 / 292
Регистрация: 10.11.2019
Сообщений: 1,406
|
|
101 Basic Computer Games25.05.2024, 16:17. Показов 16195. Ответов 273
Метки нет (Все метки)
Недавно я натолкнулся в сети на книгу, о которой никогда не слышал.
Книга называется "101 Basic Computer Games". Она была выпущена DEC в 1975 году и содержит тексты игр с аннотациями. Игры написаны на BASIC, на компьютере PDP-11. Очень интересная коллекция для начинающих программистов, и не только. Коллекция игр с описаниями и переводом на другие языки программирования находится по адресу: https://github.com/coding-horr... uter-games
4
|
|
| 25.05.2024, 16:17 | |
|
Ответы с готовыми решениями:
273
Coodo Games & Datcroft Games Java Developer (Самара) Coodo Games & Datcroft Games AS3.0 Developer (Самара) |
|
304 / 75 / 6
Регистрация: 27.04.2022
Сообщений: 238
|
||
| 28.05.2024, 16:29 | ||
|
В прошлом году опубликовал биографическую статью об авторе — https://ru.wikipedia.org/wiki/... 0%B8%D0%B4
1
|
||
|
Кормпилятор
|
|
| 28.05.2024, 18:19 | |
|
Для начинающих это точно не стал бы советовать.
Честно, никогда не понимал зачем что-то старое переводить с "того" бейсика на современные ЯП. Там же самое зарождение ЯП, с соотв. стилем кода, близкому к 2GL, что изменилось лишь к началу 90-х. Одно дело портировать что-то с относительно нестарого QuickBasic, под который были и Vesa библиотеки и Sound Blaster библиотеки. И совсем другое ковырять безбожно устаревшее по всем меркам и аппаратным и программным. Максимум кому это было бы интересно - историкам IT, да и то не уверен.
0
|
|
|
Модератор
1245 / 676 / 292
Регистрация: 10.11.2019
Сообщений: 1,406
|
||||||
| 28.05.2024, 19:04 [ТС] | ||||||
|
Вот программа Train - мне понравилась как хороший пример школьной программы.
А не то, что сейчас на ЕГЭ - "Возведите Питоном какое-то число в 2024 степень, и найдите, сколько раз в цифрах результата встречается цифра 6" - такие задания точно хорошему не учат.
0
|
||||||
|
Кормпилятор
|
||
| 28.05.2024, 20:03 | ||
|
В первом случае мы получаем условного "кодерхулигана", во-втором(ЕГЭ) вообще никого, т.е. человека которому это всё не интересно. Добавлено через 22 минуты Твои же примеры qbfan, хотя бы имеют практическую составляющую, тут: Преобразование нот в WAV файл. или тут: https://www.cyberforum.ru/post17222009.html Это хоть как-то может человека замотивировать. А беспредметный матан и ужасно написанный код для мёртвого, 60 летнего железа, сугубо для текстового режима - вообще никак. Ноль эмоций просто.
0
|
||
|
|
||
| 14.06.2024, 16:40 | ||
|
qbfan, почему-то вы дали ссылку не на книгу с текстом игр на basic, а на какую-то коллекцию игр созданых на совершенно других языках. Но всё-таки спасибо за тему. Вот прямая ссылка на книгу с играми:
https://annarchive.com/files/B... df#page=17
1
|
||
|
Модератор
1245 / 676 / 292
Регистрация: 10.11.2019
Сообщений: 1,406
|
||
| 14.06.2024, 16:56 [ТС] | ||
|
а в коллекции игр - те же исходники, но уже набранные, и даже с некоторыми исправленными ошибками. (Насколько я понял, авторы zip коллекции ориентировались на GW-Basic) Я не хотел никого заставлять набирать столь древние программы вручную.
3
|
||
|
|
|||
| 14.06.2024, 17:08 | |||
|
Добавлено через 2 минуты
0
|
|||
| 14.06.2024, 17:17 | |
|
0
|
|
| 14.06.2024, 17:33 | |
|
0
|
|
| 14.06.2024, 19:05 | |
|
0
|
|
|
Кормпилятор
|
|
| 22.06.2024, 23:57 | |
|
Опять 25, краем глаза смотрел эти исходники, простите, но это лютое и унылейшее говно, написанное
в стиле "бабушки-училки начальных классов", не умеющей абсолютно ничего. Я не понимаю почему, коллеги, вы в упор этого не видите. Какие в жопу алгоритмы, где вы их там нашли? Этим не то что никого завлечь не получится, максимум напугать, да так, чтобы человек от страху обосрался и никогда в жизни больше не захотел приближаться ни к программированию, ни к бейсику. И о языке у того, кто начнёт с этих исходников 70-х годов, зародится самое удручающее впечатление. Тем более сейчас, когда он уже практически мёртв в силу стагнации комьюнити и отхода от дел проф кодеров которые в 90-х\00-х ещё что-то писали. И даже если человек сильно пытлив и у него что-то пойдёт по этой "литературе", то он переймёт худшие принципы программирования от которых будет трудно избавиться(как у хулигана, который отписался тут). Это как раз и будет ловушка, из-за которой огульно хаял язык придурковатый Дейкстра, потому что ему на глаза попадались исключительно подобные "кадры". Эта литература вредна для BASIC комьюнити. С одной стороны она призвана пересадить человека на другой ЯП, с другой навязать уродливую идеологию с помощью которой люди не смогут писать современное ПО. Это примерно как нам в стране навязывают что надо учить английский и сваливать подальше(в переводе на "прогерский" - переходить на другие ЯП), причём даже сейчас. По аналогии с гос-вом, BASIC находится в сходном "трудном положении". А если по тезисам темы, то объясню в чём смысл: 1) Текстовый режим окончательно устарел ровно в то время, когда BIOS-ы массово были переведены на графический интерфейс. Это было его последним актуальным назначением. Но исходники темы и не учат пользоваться текстовым режимом(оформление UI, работа со страницами видео памяти, программирование знакогенератора, стандарт ASCII, работа через память). Часть этих навыков может потребоваться при программировании консольных утилит или для создания собственных графических консолей. 2) Отступы нужны для увеличения скорости считывания кода глазами. И работают сугубо в тандеме с другими принципами увеличения читаемости кода. Код без отступов читать можно, если соблюдены другие принципы(комментарии, пропуски строк, грамотное именование переменных и т.п.). Однако код с отступами "всегда" схватится и осознается мозгом быстрее. Во-времена 70-х годов делать кучу пробелов для отступов - было непростительно из-за отсутствия памяти, именно поэтому любые "декоративные" элементы опускались, но эта проблема давно позади. И сейчас код без отступов выдаёт обычно слащавого юнца, первый раз взявшего в руки компилятор. 3) По поводу макаронинга диалоги уже были. GOTO не для кодинга им, а для редких моментов, когда без него будет херово всему проекту, например чтобы избежать массированной реструктуризации кода или для избавления от кусков кода, которые в структурном виде заняли бы 2-3 стандартных экрана в ширину. Ещё имеет место редкое применение для оптимизации(описания всех состояний кода и множественного разветвления конкретного блока на состояния), на ВУ применяется крайне редко, в основном на ассемблере. А GOSUB безвозвратно устарел как только появились нормальные процедуры. 4) По поводу каких-то интересных якобы задач, а почему просто не посоветовать людям подтянуть матан и не поиграть в шахматы? Эти вещи дадут очевидный результат в плане развития логико-математического мышления. При чём тут вообще ЯП?
0
|
|
|
|
||||
| 23.06.2024, 11:35 | ||||
|
Да, в старых версиях basic, процедура не имела своих параметров, надо было работать через глобальные переменные. Это недостаток. Но он поправим если каждая процедура будет иметь свой собственнй пул переменных, и поле для возврата. Простой пример. Допустим нам надо три раза вызвать одну и ту же процедуру с тремя параметрами, один из параметров которой должен быть все время разным, а два других не меняются. В обычном подходе приходится передавать все три параметра. В нормальном, надо передать в первый раз три параметра, а в двух остальных всего один, так как два параметра остаются неизменными. Разве это не ускоряет код? Ускоряет. А нам все универсализировали. Я не согласен.
0
|
||||
|
|
|||||||
| 23.06.2024, 14:07 | |||||||
|
Размер процедуры/функции должен быть таким чтобы помещался на экране без прокрутки. В IDE должна быть удобная навигация по функциям. Большой код нужно делить на несколько файлов. Если не через стек, то как? Через глобальные переменные? Про многопоточность не думали? А про 1500 глобальных переменных? С локальными что делать? Тоже хранить в глобальных? Вот будет "весело" править отлаженный код при его повторном использовании из-за конфликта имен глобальных переменных.
0
|
|||||||
|
|
||||
| 23.06.2024, 14:43 | ||||
|
0
|
||||
|
Модератор
1245 / 676 / 292
Регистрация: 10.11.2019
Сообщений: 1,406
|
|
| 23.06.2024, 14:57 [ТС] | |
|
По поводу стека. В достаточно старых версиях Бейсика стек не просто используется, а их
несколько - отдельно стек для вызовов for, отдельно стек для вызовов gosub. (и далее видимо - while ... wend) Интерпретатор контролирует эти стеки и выдаёт при проблемах сообщения об ошибке (типа next without for, return without gosub). Проблемы со стеком и вызовом gosub вероятно привели к тому, что в FreeBasic использование gosub по умолчанию запрещено.
0
|
|
|
|
|||||
| 23.06.2024, 15:04 | |||||
|
С многопоточностью как быть?
0
|
|||||
|
Модератор
1245 / 676 / 292
Регистрация: 10.11.2019
Сообщений: 1,406
|
||
| 23.06.2024, 15:35 [ТС] | ||
|
Например при gosub в стеке запоминался не адрес возврата (как в ассемблере), а что-то вроде номера строки и положения директивы gosub в строке. Более того - при неумелом использовании for..next и gosub .. return в сочетании с goto эти стеки переполнялись или опустошались.
0
|
||
|
Кормпилятор
|
|||||
| 23.06.2024, 15:51 | |||||
|
Функция возвращает значение, процедура - не возвращает. Это всё что надо об этом знать. А GOSUB это аморфная субстанция, которая однозначно тебе не скажет какие у неё параметры, что она возвращает и куда. Т.е. на каждый GOSUB тебе надо лезть в код чтобы это узнать. По поводу рекурсии уже высказывался, кто хочет себе геморрой - всегда его сыщет. параметры куда приходят и куда уходят, какой их тип. Твой пример с передачей сначала трёх параметров, а потом одного. Решается просто - через глобалки двух параметров. Либо передачей в процедуру одного указателя на все три параметра, меняется из которых любое количество. При адекватном компиляторе скорость будет равноценная. чтобы не вылезало за экран. Хотя во времена FullHD мониторов чтобы просто писать код - это не проблема. Впрочем для читателя это тоже не проблема, если за большой объём кода пару раз вылезет.
0
|
|||||
| 23.06.2024, 15:51 | |
|
Помогаю со студенческими работами здесь
20
Coodo Games & Datcroft Games 3d Artist (Самара) Coodo Games & Datcroft Games Lead Java Developer / Team Lead Выполнить следующие операции в двоичной системе счисления: 10101,10101+1001,0011 101110,101-101,11 1011*111 1010101 Даны действительные числа x1,…,x101, y1…,y101. Получить действительные x'1,…,x'101, y'1,…,y'101 Bsod - *50,*3B, *101, *101 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2).
Унарный минус обозначается как !
*/
#include <iostream>
#include <stack>
#include <cctype>. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|