24 декабря 2023 г. Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна.
Подробности случившегося. Мы призываем всех неравнодушных
помочь нам с восстановлением утраченного контента!
Брать готовые наброски чьи-то или использовать какие-нибудь фреймворки не стал. Хочу на выходе получить логически-законченное приложение, которое способно хранить и обрабатывать огромное количество данных в табличном виде типо (пик) . Символ A - это чисто для себя назвал абстракцию ячейки в массиве. Символ В - это split ячейки. Т.е ещё меньшие доли ячейки |х|у|z | и т.д.. т.е B это самая минимальная атомарная часть данных..
..
Конечно же основная цель - это выпускать на этом движке массу увлекательных игрушек, убийц GTA / Worldoftanks/.. Minecraft/ и пр пр..
На деле, хоть бы убийцу тетриса написать сперва))..
Короче говоря, если серьезно, то написал уже больше двух десятков функции и процедур, целевая задача которых - это прочёсывание огромного двухмерного массива Objects на предмет поиска тех или иных ячеек с данными.
На пике изображена и распечатана минимальнейшая тестовая табличка с пятью объектами (* х5 экземпляров для каждого класса объектов) . Такие объекты как cat, man, sun, box, и даже god с одним лишь единственным параметром "Любовь".
Но это всё просто для абстракции придумывал просто на ходу, суть не в этом.
Главные, базовые структуры каждой структуры данных в этом моём недодвижке, это строчки в первом элементе каждой строки.. ну к примеру хочу я создать человечка. Пишу задающую строку для него. Сначала название объекта во множественном числе, потом в единственном. (Потом объясню зачем во множ. задумывалось)
Mans|man|#0|#x|#y|#power|@name
Первый токен #0 означает количество экземпляров данного класса. Туда не лезем, а просто указываем что это Int символом решетки, и ставим значение 0 соответственно. По мере того как движок случайно или преднамеренно будет добавлять/клонировать экземпляры какого-нибудь класса, он сам будет изменять это значение на 1,2,3.. 5835...и т.д. Ну или командой функцией типо:
AddA("man", 36, 82, 10, Anon )
Можно это самостоятельно сделать. И двиг добавить в таблицу новый экземпляр какого-нибудь очередного Васька в список man.
Поскольку каркас уже обозначен в крайней левой ячейке n x 0, то транслятор уже не задаёт ебанутых вопросов, типо что такое 36, 82, и тем более Anon.
Он понимает что это x, y , name
Все функции на пике 2. Это я тестировал их.
Загвоздка у меня возникла с функцией удаления DelA(.....
Пытаюсь научить компилятор понимать просьбы "человека" типо этой:
DelA("car", x,y = 356,862);
Что означает удалить все машины, у которых x = 356, a y = 862. (Решил параллельное присвоение использовать , под него проще синтаксический анализатор было сделать), нежели под х = 375, у = 903, z =.....
Короче говоря, практически все "низкоуровневые" функции я прописал и программу научил их понимать и выполнять. А из непосредственно высокоуровневых функций будут типо отыскать все экземпляры где live жизни <= 0 , а затем удалить их. Или же такие функции как установить значение #y для всех экземпляров класса "stone" y-- если камень который был под ним, исчез. И т.д. ну это все примеры разумеется.
Ну а как доточу последние штрихи, то кину эти все команды в loop необходимо уложиться в 30-45 миллисекунд чтобы укладываться в 25-30 кадров/с рендеринга
Как думаете , получиться что-нибудь из этого всего? Можно ли хоть что-то типо Bejeweled будет написать на этом всём?