Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 25.12.2011, 15:33   #1 (permalink)
konispat
Новичок
 
Регистрация: 25.12.2011
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Доработать программу в ABC

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

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

PHP код:
uses graphabccrt
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+kmod 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 graphabccrt
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+kmod 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<4then 
 begin 
 
if (c=clwhitethen 
 begin 
 c
:=clblack
 
setpencolor(c); 
 
Circle(x+25,y+2520); 
 
end 
 end

 if (
k>5then 
 begin 
 
if (c=clwhitethen 
 begin 
 c
:=clblack
 
SetBrushColor(c); 
 
Circle(x+25,y+2520); 
 
end 
 end

 
x:=x+50
 
end
 
y:=y+50
 
end 
end

очень надеюсь на помощь!
konispat вне форума   Ответить с цитированием

Старый 25.12.2011, 15:33
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Советую посмотреть эти ссылки, там похожие на вашу темы

Помогите доработать схему
Помогите доработать датчик движения
Сделайте программу

Старый 25.12.2011, 18:14   #2 (permalink)
fagot86
Новичок
 
Регистрация: 25.12.2011
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

можно попробовать так:
PHP код:
Uses graphabccrt;
Var 
x,y,c,n,k:integer;
    
rdmreal;
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+kmod 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.5then
                              begin
                                   c
:=clblack;
                                   
setpencolor(c);
                                   
Circle(x+25,y+2520);
                              
end;
                           if (
c=clwhite)and(rdm<0)and(rdm>-0.5then
                              begin
                                   c
:=clblack;
                                   
SetBrushColor(c);
                                   
Circle(x+25,y+2520);
                                   
SetBrushColor(clwhite);
                              
end;
                   
x:=x+50;
              
end;
          
y:=y+50;
    
end;
end
fagot86 вне форума   Ответить с цитированием
Старый 25.12.2011, 19:18   #3 (permalink)
konispat
Новичок
 
Регистрация: 25.12.2011
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

красота! только не как не пойму как кол-во шашек можно увеличить, спасибо)
konispat вне форума   Ответить с цитированием
Старый 25.12.2011, 19:25   #4 (permalink)
fagot86
Новичок
 
Регистрация: 25.12.2011
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от konispat Посмотреть сообщение
красота! только не как не пойму как кол-во шашек можно увеличить, спасибо)
Что значит увеличить? (конкретнее...)
fagot86 вне форума   Ответить с цитированием
Старый 25.12.2011, 19:52   #5 (permalink)
fagot86
Новичок
 
Регистрация: 25.12.2011
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Если ты хочешь варьировать кол-вом шашек,
то можно подбирать рандомные пределы:
PHP код:
if (c=clwhite)and([B]rdm>0[/B])and([B]rdm<0.6[/B]) then 
fagot86 вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 25.12.2011, 19:53   #6 (permalink)
konispat
Новичок
 
Регистрация: 25.12.2011
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

мало шашек на доске, их количество. хотя в этом нечего нет, середина игры так сказать)
konispat вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 11:22.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.