Показать сообщение отдельно
  #8  
Старый 03.05.2014, 01:43
Аватар для hsMapk
hsMapk hsMapk вне форума
Новичок
 
Регистрация: 17.04.2014
Сообщения: 60
Версия Delphi: Delphi 7
Репутация: 5
По умолчанию

либо здесь что то не так(заполнение грида матрицей)
Код:
  for k:=1 to 10 do
    for kk:=1 to 10 do
      begin
        if M[k,kk]<>'' then
           M[k,kk]:='';
      end;

  RANDOMIZE;
  i:=1;

   while (i<18) do
   begin

     k:=Random(10) +1;
     kk:=Random(10)+1;
       if M[k,kk]='' then
             begin
               i:=i+1;
               if ((k>1) and (k<=9)) and ((kk>1) and (kk<=9)) then
               begin
                 if (M[k-1,kk-1]='') and
                    (M[k+1,kk+1]='') and
                    (M[k-1,kk]='')   and
                    (M[k,kk-1]='')   and
                    (M[k+1,kk]='')   and
                    (M[k,kk+1]='')   and
                    (M[k-1,kk+1]='') and
                    (M[k+1,kk-1]='') then
                    begin
                      M[k,kk]:=IntToStr(Random(5));

                    end;
               end;



               if (k=1) and (kk=1) then
               begin
                 if (M[k,kk+1]='') and
                    (M[k+1,kk+1]='') and
                    (M[k+1,kk]='') then
                    begin
                      M[k,kk]:=IntToStr(Random(5));


                    end;
               end;

               if (k=1) and (kk=10) then
               begin
                 if (M[k+1,kk]='') and
                    (M[k+1,kk-1]='') and
                    (M[k-1,kk]='') then
                    begin
                      M[k,kk]:=IntToStr(Random(5));

                    end;
               end;

               if (k=10) and (k=1) then
               begin
                 if (M[k,kk+1]='') and
                    (M[k-1,kk+1]='') and
                    (M[k-1,kk]='') then
                    begin
                      M[k,kk]:=IntToStr(Random(5));

                    end;
               end;

               if (k=10) and (kk=10) then
               begin
                 if (M[k,kk-1]='') and
                    (M[k-1,kk-1]='') and
                    (M[k-1,kk]='') then
                    begin
                      M[k,kk]:=IntToStr(Random(5));

                    end;
               end;


               if (k=1) and (kk<10) and (kk>1) then
               begin
                 if (M[k,kk-1]='') and
                    (M[k,kk+1]='') and
                    (M[k+1,kk]='') and
                    (M[k+1,kk-1]='') and
                    (M[k+1,kk+1]='') then
                    begin
                      M[k,kk]:=inttostr(Random(5));

                    end;
               end;

               if (k=10) and (kk<10) and (kk>10) then
               begin
                 if (M[k-1,kk-1]='') and
                    (M[k-1,kk]='') and
                    (M[k-1,kk+1]='') and
                    (M[k,kk-1]='') and
                    (M[k,kk+1]='') then
                    begin
                      M[k,kk]:=inttostr(Random(5));

                    end;
               end;

               if (kk=1) then
               begin
                 if (M[k-1,kk]='') and
                    (M[k+1,kk]='') and
                    (M[k+1,kk+1]='') and
                    (M[k,kk+1]='') and
                    (M[k-1,kk+1]='') then
                    begin
                      M[k,kk]:=inttostr(Random(5));

                    end;
               end;

               if(kk=10) then
               begin
                 if (M[k-1,kk]='') and
                    (M[k+1,kk]='') and
                    (M[k,kk-1]='') and
                    (M[k-1,kk-1]='') and
                    (M[k+1,kk-1]='') then
                    begin
                      M[k,kk]:=inttostr(Random(5));
                    end;


             end;
       end;
Ответить с цитированием