Чтобы справиться со звёздочками, оказавшимися перед домиком, месяцем, тучками, немного порассуждаем.
Как мы поступали до сих пор? Выводили звезду прямо в загаданной точке, не озаботившись тем, какого цвета эта точка.
Теперь же мы:
сначала загадаем точку (для координат случайной точки заведём переменные а и b);
проверим, какого цвета эта точка на экране (для проверки цвета точки используется функция getPixel);
если эта точка чёрная (код чёрного цвета равен 0), то выведем на это место звёздочку;
в противном случае ничего делать не будем.
• Исходя из этого изменим программу:

Разбор
С помощью команд a:=random(640) и b:=random(300) загадываем два случайных числа а и b (абсцисса и ордината звёздочки).
Оператор if getPixel(a,b)=0 then Star(a,b,random(7)+9)буквально переводится если цвет в точке (а,b) равен 0, то выполнить процедуру Star.
Так как теперь в цикле должны выполняться не одна, а три команды, эти команды берут в так называемые операторные скобки begin и end.
Операторные скобки используются в тех случаях, когда группу операторов необходимо рассматривать как единое целое.
• Запустите программу:

Как видите, звёздочки на окнах и месяце пропали, но они продолжают «просвечивать» сквозь решётчатые крышу и стену дома. Почему так происходит, вы, наверное, уже догадались — иногда загаданная точка оказывается между линиями штриховки и проверка условия даёт положительный ответ. Действительно, приглядитесь к рисунку: