Михаил Киселев писал(а):Если возникнут по ходу реализации вопросы здесь в личку или в VK лучше спрашивать?
Пиши тогда сюда, будет что-то типа конфы. BDK тоже сильный программист (Delphi), поэтому пусть будет общее обсуждение.
Подсвечивать только те поля, в которые компьютер пробил напрямую, то же и человек. Вскрытые другим путём - не подсвечивать. Тогда будет наглядно заметна эффективность ударов по отношению к общим открытым площадям.
С Delphi я начинал. А вообще на чем я только не программировал - Delphi, С, С++, PHP, GLSL, HLSL, С#, а так же другие. Когда-то давно еще на BASIC и Assembler. Так что соврал - начинал я конечно задолго до Delphi.
Для меня все эти языки программирования уже как китайцы, негры и европейцы вместе взятые - все на одно лицо. Я перестал улавливать различия.
Андрей, а нельзя ли весь исходный код написанной здесь exe программы как-нибудь мне переслать. А то делаю вставки этого кода в Лазарусе - выдается сплошные ошибки при компиляции, замучился с ними бороться.
Извиняюсь за предыдущий выложенный нерабочий пример. При сохранении умудрился дать одинаковые имена проекту и юниту, из-за чего Лазарус глюкнул при сохранении. Выкладываю заново созданный проект.
Button1 - окрашивает BItBtn1
Button2 - возвращает оригинальный вид
С насыщенностью красного цвета можно поиграться. Также есть возможность варьировать размер красного квадрата, но не универсально, т.к. он, похоже, привязывается к левой стороне кнопки, так что отцентрировать его будет головоломно. Мне кажется, я подобрал лучшие размеры и координаты.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Не получается что-то код интегрировать
Ругается на эту строку
Bmp:=TBitmap.Create;
говорит
gam7pas.pas(2903,17) Error: identifier idents no member "Create"
всё вроде включил, может дело в файлах с расширением lpi или lfm
Михаил Киселев, а ты не создавай динамически этот компонент, а найди на панели компонентов TBitmap, кинь его на форму и обращайся к нему по имени. Без Создания и Уничтожения.
Насчет Delphi - предостерегаю от использования строк типа string и динамических массивов. Подробности под спойлером:
► Показать
- они в Delphi сделаны с серьезными багами. Пока используешь пару строк или парочку небольших динамических массивов то баги не проявляются но когда пишешь большое приложение где идет активная работа с большим количеством строк и динамических массивом - вот тогда жопа. Начинаются неустранимые проблемы.
Я заменил строки типа string на строки типа PChar - нультерминированные строки как в C. А динамические массивы заменил на динамическое распределение памяти - то есть создаю переменную типа pointer или например pbytearray или любого другого подобного типа. Например так:
var myArray:pbytearray;
и затем делаю так:
new(myArray);
и затем везде где необходимо:
reallocmem(myArray,len) - где len это размер выделенной под массив памяти в байтах. Эту операцию можно делать сколько угодно раз, всякий раз когда нам нужно изменить длину массива. Но нужно учитывать что при этом содержимое массива теряется поэтому нужно предварительно его переписать а потом восстановить уже в массив измененного размера.
В конце нужно освободить память от этого массива:
reallocmem(myArray,0); myArray:=nil;
======
В общем такая замена позволяет полностью отказаться от динамических массивов Delphi и навсегда забыть о связанных с ними глюках.
Теперь всё собирается, но..
Если в наглую переименовать все Button_s в BitBtn_s похоже ничего не выйдет. Как бы Button_s на BitBtn_s заменить без особых грандиозных переделок?
Михаил Киселев, вижу один способ. Сначала вручную заменить все игровые кнопки на форме (64 + 64, координатные и вспомогательные можно не трогать, хотя выбитые из игры фигуры тоже можно закрашивать цветом) с сохранением их имён. А потом всё должно собраться. Понятно, что тип компонента от его имени не зависит. Тип компонента прописывается в модуле формы + в объявлении переменных формы.