Тема : «Программирование графики в Турбо Паскале. Программа для решения
японских головоломок»
Содержание задания: Составить программу для решения японских головоло-мок. Программа должна уметь предложить пользователю головоломку на выбор (не менее 15), проверить правильность её решения; позволять созда-вать собственные рисунки для головоломок и запоминать их в файле.
Под японской головоломкой понимается японский кроссворд.
Как решить простейший японский кроссворд:
В японских головоломках, в отличие от других кроссвордов, зашифрованы не слова, а изображения. Задача - восстановить картинку по числам, которые проставлены слева от строк и над колонками. Числа показывают, сколько групп черных клеток находится в соответствующей строке или колонке и сколько слитных черных клеток содержит каждая группа. Например, набор чисел 4 и 4 означает, что в этом ряду есть две группы: первая - из четырех и вторая - из четырех черных клеток. Группы разделены как минимум одной пустой клеткой. Пустые клетки могут быть и по краям рядов. Необходимо определить размещение групп клеток.
Прикрепляю картинку с примером.
Дело в том, что я графику в паскале почти не знаю

Ну, я тут написал небольшой фрагмент, который сетку выводит и можно закрашивать клетки двумя цветами, но меня он не очень устраивает. Дело в том, что в этом фрагменте выводится сетка, в которой количество строк равно количеству столбцов, а это не всегда прмемлимо. И для каждого кроссворда (а у меня их должно быть как минимум 15) нужна будет своя сетка со своими цифрами.
Фрагмент следующий:
program japanese_crossword;
uses crt, graph;
const r=11;
var p: 0..1; a,b: array[0..r,0..r] of 0..1;
i,j,n,k1,k2,ss,x,y,gm,gd:integer; c:char;
begin
detectgraph(i,j); initgraph(i,j,'c:/bp/bgi');
begin
gm:=vgahi; setgraphmode(gm); setlinestyle(0,0,1); setcolor(4);
for i:=0 to r-1 do
begin
line(20+i*20,20,20+i*20,r*20);
line(20,20+i*20,r*20,20+i*20);
end;
x:=10; y:=10;
repeat
c:=readkey; if c=#0 then c:=readkey;
case c of
#72 : begin
setcolor(0); circle(x,y,2); y:=y-20; setcolor(15); circle(x,y,2);
end;
#80 : begin
setcolor(0); circle(x,y,2); y:=y+20; setcolor(15); circle(x,y,2);
end;
#75 : begin
setcolor(0); circle(x,y,2); x:=x-20; setcolor(15); circle(x,y,2);
end;
#77 : begin
setcolor(0); circle(x,y,2); x:=x+20; setcolor(15); circle(x,y,2);
end;
#13 : begin
floodfill(x,y,4); a[(x-5) div 10,(y-5) div 10]:=1;
b[(x-5) div 10,(y-5) div 10]:=1;
end;
#32 : begin
setfillstyle(1,5); bar(x-9,y-9,x+9,y+9);
a[(x-5) div 10,(y-5) div 10]:=0;
b[(x-5) div 10,(y-5) div 10]:=0;
setfillstyle(1,15);
end;
end; {case}
until c=#27;
setcolor(0); circle(x,y,2);
end;
end.
Надеюсь, что мое задание вас заинтересует. Помогите, чем сможете. Заранее благодарю.