bedvit, Разобрался, спасибо. Может вам стоит как то подсветить кнопки ? Что бы было нагляднее, включены ли режимы "Автомасштаб" и "Ареал по живым" или нет. И еще, если со всеми шаблонами автомасштаб работает, то шаблон p416_60P5H2V0_gun отображается не совсем корректно. Хотя это все уже капризы и сделано, как я говорил, здорово.
Свой проект попробую найти, но хвалится там особо нечем.
VSerg, верно. Поправил, дело было в округлении (в механизме масштабирования). Сохранил новую версию в посте №58 Дело было не в шаблоне. Кстати по теме шаблонов - вот интересный шаблон (прилагаю). Сборщик (Breeder 1) собирает ружья Gosper, которые в свою очередь собирают планеры. Фабрика производящая другие фабрики) Breeder 1
15/04/2019 Обновление версии: Life v1.5.0.0 - Завершение проекта 1. Оптимизирован алгоритм расчета, итого с 1й версии до 5й скорость выросла с 26 поколений в секунду до 232 п./с. на примере фигуры ("p416 60P5H2V0 gun") (27 тыс. живых клеток). 2. Расширен диапазон MAX количества живых клеток - до 10 млн. (за счет резервирования большего количества памяти), построение на примере фигуры Max, (в прилагаемых шаблонах есть). С проверкой переполнения. 3. Немного переработан интерфейс, разделил вывод и ввод, мелкие оптимизации для правильной работы с клавиатуры. 4. Планировал перейти на 3D (работу начал, но на это нужно время, которого сейчас нет, и в ближайшем будущем не будет на этот проект) посему выкладываю рабочие исходники данной версии на WinAPI, может кто-то напишет лучше, подключит Direct3D или в целях самообразования просто попилит код. Код писал в целях обучения, еще есть где оптимизировать, к примеру контролируемое перехеширование и перезапись итераторов, позволит изначально использовать меньше памяти (резервировать меньше изначально). Можно, к примеру, уйти от хеш-таблиц, создать динамический выделяемые блоки памяти (к примеру по 1024*1024 байт), с контролем времени жизни (есть/нет живые клетки). С ними линейные скорости чтения, поиска (мы знаем адрес), записи. Перемещение - смещение на степень двойки очень быстрая процедура. Но опять же, есть и свои подводные камни. А времени нет додумать концепцию и реализовать. Исходники с комментариями на русском, распространяются как есть, под свободной лицензией. Репозиторий: https://github.com/bedvit/Life
Выявилась интересная особенность для игрового поля в Life размером от -2147483648 до 2147483647 (по каждой из координат). Т.к. в языке С/С++ переполнение знакового целого не отслеживается и строго говоря это является undefined behaviour. Однако на практике, n-разрядные целые в C++ (да и во многих других языках) ведут себя как остатки по модулю 2^n: при вычислении "переполненного" значения разряды старше n-го просто отбрасываются. Т.е. при прибавлении единицы к 2147483647 (двоичное 0111 1111 1111 1111 1111 1111 1111 1111) число превращается в -2147483648 (двоичное 1000 0000 0000 0000 0000 0000 0000 0000), т.е. в терминах игры Life происходит закольцовка игрового поля по координатам.
Если убрать самостоятельную проверку и контроль памяти в коде, интересным следствием этого действия станет тот факт, что через 8 млрд. ходов, самый быстрый космический корабль Lightweight_spaceship (скорость - половина от световой), пройдя 4 млр. клеток - вернется в свое изначальное положение. Проверено! Версию Life v1.5.0.0 обновил, с учетом этой интересной особенности.
13/05/2019 Обновление версии: Life v1.7.0.0 - Игровое поле, пользовательские сообщения 1. Реализована закольцовка игрового поля по по X, Y координатам. 2. Реализован правильный механизм масштабирования на границах 3. Увеличен диапазон масштабирования до 1 млр. клеток на один пиксель, теперь всю вселенную можно уместить на экран и даже в несколько пикселей (удобно при масштабировании/поиске сильно отдаленных друг от друга объектов). 4. Добавлены пользовательские сообщения (о выходе за рамки игрового поля и т.д.) 5. Исправлены некритичные ошибки. 6. Репозиторий обновлен. В итоге: теперь программа представляется, как вполне законченная.
Life v1.9.0.0 - Увеличена производительность, исправил автоматический сброс всех параметров при создании нового шаблона. Выложил на свой сайт, теперь всегда актуальная версия здесь: https://bedvit.ru/life/
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Jack Famous, да решил немного потренироватся в JavaScript и HTML. Сайт больше как хранилище наработок. С народом поделится. Довести до ума руки не доходят