Помощь - Поиск - Пользователи - Календарь
Полная версия: Японские кроссворды (помогите пожалуйста!)
Форум «Всё о Паскале» > Pascal, Object Pascal > Написание игр
Alex Burn
Здравствуйте! Я никогда не был ни на каких форумах(поэтому не судите пожалуйста строго).

Меня сюда привела моя курсовая по программированию: mega_chok.gif

Тема работы: «Программирование графики в Турбо Паскале. Программа для решения японских головоломок(читай "кроссвордов")».

Содержание задания: Составить программу для решения японских кроссвордов. Программа должна уметь предложить пользователю кроссворд на выбор (не менее 15), проверить правильность его решения; позволять создавать собственные рисунки для кроссвордов и запоминать их в файле.

Мне еще не давали лекций по графике, а программу нужно предоставить довольно скоро.

Помогите чем сможете.

Заранее всем благодарен! rolleyes.gif
Артемий
Расскажи, что собой представляют япон. кроссворды? smile.gif
Alex Burn
Цитата(Артемий2 @ 18.03.2007 17:21) *

Расскажи, что собой представляют япон. кроссворды? smile.gif


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

В программе уже должно быть "встроено" 15 разных вариантов кроссвордов? Или что значит "не менее 15"?
Как пользователь заполняет кроссворд?

Цитата
позволять создавать собственные рисунки для кроссвордов и запоминать их в файле.

т.е. она сама должна уметь генерировать кроссворды?
Alex Burn
Ну вот ещё:

Входными данными для головоломки являются описания строк и столбиков этого прямоугольника, заданные в виде последовательностей длин зарисованных блоков. Например, если строка или столбик описан единственным числом 3, это означает, что в этой строке (или столбике) зарисованы в точности три клеточки, которые идут подряд (единым блоком ); если строка или столбик заданы последовательностью 2 5 3, это означает, что в этой строке или столбике есть последовательно две подряд, пять подряд и три подряд зарисованных клеточки, причем блоки длиной 2, 5 и 3 идут именно в таком порядке (считая слева направо для строк или сверху вниз для столбиков), а между разными блоками есть по меньшей мере одна незарисованная клеточка.

Вы не подскажете как в сообщение вставить картинку?
Артемий
Значит так - ты хоть что-то начни писать,а когда трудности:спрашивай!

З.Ы. Прикрепить файл в "Ответить".
Alex Burn
Цитата(Bokul @ 18.03.2007 17:59) *

В программе уже должно быть "встроено" 15 разных вариантов кроссвордов? Или что значит "не менее 15"?
Как пользователь заполняет кроссворд?


т.е. она сама должна уметь генерировать кроссворды?



Программа НЕ должна уметь решать кроссворды. Она только предлагает (например, через меню) не менее 15 разных кроссвордов. Пользователь выбирает кроссворд и перед ним по идее должно быть пустое поле с клетками и цифрами сверху и слева.

А решать он должен, я думаю, так:
передвигать по клеткам поля курсор и если он считает, что ту или иную клетку нужно закрасить, то он нажимает клавишу (например, Enter) и клетка заливается. А если пользователь уверен, что эту клетку заливать не нужно то он нажимает какую-нибудь другую клавишу и там появляется крестик.
(Кроссворд черно-белый)

Добавлено через 11 мин.
[quote name='Артемий2' date='18.03.2007 18:12' post='95016']
Значит так - ты хоть что-то начни писать,а когда трудности:спрашивай!

Тысяча извинений! Просто графику мне еще не преподавали
Артемий
Тогда дай хоть картинку!
Тёмный Эльф
Цитата
Мне еще не давали лекций по графике


вообще графику в паскале не знаешь??
изучай. http://rsc-team.ru/cgi-bin/index.pl?rzd=2&...=lection&ind=21 книжки читай.
затем прочитай про программирование мыши в Паскале.
ну, а кроссворд я думаю можно представить как массив.

интересная у тебя курсовая, успехов.
Alex Burn
Извините, я пришел сюда совсем не подготовленный. Выне подскажете как тему закрыть?

А вот картинка

Нажмите для просмотра прикрепленного файла

Добавлено через 3 мин.
Цитата(Тёмный Эльф @ 18.03.2007 19:53) *

вообще графику в паскале не знаешь??
изучай. http://rsc-team.ru/cgi-bin/index.pl?rzd=2&...=lection&ind=21 книжки читай.
затем прочитай про программирование мыши в Паскале.
ну, а кроссворд я думаю можно представить как массив.

интересная у тебя курсовая, успехов.


Спасибо за участие и за поддержку!

give_rose.gif
Alex Burn
Здравствуйте еще раз! smile.gif Не могли бы вы просмотреть следующий фрагмент:



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.




Выводит сеточку, закрашивает клеточки. Не могли бы вы подсказать как в графическом режиме сделать циферки как на рисунке, который я раньше выкладывал?

Да, и еще. Подскажите пожалуйста как вывести сеточку, в которой число строк и столбцов не обязательно совпадают (в отличие от этого фрагмента).

P.S. Лекций по графике так и не было, так что учусь по книжкам. unsure.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.