Помощь - Поиск - Пользователи - Календарь
Полная версия: какуро
Форум «Всё о Паскале» > Pascal, Object Pascal > Написание игр
baronst
Кто-нибудь когда-нибудь делал реализацию игры какуро?
Если да, то не могли бы вы скинуть исходники.
Описание игры:

Сетка головоломки состоит из клеток черного и белого цвета. Белые клетки, идущие подряд по вертикали или по горизонтали, образуют блок. Цель игры - заполнить все белые клетки цифрами от 1 до 9 так, чтобы сумма цифр в блоке была равна числу указанному в черной клетке слева от горизонтального блока и сверху от вертикального. При этом цифры в пределах одного блока не должны повторяться.
Какуро может быть любого размера и любой формы, хотя обычно ячейки сетки располагают симметрично. Как правило, чем больше пустых ячеек в игре, тем труднее, однако это не всегда так, особенно если это хорошая и качественная головоломка.

буду очень благодарен за помощь.
sheka
Тоже хотел когда-то сделать, но не придумал как. Подскажите идею пожалуйста.
amega
мм я тож не знаю как делать, мб вмете делать..
давайте все сначала, нам нужно для начала 2 глобавльные беременные для ширены и высоты матрици,
создадим отдельный модуль для типов и тп....(будем в него пихать все поочереди)

unit UnitType;

interface

Var

max_X:integer; //Высота матрици
max_Y:integer; //Ширина матрици

implementation

end.



теперь нужно решить как представлять нашу матрицу, предлагаю создать матрицу записей следующего вида:

const
Bottom = 1;
right = 2;

Tdirection = byte;

TStyleCell = (inf, val);

TCells = record
inf_c:TStyleCell;
case cell :TStyleCell of
inf: (
direction:Tdirection;
value:integer;
);
val:(
value:integer;
);
end;



или у кого есть другие варианты?
sheka
amega , проблема в том, что поля все время разные.
а если так писать не зная чего хочешь, потом может получится такая ситуация, что "А нафиг я все это писал?!" lol.gif
amega
в каком смисле разные? ты имееш ввиду вот эти разные?
Нажмите для просмотра прикрепленного файла
,или нет?

Цитата
а если так писать не зная чего хочешь, потом может получится такая ситуация, что "А нафиг я все это писал?!"

вообщето я представляю примерно в голове как оно долно все быть..
да и зделав что-то неверное ты поймеш почему это неверно, и что нужно изменить.
для начала нужно реализовать то, с чем придется работать.
sheka
я имею ввиду, что поле головоломки у каждой головоломки разное.

Добавлено через 11 мин.
я имею ввиду, что поле головоломки у каждой головоломки разное.
Lapp
amega, sheka имел в виду это, наверное:
Цитата(baronst @ 20.11.2009 17:07) *
Какуро может быть любого размера и любой формы


Но разную форму можно сделать размещением в прямоугольной матрице черных клеток, не обязательно со значениями - значения только у тех, которые граничат с велыми снизу или справа. Так что двумерный массиы представляется осмысленным. Хотя не исключено, что могут быть и другие решения этого вопроса.

Я не вполне понимаю: ведь не всякая конфигурация может оказаться имеющей ответ - так? Значит, задача состоит в поиске такой, которая имеет? Типа как в судоку.. Да?
amega
и так по порядку..
Цитата
Какуро может быть любого размера и любой формы

для этого и создали глоб переменную, осталось тока создать

arr:array of array of TCells;

.....

max_X:=random;
max_Y:=random;
....
setLength(arr,max_Y,max_X);
....



ну вот мы и создали игровое поле, осталось указать какая клечка для чего служит и ее значение ну и ост прав..

теперь прокоментирую поля TCells: inf_c - служит для опредиления вида клетки, тоесть может принимать значения inf val, если мы укажим первое то получим клетку та которая с черточкой, а если второе то ту клетку де вводится значение. если мы в первом укажем дирекшен(направление) то мы получим информационную клутку с указаным направлением.

ps немножно подкеректировал запить добавил тстайлцелс для удобства
sheka
Я тоже думал это делать массивом, но потом подумал что это не рационально...Может еще какие-нибудь варианты есты?
amega
Цитата
но потом подумал что это не рационально

почему?
sheka
Цитата(amega @ 21.11.2009 18:49) *

почему?

Я не мог понять как входные данные должны были там обрабатываться, но кажется я уловил твою идею:
Два цикла: один меняет значения "игровых" клеток, а второй проверяет выполняются ли все условия в "информационных клетках". Но все равно, не будет ли это слишком долго? Т.к. вариантов реально много.
amega
хотелось бы услышать что-то от автора темы.... чот он думает по этому поводу?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.