![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
![]() HELP! Нужно заполнить грид числами, НО чтоб все соседние ячейки были пустыми! И это естественно по рандому. Заполнение сделал и перебрал около сотни(!) вариантов условий, но всё равно желаемого результата не добился
![]() Последний раз редактировалось hsMapk, 17.04.2014 в 15:22. |
#2
|
|||
|
|||
![]() Не понятно что имеется ввиду под "вокруг заполненой ячейки ВСЕ ячейки были пустыми" - это говорит о том, что заполнена только одна ячейка?
Опишите задачу чуть подробнее. Мне кажется Вам помогут. |
#3
|
||||
|
||||
![]() имел ввиду что все соседние ячейки должны быть пустыми
Последний раз редактировалось Admin, 17.04.2014 в 19:45. |
#4
|
|||
|
|||
![]() Так?
Код:
procedure TForm1.Button1Click(Sender: TObject); var x,y, xi,yi: integer; begin x:=random(5); //размер грида Y:=random(5); for xi:=-1 to 1 do for yi:=-1 to 1 do if (x+xi>=0) and (y+yi>=0) then //Cначало очищаю поле 3х3 stringgrid1.Cells[x+xi,y+yi]:=''; stringgrid1.Cells[x,y]:=inttostr(10);// Потом вписываю какое-то число end; Если нужен вариант, что программа лазит по гриду и ищет свободное поле, то тут логически можно переделать код Последний раз редактировалось draginimp, 17.04.2014 в 16:20. |
#5
|
||||
|
||||
![]() грид задан уже(10х10).просто нужно заполнить его к примеру еденицами,но так что ни обна еденица не граничила с другой.чтоб единиц максимум было 10 и они располагались хаотично
Админ: Предупреждение! - Выделение цветом излишне. Последний раз редактировалось Admin, 17.04.2014 в 19:45. |
#6
|
|||
|
|||
![]() Код:
procedure TForm1.Button1Click(Sender: TObject); var x,y, xi,yi,i,p :integer; c: boolean; begin i:=0; repeat c:=false; P:=10; // Размер грида x:=random(p-1); Y:=random(p-1); for xi:=-1 to 1 do for yi:=-1 to 1 do if (x+xi>=0) and (y+yi>=0)and (x+xi<p) and (y+yi<p) then if stringgrid1.Cells[x+xi,y+yi]<>'' then c:=true; //проверяем пустое поле if c = false then stringgrid1.Cells[x,y]:='1';// если пустое вписываем 1 if c = false then inc(i);// считаю кол-во заполненных until (I=10); end; Надеюсь помог. |