• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Доработать программу в ABC

konispat

Ученик
Регистрация
25 Дек 2011
Сообщения
3
Реакции
0
Баллы
0
Доработать программу в ABC

задание: изобразить шахматную доску и случайным образом расставленные на ней шашки.

есть часть программы которая рисует доску:

PHP:
uses graphabc, crt; 
Var x,y,c,n,k,t:integer; 
begin 
setwindowsize (500,500); 
  
rectangle(49,49,451,451); 
y:=50; 
for k:=1 to 8 do 
 begin x:=50; 
  
 for n:=1 to 8 do 
 begin 
 if (n+k) mod 2=0 then 
 c:=clwhite else c:=clblack; 
 setpencolor(c); 
 rectangle(x,y,x+50,y+50); 
 FloodFill(x+1,y+1,c); 
  
 x:=x+50; 
 end; 
 y:=y+50; 
 end  
end.

как сделать так чтобы шашки каждый раз стояли в разных местах? сколько голову не ломал не додумался, единственное что смог просто расставить шашки в начальном их положении:

PHP:
uses graphabc, crt; 
Var x,y,c,n,k,t:integer; 
begin 
setwindowsize (500,500); 
rectangle(49,49,451,451); 
y:=50; 
for k:=1 to 8 do 
 begin x:=50; 
 for n:=1 to 8 do 
 begin 
 if (n+k) mod 2=0 then 
 c:=clwhite else c:=clblack; 
 setpencolor(c); 
 rectangle(x,y,x+50,y+50); 
 FloodFill(x+1,y+1,c); 
 if (k<4) then 
 begin 
 if (c=clwhite) then 
 begin 
 c:=clblack; 
 setpencolor(c); 
 Circle(x+25,y+25, 20); 
 end 
 end; 
 if (k>5) then 
 begin 
 if (c=clwhite) then 
 begin 
 c:=clblack; 
 SetBrushColor(c); 
 Circle(x+25,y+25, 20); 
 end 
 end; 
 x:=x+50; 
 end; 
 y:=y+50; 
 end 
end.

очень надеюсь на помощь!
 
можно попробовать так:
PHP:
Uses graphabc, crt;
Var x,y,c,n,k:integer;
    rdm: real;
begin
setwindowsize (500,500);
rectangle(49,49,451,451);
y:=50;
for k:=1 to 8 do
    begin x:=50;
          for n:=1 to 8 do
              begin
                   if (n+k) mod 2=0 then
                      c:=clwhite
                   else c:=clblack;
                   setpencolor(c);
                   rectangle(x,y,x+50,y+50);
                   FloodFill(x+1,y+1,c);
                   randomize;
                   rdm:=sin(random(360));
                   
                           if (c=clwhite)and(rdm>0)and(rdm<0.5) then
                              begin
                                   c:=clblack;
                                   setpencolor(c);
                                   Circle(x+25,y+25, 20);
                              end;
                           if (c=clwhite)and(rdm<0)and(rdm>-0.5) then
                              begin
                                   c:=clblack;
                                   SetBrushColor(c);
                                   Circle(x+25,y+25, 20);
                                   SetBrushColor(clwhite);
                              end;
                   x:=x+50;
              end;
          y:=y+50;
    end;
end.
 
красота! только не как не пойму как кол-во шашек можно увеличить, спасибо)
 
Если ты хочешь варьировать кол-вом шашек,
то можно подбирать рандомные пределы:
PHP:
if (c=clwhite)and([B]rdm>0[/B])and([B]rdm<0.6[/B]) then
 
мало шашек на доске, их количество. хотя в этом нечего нет, середина игры так сказать)
 
Назад
Сверху