Форум: "Основная";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];
ВнизШахматное поле рекурсией Найти похожие ветки
← →
Аноним (2004-05-08 10:48) [0]Не могу сообразить как нарисовать шахматное поле с помощью рекурсии.
Подкажите, буду очень благодарен.
← →
Anatoly Podgoretsky © (2004-05-08 11:01) [1]Это наглядный случай когда рекунсия не требуется.
Рисуй лучше в цикле
← →
Аноним (2004-05-08 12:12) [2]Нужно имеено с ее помощью.
← →
Gero © (2004-05-08 12:44) [3]procedure Draw(B : Boolean);
var ...
begin
if B then
begin
Рисуем в цикле
end
else
Draw(True);
end;
...
Draw(False);
Еще скажи, что здесь рекурсия не используется ;)
← →
Тимохов © (2004-05-08 12:50) [4]
procedure draw(acol, arow: integer);
var
kcol, krow: integer;
begin
drawrect(.....); // с цветом сами разберетесь
if acol = 7 then
begin
kcol := 0;
krow := arow + 1;
end else
begin
kcol := acol+1;
krow := arow;
end;
if arow <= 7 then draw(kcol, krow);
end;
первый вызовdraw(0,0);
← →
Андрей Сенченко © (2004-05-08 12:55) [5]Представь себе шахматное поле не как 64 ( или больше ) квадратика, а например как 4 ( или больше ) рамки из этих квадратиков. С такой точки зрения рекурсию организовать можно ...
Основная процедура рисует рамку из 4 квадратиков и увеличивает шаг ( количество квадратиков на стороне ), затем вызвает сама себя и так до опупения.
Чем не рекурсия ?
← →
KilkennyCat © (2004-05-08 12:59) [6]
> Gero © (08.05.04 12:44) [3]
Да, так можно мноооого нарисовать...
Может, лучше так:var
y : byte;
implementation
....
y := 1;
.....
procedure Shashki();
var x : byte;
procedure DrawLine(x : byte);
var ...
begin
рисуем клетку с координатой x,y
inc(x);
repeat
DrawLine(x : byte);
until x = 9;
end;
begin
inc(y);
x := 1;
repeat
DrawLine(x : byte);
until y = 9;
end;
вложенная рекурсия, извиняюсь... :)
← →
KilkennyCat © (2004-05-08 13:03) [7]а, ччерт... ошибку сделал.
var
y : byte;
implementation
....
y := 1;
.....
procedure Shashki();
var x : byte;
procedure DrawLine(x : byte);
var ...
begin
рисуем клетку с координатой x,y
inc(x);
repeat
DrawLine(x : byte);
until x = 9;
end;
begin
inc(y);
x := 1;
DrawLine(x : byte);
repeat
Shashki();
until y = 9;
end;
Вот теперь рекурсивно до ужаса...
← →
Тимохов © (2004-05-08 13:05) [8]
> Вот теперь рекурсивно до ужаса...
конечно до ужаса - просто вечная реакурсия.
← →
Gero © (2004-05-08 13:15) [9]Я вот не понимаю, зачем на использование рекурсии задавать задачи, в которых она не нужна?
Бред какой-то.
← →
KilkennyCat © (2004-05-08 13:26) [10]Тимохов © (08.05.04 13:05) [8]
гмм... согласен :) но все равно красиво, да и вечность отменить не сложно :)
← →
KilkennyCat © (2004-05-08 13:36) [11]
var
y : byte;
implementation
....
y := 0;
.....
procedure Shashki;
var x : byte;
procedure DrawLine;
begin
рисуем клетку с координатой x,y
inc(x);
if x <> 9 then DrawLine;
end;
begin
inc(y);
x := 1;
DrawLine;
if y <> 9 then Shashki;
end;
проверено. невечно . двойная рекурсия. кто предложит тройную? :)
← →
Тимохов © (2004-05-08 13:51) [12]
> проверено. невечно.
вы бы еще проверили какую ерунду это все нарисует.
← →
KilkennyCat © (2004-05-08 13:59) [13]Тимохов © (08.05.04 13:51) [12]
А Вы все буквально воспринимаете? Или не в состоянии самостоятельно трансформировать [1,1]...[8,8] в клетки с четырьмя углами? а также выбор белый-черный?
← →
Тимохов © (2004-05-08 14:02) [14]
> KilkennyCat © (08.05.04 13:59) [13]
я не умею играть в шахматы на поле 8 на 9.
← →
KilkennyCat © (2004-05-08 14:09) [15]Тимохов © (08.05.04 14:02) [14]
ну и зря. очень увлекательно...
Ну ошибся я на 1... :)) Зато все равно круто!
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.05 c