Генерация и решение кроссвордов "Судоку"

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование




решении появится надпись "Попробуйте еще" (рис.15.).

Рис.15. Не правильное решение судоку

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

Рис.16. Изменение размера шрифта

Для того, чтобы сохранить игры, нужно зайти в меню Игра>запомнить (рис.17).

Рис.17. Сохранение игры

Открыть ранее сохраненную игру можно, если зайти в меню Игра>открыть (рис.18).

Рис.18. Открытие ранее сохраненной игры

Информация об авторе можно узнать в меню Помощь> Об авторе (рис.19.).

Рис.19. Информация об авторе

Правила игры можно узнать в меню Помощь> Об игре (рис.20.).

Рис.20. Правила игры

Для того, чтобы выйти из игры нужно зайти в меню Игра> Выход (рис.21.).

Рис.21.Выход из игры

II. Реализация программного продукта

Общая схема форм

Компоненты, размещенные на форме Form1 (рис.22.).

Рис.22. Компоненты, расположенные на Form1

) Button1 - кнопка "Генерация" (для генерирования судоку);

) Button2 - кнопка "Проверка" (для проверки решения);

3) Edit1 - для отображения выбранного уровня сложности;

) Image1 - для отображения картинки (дизайн);

) Label1 - отображение надписи "Вы выбрали уровень сложности";

) Label2 -вывод результата проверки (или "Молодец" если правильно, или "Попробуй еще" если не правильно);

7) MainMenu1 - для меню;

8) OpenDialog1 - открытие ранее сохраненной игры;

)Panel1 -панель, на которой размещаются динамически создаваемые Edit;

) SaveDialog1 - для сохранения программы.

Компоненты, размещенные на форме AboutBox (рис.23.).

Рис.23. Компонент, расположенный на AboutBox

) OKButton - кнопка для выхода из AboutBox;

) Panel1 - панель, на которой размещена информация об авторе.

Компоненты, размещенные на форме AboutBox1 (рис.24.).

Рис.24. Компоненты, расположенные на AboutBox1

1) OKButton - кнопка для выхода из AboutBox1;

)Panel1 - панель, на которой размещены правила игры.

Описание алгоритма

Цифровая головоломка судоку 99 состоит из 81 клеток, которые делятся на 9 блоков 33. В данной программе функции клеток будут выполнять Edit.

Для этого глобально опишем массив из Edit :

: array [1..81] of Tedit; //массив из Edit9o:string[81]; //строка, в которой хранятся ответы на судоку

filename:string; //имя файла, в котором хранятся судоку

ansfilename:string; // имя файла, в котором хранятся ответы на судоку из файла filename,g:TextFile; //текстовые файлы, в которых судоку:char;//символ из текстового файла

Еdit создаются динамически на панеле Panel1. Процедура Tform1.Ed_clean удаляет и заново создает Рanel1:

TForm1.Ed_clean;:Tpanel; // панель

begin.Free; // очищаем панель:=Tpanel.Create(self); // создаем "независимую панель".Parent:=form1;.Width:=521; // задаем ширину.Height:=353; // задаем длину.Name:='Panel1';.Caption:='';.Top:=136; // задаем вершину.Left:=24; // отступ слева;

Процедура TForm1.NewGame создает Edit на панели:

TForm1.NewGame;,j,n,l,k:byte;

Ed_clean; // вызываем процедуру Tform1.Ed_clean, которая создает панель

n:=1; // счетчикi:=1 to 11 do // i - количество строк j:=1 to 11 do // j - количество столбцов

begin((i8))then[n]:=Tedit.Create(self); //создаем Edit9[n].Parent:=Panel1; // помещаем его на панель

c9[n].Width:=25; // ширина Edit[n].Height:=25; // высота Edit[n].Top:=i*25+5; // Вершина Edit[n].Left:=j*25+5; // Отступ Tdit[n].Text:=''; // Edit пустой9[n].OnKeyPress:=myKP9; // в них можно только вводить от "0" до "9"

n:=n+1; // прибавляем счетчик; end;;

Для того, чтобы ограничить ввод символов, существует процедура Tform1.myKP9:

Tform1.myKP9(Sender: TObject; var Key: Char); not (Key in ['0'..'9']) then Key:='0'; // если ввели цифры, отличные от множества 0..9, значение присваиваем "0"

if ((Sender as Tedit).Tag)<>1 then

(Sender as Tedit).Text:=Key; // присваиваем значению нажатой кнопки:=#0;;

Начать новую игру инициирует процедура TForm1.Button1Click, которая запускается щелчком на кнопке Генерация.

TForm1.Button1Click(Sender: TObject);:byte;:string;; // запускается генератор случайных чисел

NewGame; // вызывается процедура TForm1.NewGame, которая создает Edit на панели

buf:=IntToStr(random(9)+1); // случайное число от 1 до 10

If Edit1.Text='' then Edit1.Text:='легкий'; // по умолчанию уровень сложности легкий.

if Edit1.Text='легкий' then Если уровень сложности легкий

begin:='eas/'+buf+'.txt'; // переменной присваиваем путь к файлу с судоку

ansfilename:='eas/ans/'+buf+'.txt'; // переменной присваиваем путь к файлу с ответами к судоку

end;Edit1.Text='средний' then:='sred/'+buf+'.txt'; // переменной присваиваем путь к файлу с судоку

ansfilename:='sred/ans/'+buf+'.txt'; // переменной присваиваем путь к файлу с ответами к судоку

end;Edit1.Text='сложный' then:='hard/'+buf+'.txt'; // переменной присваиваем путь к файлу с судоку

ansfilename:='hard/ans/'+buf+'.txt'; // переменной присваиваем путь к файлу с ответами к судоку

end;(f,filename); // связываем(f); // открываем файл:=1; not EOF(f) do // пока не конец файла

begin(f,t); // считываем их файла f t

if (t#10) then // если не Enter и не признак конца строки

c9[i].Text:=t; // присваиваем элементу массива (Edit) значение t

if t<>'0' then c9[i].Tag:=1c9[i].Tag:=0;:=i+1;;;(f);i:=1 to 81 doc9[i].Text='0' then[i].Text:='';(g,ansfilename);(g);o:= '';not EOF(g) do(g,buf);o:=c9o+buf;

end;(g);;

Проверку решения инициирует процедура TForm1.Button2Click, которая запускается щелчком на кнопке Проверка.

TForm1.Button2Click(Sender: TObject);:boolean;:byte;:=true;i:=1 to 81 do c9[i].Text<>c9o[i] then // сравнивает значение Edit со значением ответов

begin:=false;[i].Text:=''; // если ОК , тогда Edit =" ";ok then.caption:='Молодец'.caption:='Попробуйте ещё';

end;

Заключение

головоломка судоку алгоритм интерфейс

В ходе работы удалось реализовать все поставленные задачи и прийти к