unit igra;
{Выполнил: Усик Максим
Группа 13411.
Задача: Имеется трое весов, с расположенными на них фигурами(круг, квадрат, пятигранник, шестигранник),
причем фигуры расположены так, что все весы находятся в положении равновесия. Необходимо найти массы фигур,
зная, что одна из них весит 1. Массы фигур разные }
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, JPEG, Menus, Buttons, StdCTrls, shellApi;
type
TForm1 = class(TForm)
Image1: TImage;
SpeedButton1: TSpeedButton;
Image2: TImage;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
SpeedButton4: TSpeedButton;
SpeedButton5: TSpeedButton;
SpeedButton6: TSpeedButton;
N11: TMenuItem;
Label1: TLabel;
Timer1: TTimer;
Label2: TLabel;
Label3: TLabel;
procedure FormCreate(Sender: TObject); //инициализация объектов формы
procedure newKeyPress(Sender: TObject; var Key: Char); //проверка значений
procedure Test(TimePerem: Integer); //процедура оценки правильнойсти решения
procedure newChange(Sender: TObject); //обработка вводимых значений
procedure SpeedButton6Click(Sender: TObject); //Выход
procedure SpeedButton1Click(Sender: TObject); //играть
procedure SpeedButton2Click(Sender: TObject); //сохранить
procedure SpeedButton3Click(Sender: TObject); //загрузить
procedure SpeedButton4Click(Sender: TObject); //очистить
procedure SpeedButton5Click(Sender: TObject); //подсказка
procedure N3Click(Sender: TObject); //авторешение
procedure N9Click(Sender: TObject); //вызов справки
procedure N10Click(Sender: TObject); //о программе
procedure Timer1Timer(Sender: TObject); //таймер
private
MasPerem:array [1..100] of string; //массив временных переменных для сохранения
NewEdit: array [1..10] of Tedit; //массив эдитов
Tops: array [1..10] of integer; //массив коолрдинат
Lefts: array [1..10] of integer;
public
mytime:integer; //переменная для таймера
TimePerem:integer; //переменная для номера игры
end;
var
Form1: TForm1;
implementation
uses videorolik, Avtoreshenie, about; //подключенные юниты
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
|
i:integer;
begin
Image1.Picture.LoadFromFile('Picture\fon.jpg'); //загрузка фона
Image1.SendToBack; //отображение объектов
tops[1]:=130; //координаты будующих эдитов
tops[2]:=130;
tops[3]:=130;
tops[4]:=325;
tops[5]:=325;
tops[6]:=325;
tops[7]:=520;
tops[8]:=520;
tops[9]:=520;
tops[10]:=520;
Lefts[1]:=25;
Lefts[2]:=65;
Lefts[3]:=325;
Lefts[4]:=25;
Lefts[5]:=70;
Lefts[6]:=325;
Lefts[7]:=25;
Lefts[8]:=65;
Lefts[9]:=305;
Lefts[10]:=340;
for i:=1 to 10 do //цикл создания эдитов
begin
NewEdit[i]:=TEdit.Create(form1); //тип и где будут расположены
newEdit[i].Parent:=form1;
newEdit[i].left:=lefts[i]; //передача координат
newEdit[i].Top:=tops[i];
newedit[i].Height:=25; //размер
newedit[i].Width:=25;
newedit[i].Visible:=false; //видимость
newEdit[i].Tag:=i; //тэг
end;
end;
procedure TForm1.SpeedButton6Click(Sender: TObject);
begin
Close; //выйти
end;
procedure TForm1.newKeyPress(Sender: TObject; var Key: Char);
Begin
case key of
'0'..'9', #8:; //если бэкспейс или цифры то ввести
#13: //обработка энтера
case (Sender as TEdit).Tag of
1:
newEdit[2].SetFocus; //перемещение между ячейками
2:
newEdit[3].SetFocus;
3:
newEdit[4].SetFocus;
4:
newEdit[5].SetFocus;
5:
newEdit[6].SetFocus;
6:
newEdit[7].SetFocus;
7:
newEdit[8].SetFocus;
8:
newEdit[9].SetFocus;
9:
newEdit[10].SetFocus;
end;
else
key:=#0; //ничего не вводить
end;
End;
Procedure TForm1.Test(TimePerem: Integer);
var
x1,x2,x3,x4,i:integer; //i-счетчик. х-временная переменная
begin
case TimePerem of //в зависимости от того какая игра загружена
0:
begin
x1:=strtoint(NewEdit[1].text); //присваиваем значения фигур. круг
x2:=strtoint(NewEdit[3].text); //квадрат
x3:=strtoint(NewEdit[2].text); //пятигранник
x4:=strtoint(NewEdit[5].text); //шестигранник
if (x1+x3=x2) and (x1+x4=x3) and (x4+x3=x1+x2) //проверка на правильность решения
and ((x1=1) or (x2=1) or (x3=1) or (x4=1)) then
begin
timer1.Enabled:=false; //остановить таймер
Label1.Caption:='Поздравляем'; //в лабел вывести сообщение
form2.Show; //показать бонусный видеоролик
form1.Visible:=false; //спрятать 1 форму
end
else
Label1.Caption:='Головоломка решена неверно'; //вывести сообщение что головоломка решена неверно
|
end;
1:
begin
x1:=strtoint(NewEdit[1].text);
x2:=strtoint(NewEdit[4].text);
x3:=strtoint(NewEdit[2].text);
x4:=strtoint(NewEdit[3].text);
if (x1+x3=x4) and (x2+x3=x1) and (x4+x3=x1+x2)
and ((x1=1) or (x2=1) or (x3=1) or (x4=1)) then
begin
timer1.Enabled:=false;
Label1.Caption:='Поздравляем';
form2.Show;
form1.Visible:=false;
end
else
Label1.Caption:='Головоломка решена неверно';
end;
2:
begin
x1:=strtoint(NewEdit[3].text);
x2:=strtoint(NewEdit[1].text);
x3:=strtoint(NewEdit[2].text);
x4:=strtoint(NewEdit[6].text);
if (x2+x3=x1) and (x1+x2=x4) and (x1+x3=x4+x2) and
((x1=1) or (x2=1) or (x3=1) or (x4=1)) then
begin
timer1.Enabled:=false;
Label1.Caption:='Поздравляем';
form2.Show;
form1.Visible:=false;
end
else
Label1.Caption:='Головоломка решена неверно';
end;
3:
begin
x1:=strtoint(NewEdit[1].text);
x2:=strtoint(NewEdit[5].text);
x3:=strtoint(NewEdit[3].text);
x4:=strtoint(NewEdit[2].text);
if (x1+x4=x3) and (x1+x2=x4) and (x1+x3=x4+x2) and
((x1=1) or (x2=1) or (x3=1) or (x4=1)) then
begin
timer1.Enabled:=false;
Label1.Caption:='Поздравляем';
form2.Show;
form1.Visible:=false;
end
else
Label1.Caption:='Головоломка решена неверно';
end;
4:
begin
x1:=strtoint(NewEdit[6].text);
x2:=strtoint(NewEdit[3].text);
x3:=strtoint(NewEdit[2].text);
x4:=strtoint(NewEdit[1].text);
if (x4+x3=x2) and (x2+x4=x1) and (x4+x1=x3+x2) and
((x1=1) or (x2=1) or (x3=1) or (x4=1)) then
begin
timer1.Enabled:=false;
Label1.Caption:='Поздравляем';
form2.Show;
form1.Visible:=false;
end
else
Label1.Caption:='Головоломка решена неверно';
end;
5:
begin
x1:=strtoint(NewEdit[1].text);
x2:=strtoint(NewEdit[5].text);
x3:=strtoint(NewEdit[3].text);
x4:=strtoint(NewEdit[2].text);
if (x1+x4=x3) and (x2+x4=x1) and (x4+x3=x1+x2) and
((x1=1) or (x2=1) or (x3=1) or (x4=1)) then
begin
timer1.Enabled:=false;
Label1.Caption:='Поздравляем';
form2.Show;
form1.Visible:=false;
end
else
Label1.Caption:='Головоломка решена неверно';
end;
6:
begin
x1:=strtoint(NewEdit[6].text);
x2:=strtoint(NewEdit[1].text);
x3:=strtoint(NewEdit[2].text);
x4:=strtoint(NewEdit[3].text);
if (x2+x3=x4) and (x2+x4=x1) and (x4+x3=x1+x2) and
((x1=1) or (x2=1) or (x3=1) or (x4=1)) then
begin
timer1.Enabled:=false;
Label1.Caption:='Поздравляем';
form2.Show;
form1.Visible:=false;
end
else
Label1.Caption:='Головоломка решена неверно';
end;
end;
end;
procedure TForm1.newChange(Sender: TObject);
var
i:integer; //счетчик
|
filled:boolean; //тип для определения заполненности эдитов
Begin
case TimePerem of //в зависимости от того какая игра запущена
0:
begin
NewEdit[1].Font.color:=ClRed; //назначение цвета шрифта для ячеек
NewEdit[2].Font.Color:=ClGreen;
NewEdit[3].Font.Color:=ClBlue;
NewEdit[4].Font.Color:=ClRed;
NewEdit[5].Font.Color:=ClPurple;
NewEdit[6].Font.Color:=ClGreen;
NewEdit[7].Font.Color:=ClPurple;
NewEdit[8].Font.Color:=ClGreen;
NewEdit[9].Font.Color:=ClRed;
NewEdit[10].Font.Color:=ClBlue;
case (Sender as Tedit).Tag of //в зависимости от того в какой ячейке находимся организуется связь между ними
1:
begin
NewEdit[4].Text:=NewEdit[1].Text; //установка связи
NewEdit[9].Text:=NewEdit[1].Text;
end;
2:
begin
NewEdit[6].Text:=NewEdit[2].Text;
NewEdit[8].Text:=NewEdit[2].Text;
end;
3:
NewEdit[10].Text:=NewEdit[3].Text;
4:
begin
NewEdit[1].Text:=NewEdit[4].Text;
NewEdit[9].Text:=NewEdit[4].Text;
end;
5:
NewEdit[7].Text:=NewEdit[5].Text;
6:
begin
NewEdit[2].Text:=NewEdit[6].Text;
NewEdit[8].Text:=NewEdit[6].Text;
end;
7:
NewEdit[5].Text:=NewEdit[7].Text;
8:
begin
NewEdit[2].Text:=NewEdit[8].Text;
NewEdit[6].Text:=NewEdit[8].Text;
End;
9:
begin
NewEdit[4].Text:=NewEdit[9].Text;
NewEdit[1].Text:=NewEdit[9].Text;
end;
10:
NewEdit[3].Text:=NewEdit[10].Text;
end;
end;
1:
begin
NewEdit[1].Font.color:=ClRed;
NewEdit[2].Font.Color:=ClGreen;
NewEdit[3].Font.Color:=ClPurple;
NewEdit[4].Font.Color:=ClBlue;
NewEdit[5].Font.Color:=ClGreen;
NewEdit[6].Font.Color:=ClRed;
NewEdit[7].Font.Color:=ClPurple;
NewEdit[8].Font.Color:=ClGreen;
NewEdit[9].Font.Color:=ClRed;
NewEdit[10].Font.Color:=ClBlue;
case (Sender as Tedit).Tag of
1:
begin
NewEdit[6].Text:=NewEdit[1].Text;
NewEdit[9].Text:=NewEdit[1].Text;
end;
2:
begin
NewEdit[5].Text:=NewEdit[2].Text;
NewEdit[8].Text:=NewEdit[2].Text;
end;
3:
NewEdit[7].Text:=NewEdit[3].Text;
4:
NewEdit[10].Text:=NewEdit[4].Text;
5:
Begin
NewEdit[2].Text:=NewEdit[5].Text;
NewEdit[8].Text:=NewEdit[5].Text;
end;
6:
begin
NewEdit[1].Text:=NewEdit[6].Text;
NewEdit[9].Text:=NewEdit[6].Text;
end;
7:
NewEdit[3].Text:=NewEdit[7].Text;
8:
begin
NewEdit[2].Text:=NewEdit[8].Text;
NewEdit[5].Text:=NewEdit[8].Text;
End;
9:
begin
NewEdit[6].Text:=NewEdit[9].Text;
NewEdit[1].Text:=NewEdit[9].Text;
end;
10:
NewEdit[4].Text:=NewEdit[10].Text;
end;
end;
2:
begin
NewEdit[1].Font.color:=ClBlue;
NewEdit[2].Font.Color:=ClGreen;
NewEdit[3].Font.Color:=ClRed;
NewEdit[4].Font.Color:=ClRed;
NewEdit[5].Font.Color:=ClBlue;
NewEdit[6].Font.Color:=ClPurple;
NewEdit[7].Font.Color:=ClRed;
NewEdit[8].Font.Color:=ClGreen;
NewEdit[9].Font.Color:=Clpurple;
NewEdit[10].Font.Color:=ClBlue;
case (Sender as Tedit).Tag of
1:
begin
NewEdit[5].Text:=NewEdit[1].Text;
NewEdit[10].Text:=NewEdit[1].Text;
end;
2:
NewEdit[8].Text:=NewEdit[2].Text;
3:
begin
NewEdit[4].Text:=NewEdit[3].Text;
NewEdit[7].Text:=NewEdit[3].Text;
end;
4:
begin
NewEdit[3].Text:=NewEdit[4].Text;
NewEdit[7].Text:=NewEdit[4].Text;
end;
5:
begin
NewEdit[1].Text:=NewEdit[5].Text;
NewEdit[10].Text:=NewEdit[5].Text;
end;
6:
NewEdit[9].Text:=NewEdit[6].Text;
7:
Begin
NewEdit[3].Text:=NewEdit[7].Text;
NewEdit[4].Text:=NewEdit[7].Text;
end;
8:
NewEdit[2].Text:=NewEdit[8].Text;
9:
NewEdit[6].Text:=NewEdit[9].Text;
10:
begin
NewEdit[1].Text:=NewEdit[10].Text;
NewEdit[5].Text:=NewEdit[10].Text;
end;
end;
end;
3:
begin
NewEdit[1].Font.color:=ClRed;
NewEdit[2].Font.Color:=ClPurple;
NewEdit[3].Font.Color:=ClGreen;
NewEdit[4].Font.Color:=ClRed;
NewEdit[5].Font.Color:=ClBlue;
NewEdit[6].Font.Color:=ClPurple;
NewEdit[7].Font.Color:=ClRed;
NewEdit[8].Font.Color:=ClGreen;
NewEdit[9].Font.Color:=ClPurple;
NewEdit[10].Font.Color:=ClBlue;
case (Sender as Tedit).Tag of
1:
begin
NewEdit[4].Text:=NewEdit[1].Text;
NewEdit[7].Text:=NewEdit[1].Text;
end;
2:
begin
NewEdit[6].Text:=NewEdit[2].Text;
NewEdit[9].Text:=NewEdit[2].Text;
end;
3:
NewEdit[8].Text:=NewEdit[3].Text;
4:
begin
NewEdit[1].Text:=NewEdit[4].Text;
NewEdit[7].Text:=NewEdit[4].Text;
end;
5:
NewEdit[10].Text:=NewEdit[5].Text;
6:
begin
NewEdit[2].Text:=NewEdit[6].Text;
NewEdit[9].Text:=NewEdit[6].Text;
end;
7:
begin
NewEdit[1].Text:=NewEdit[7].Text;
NewEdit[4].Text:=NewEdit[7].Text;
end;
8:
NewEdit[3].Text:=NewEdit[8].Text;
9:
begin
NewEdit[2].Text:=NewEdit[9].Text;
NewEdit[6].Text:=NewEdit[9].Text;
end;
10:
NewEdit[5].Text:=NewEdit[10].Text;
end;
end;
4:
begin
NewEdit[1].Font.color:=ClPurple;
NewEdit[2].Font.Color:=ClGreen;
NewEdit[3].Font.Color:=ClBlue;
NewEdit[4].Font.Color:=ClPurple;
NewEdit[5].Font.Color:=ClBlue;
NewEdit[6].Font.Color:=ClRed;
NewEdit[7].Font.Color:=ClRed;
NewEdit[8].Font.Color:=ClPurple;
NewEdit[9].Font.Color:=ClBlue;
NewEdit[10].Font.Color:=ClGreen;
case (Sender as Tedit).Tag of
1:
begin
NewEdit[4].Text:=NewEdit[1].Text;
NewEdit[8].Text:=NewEdit[4].Text;
end;
2:
NewEdit[10].Text:=NewEdit[2].Text;
3:
begin
NewEdit[5].Text:=NewEdit[3].Text;
NewEdit[9].Text:=NewEdit[3].Text;
end;
4:
begin
NewEdit[1].Text:=NewEdit[4].Text;
NewEdit[8].Text:=NewEdit[4].Text;
end;
5:
begin
NewEdit[3].Text:=NewEdit[5].Text;
NewEdit[9].Text:=NewEdit[5].Text;
end;
6:
NewEdit[7].Text:=NewEdit[6].Text;
7:
NewEdit[6].Text:=NewEdit[7].Text;
8:
begin
NewEdit[1].Text:=NewEdit[8].Text;
NewEdit[4].Text:=NewEdit[8].Text;
End;
9:
begin
NewEdit[3].Text:=NewEdit[9].Text;
NewEdit[5].Text:=NewEdit[9].Text;
end;
10:
NewEdit[2].Text:=NewEdit[10].Text;
end;
end;
5:
begin
NewEdit[1].Font.color:=ClRed;
NewEdit[2].Font.Color:=ClPurple;
NewEdit[3].Font.Color:=ClGreen;
NewEdit[4].Font.Color:=ClPurple;
NewEdit[5].Font.Color:=ClBlue;
NewEdit[6].Font.Color:=ClRed;
NewEdit[7].Font.Color:=ClPurple;
NewEdit[8].Font.Color:=ClGreen;
NewEdit[9].Font.Color:=ClRed;
NewEdit[10].Font.Color:=ClBlue;
case (Sender as Tedit).Tag of
1:
begin
NewEdit[6].Text:=NewEdit[1].Text;
NewEdit[9].Text:=NewEdit[1].Text;
end;
2:
begin
NewEdit[4].Text:=NewEdit[2].Text;
NewEdit[7].Text:=NewEdit[2].Text;
end;
3:
NewEdit[8].Text:=NewEdit[3].Text;
4:
begin
NewEdit[2].Text:=NewEdit[4].Text;
NewEdit[7].Text:=NewEdit[4].Text;
end;
5:
NewEdit[10].Text:=NewEdit[5].Text;
6:
begin
NewEdit[1].Text:=NewEdit[6].Text;
NewEdit[9].Text:=NewEdit[6].Text;
end;
7:
begin
NewEdit[2].Text:=NewEdit[7].Text;
NewEdit[4].Text:=NewEdit[7].Text;
end;
8:
NewEdit[3].Text:=NewEdit[8].Text;
9:
begin
NewEdit[1].Text:=NewEdit[9].Text;
NewEdit[6].Text:=NewEdit[9].Text;
end;
10:
NewEdit[5].Text:=NewEdit[10].Text;
end;
end;
6:
begin
NewEdit[1].Font.color:=ClBlue;
NewEdit[2].Font.Color:=ClGreen;
NewEdit[3].Font.Color:=ClPurple;
NewEdit[4].Font.Color:=ClPurple;
NewEdit[5].Font.Color:=ClBlue;
NewEdit[6].Font.Color:=ClRed;
NewEdit[7].Font.Color:=ClPurple;
NewEdit[8].Font.Color:=ClGreen;
NewEdit[9].Font.Color:=ClRed;
NewEdit[10].Font.Color:=ClBlue;
case (Sender as Tedit).Tag of
1:
begin
NewEdit[5].Text:=NewEdit[1].Text;
NewEdit[10].Text:=NewEdit[1].Text;
end;
2:
NewEdit[8].Text:=NewEdit[2].Text;
3:
begin
NewEdit[4].Text:=NewEdit[3].Text;
NewEdit[7].Text:=NewEdit[3].Text;
end;
4:
begin
NewEdit[7].Text:=NewEdit[4].Text;
NewEdit[3].Text:=NewEdit[4].Text;
end;
5:
begin
NewEdit[1].Text:=NewEdit[5].Text;
NewEdit[10].Text:=NewEdit[5].Text;
end;
6:
NewEdit[9].Text:=NewEdit[6].Text;
7:
begin
NewEdit[3].Text:=NewEdit[7].Text;
NewEdit[4].Text:=NewEdit[7].Text;
end;
8:
NewEdit[2].Text:=NewEdit[8].Text;
9:
NewEdit[6].Text:=NewEdit[9].Text;
10:
begin
NewEdit[1].Text:=NewEdit[10].Text;
NewEdit[5].Text:=NewEdit[10].Text;
end;
end;
end;
end;
filled:=True;
for i:=1 to 10 do
if newedit[i].Text='' then //если все эдиты заполнены и хотябы 1 пустой
begin
filled:=false; //временная переменная установка в ложное состояние
break; //прервать цикл
end;
if filled=true then //если временная переменная истона, т.е ве эдиты заполнены
test(TimePerem); //то запустить процедуру тест
end;
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
i:integer; //счетчик
begin
mytime:=0; //начальное время таймера 0
timer1.OnTimer:=Timer1Timer; //запуск таймера
Label1.Caption:=''; //очистить строку состояния
TimePerem:=random(7); //загрузить произвольно одну из игр
for i:=1 to 10 do
begin
newEdit[i].Visible:=true; //показать эдит
newEdit[i].Text:=''; //очистить текст
newEdit[i].Color:=clWhite; //свет фона в ячейке белый
newEdit[i].OnChange:=NewChange; //назначение процедуры значений
newEdit[i].OnKeyPress:=newKeyPress; //обработка ввода
Image2.Picture.LoadFromFile('Picture\'+inttostr(timeperem)+'.jpg'); //загрузка изображения с игрой
end;
newEdit[1].setfocus; //фокус на первом эдите
end;
procedure TForm1.SpeedButton2Click(Sender: TObject);
var
i:Integer; //счетчик
begin
for i:=1 to 10 do
masPerem[i]:=newEdit[i].Text; //запоминаем значения в эдитах
end;
procedure TForm1.SpeedButton3Click(Sender: TObject);
var
i:integer; //счетчик
begin
for i:=1 to 10 do
newEdit[i].Text:=masPerem[i]; //записываем значения в эдиты
end;
procedure TForm1.SpeedButton4Click(Sender: TObject);
var
i:integer; //счетчик
begin
for i:=1 to 10 do
newEdit[i].Text:=''; //очищаем эдиты
newEdit[1].SetFocus; //фокусируемся на первом эдите
end;
procedure TForm1.SpeedButton5Click(Sender: TObject);
var
i,j,k,x:integer; //счетчики, х-временная переменная
begin
for i:=1 to 10 do
newEdit[i].Color:=clWhite; //сделать фон эдитов белым
case TimePerem of
0:
begin
if (newEdit[1].Text<>'') and (newEdit[2].Text='') and (newEdit[3].Text='')
and (newEdit[5].Text='') then //в зависимости от того в какой эдит введено значение
begin //вывести
x:=strtoint(NewEdit[1].Text); //временная пееменная равна едиту со значение
for i:=1 to 50 do //поиск значений
for j:=1 to 50 do
for k:=1 to 50 do
if (x+j=i) and (x+k=j) and (k+j=x+i) //проверка правильности решения
and ((x=1) or (i=1) or (j=1) or (k=1)) then
begin
newEdit[3].SetFocus; //фокус на эдите
newEdit[3].color:=ClGray; //фон серый. установка серого фона также у связанных с ним эдитов
newEdit[10].Color:=ClGray;
NewEdit[3].Text:=inttostr(i); //заполняем значением
label1.Caption:='Вы использовали подсказку!'; //вывод сообщения в строку состояния
exit; //выйти из цикла
end
Else
label1.caption:='Масса круга не может быть равна'+' '+newEdit[1].Text; //иначе вывести сообщение в строку состояния
end
else
if (newEdit[3].Text<>'') and (newEdit[2].Text='') and (newEdit[1].Text='')
and (newEdit[5].Text='') then
begin
x:=strtoint(NewEdit[3].Text);
for i:=1 to 50 do
for j:=1 to 50 do
for k:=1 to 50 do
if (i+j=x) and (i+k=j) and (k+j=x+i)
and ((x=1) or (i=1) or (j=1) or (k=1)) then
begin
newEdit[1].SetFocus;
newEdit[1].color:=ClGray;
newEdit[4].Color:=ClGray;
newEdit[9].Color:=clGray;
NewEdit[1].Text:=inttostr(i);
label1.Caption:='Вы использовали подсказку!';
exit;
end
Else
label1.caption:='Масса квадрата не может быть равна'+' '+newEdit[3].Text;
end
else
if (newEdit[2].Text<>'') and (newEdit[1].Text='') and (newEdit[3].Text='')
and (newEdit[5].Text='') then
begin
x:=strtoint(NewEdit[2].Text);
for i:=1 to 50 do
for j:=1 to 50 do
for k:=1 to 50 do
if (x+i=j) and (i+k=x) and (k+x=j+i)
and ((x=1) or (i=1) or (j=1) or (k=1)) then
begin
newEdit[1].SetFocus;
newEdit[1].color:=ClGray;
newEdit[4].Color:=ClGray;
newEdit[9].Color:=clGray;
NewEdit[1].Text:=inttostr(i);
label1.Caption:='Вы использовали подсказку!';
exit;
end
Else
label1.caption:='Масса пятигранника не может быть равна'+' '+newEdit[2].Text;
end
else
if (newEdit[5].Text<>'') and (newEdit[2].Text='') and (newEdit[3].Text='')
and (newEdit[1].Text='') then
begin
x:=strtoint(NewEdit[5].Text);
for i:=1 to 50 do
for j:=1 to 50 do
for k:=1 to 50 do
if (x+j=i) and (x+k=j) and (k+j=x+i)
and ((x=1) or (i=1) or (j=1) or (k=1)) then
begin
newEdit[1].SetFocus;
newEdit[1].color:=ClGray;
newEdit[4].Color:=ClGray;
newEdit[9].Color:=clGray;
NewEdit[1].Text:=inttostr(i);
label1.Caption:='Вы использовали подсказку!';
exit;
end
Else
label1.caption:='Масса шестригранника не может быть равна'+' '+newEdit[5].Text;
end
else
Label1.Caption:='Подсказка на данном уровне решения невозможна!';
end;
1:
Begin
if (newEdit[1].Text<>'') and (newEdit[2].Text='') and (newEdit[3].Text='')
and (newEdit[4].Text='') then
begin
x:=strtoint(NewEdit[1].Text);
for i:=1 to 50 do
for j:=1 to 50 do
for k:=1 to 50 do
if (x+j=k) and (i+j=x) and (k+j=x+i)
and ((x=1) or (i=1) or (j=1) or (k=1)) then
begin
newEdit[4].SetFocus;
newEdit[4].color:=ClGray;
newEdit[10].Color:=ClGray;
NewEdit[4].Text:=inttostr(i);
label1.Caption:='Вы использовали подсказку!';
exit;
end
Else
label1.caption:='Масса круга не может быть равна'+' '+newEdit[1].Text;
end
else
if (newEdit[4].Text<>'') and (newEdit[2].Text='') and (newEdit[1].Text='')
and (newEdit[3].Text='') then
begin
x:=strtoint(NewEdit[4].Text);
for i:=1 to 50 do
for j:=1 to 50 do
for k:=1 to 50 do
if (i+j=k) and (x+j=i) and (k+j=x+i)
and ((x=1) or (i=1) or (j=1) or (k=1)) then
begin
newEdit[1].SetFocus;
newEdit[1].color:=ClGray;
newEdit[6].Color:=ClGray;
newEdit[9].Color:=clGray;
NewEdit[1].Text:=inttostr(i);
label1.Caption:='Вы использовали подсказку!';
exit;
end
Else
label1.caption:='Масса квадрата не может быть равна'+' '+newEdit[4].Text;
end
else
if (newEdit[2].Text<>'') and (newEdit[1].Text='') and (newEdit[3].Text='')
and (newEdit[4].Text='') then
begin
x:=strtoint(NewEdit[2].Text);
for i:=1 to 50 do
for j:=1 to 50 do
for k:=1 to 50 do
if (x+i=k) and (j+x=i) and (k+x=j+i)
and ((x=1) or (i=1) or (j=1) or (k=1)) then
begin
newEdit[1].SetFocus;
newEdit[1].color:=ClGray;
newEdit[6].Color:=ClGray;
newEdit[9].Color:=clGray;
NewEdit[1].Text:=inttostr(i);
label1.Caption:='Вы использовали подсказку!';
exit;
end
Else
label1.caption:='Масса пятигранника не может быть равна'+' '+newEdit[2].Text;
end
else
if (newEdit[3].Text<>'') and (newEdit[2].Text='') and (newEdit[1].Text='')
and (newEdit[4].Text='') then
begin
x:=strtoint(NewEdit[3].Text);
for i:=1 to 50 do
for j:=1 to 50 do
for k:=1 to 50 do
if (i+k=x) and (j+k=i) and (x+k=j+i)
and ((x=1) or (i=1) or (j=1) or (k=1)) then
begin
newEdit[1].SetFocus;
newEdit[1].color:=ClGray;
newEdit[6].Color:=ClGray;
newEdit[9].Color:=clGray;
NewEdit[1].Text:=inttostr(i);
label1.Caption:='Вы использовали подсказку!';
exit;
end
Else
label1.caption:='Масса шестигранника не может быть равна'+' '+newEdit[3].Text;
end
else
Label1.Caption:='Подсказка на данном уровне решения невозможна!';
end;
2:
begin
if (newEdit[3].Text<>'') and (newEdit[2].Text='') and (newEdit[1].Text='')
and (newEdit[6].Text='') then
begin
x:=strtoint(NewEdit[3].Text);
for i:=1 to 50 do
for j:=1 to 50 do
for k:=1 to 50 do
if (i+j=x) and (x+i=k) and (x+j=k+i)
and ((x=1) or (i=1) or (j=1) or (k=1)) then
begin
newEdit[1].SetFocus;
newEdit[1].color:=ClGray;
newEdit[5].Color:=ClGray;
newEdit[10].Color:=ClGray;
NewEdit[1].Text:=inttostr(i);
label1.Caption:='Вы использовали подсказку!';
exit;
end
Else
label1.caption:='Масса круга не может быть равна'+' '+newEdit[3].Text;
end
else
if (newEdit[1].Text<>'') and (newEdit[2].Text='') and (newEdit[3].Text='')
and (newEdit[6].Text='') then
begin
x:=strtoint(NewEdit[1].Text);
for i:=1 to 50 do
for j:=1 to 50 do
for k:=1 to 50 do
if (x+j=i) and (i+x=k) and (i+j=x+k)
and ((x=1) or (i=1) or (j=1) or (k=1)) then
begin
newEdit[3].SetFocus;
newEdit[3].color:=ClGray;
newEdit[4].Color:=ClGray;
newEdit[7].Color:=clGray;
NewEdit[7].Text:=inttostr(i);
label1.Caption:='Вы использовали подсказку!';
exit;
end
Else
label1.caption:='Масса квадрата не может быть равна'+' '+newEdit[1].Text;
end
else
if (newEdit[2].Text<>'') and (newEdit[1].Text='') and (newEdit[3].Text='')
and (newEdit[6].Text='') then
begin
x:=strtoint(NewEdit[2].Text);
for i:=1 to 50 do
for j:=1 to 50 do
for k:=1 to 50 do
if (x+j=i) and (i+j=k) and (i+x=j+k)
and ((x=1) or (i=1) or (j=1) or (k=1)) then
begin
newEdit[3].SetFocus;
newEdit[3].color:=ClGray;
newEdit[4].Color:=ClGray;
newEdit[7].Color:=clGray;
NewEdit[3].Text:=inttostr(i);
label1.Caption:='Вы использовали подсказку!';
exit;
end
Else
label1.caption:='Масса пятигранника не может быть равна'+' '+newEdit[2].Text;
end
else
if (newEdit[6].Text<>'') and (newEdit[2].Text='') and (newEdit[3].Text='')
and (newEdit[1].Text='') then
begin
x:=strtoint(NewEdit[6].Text);
for i:=1 to 50 do
for j:=1 to 50 do
for k:=1 to 50 do
if (j+k=i) and (i+j=x) and (i+k=x+j)
and ((x=1) or (i=1) or (j=1) or (k=1)) then
begin
newEdit[3].SetFocus;
newEdit[3].color:=ClGray;
newEdit[4].Color:=ClGray;
newEdit[7].Color:=clGray;
NewEdit[3].Text:=inttostr(i);
label1.Caption:='Вы использовали подсказку!';
exit;
end
Else
label1.caption:='Масса шестригранника не может быть равна'+' '+newEdit[6].Text;
end
else
Label1.Caption:='Подсказка на данном уровне решения невозможна!';
end;
3:
begin
if (newEdit[1].Text<>'') and (newEdit[2].Text='') and (newEdit[3].Text='')
and (newEdit[5].Text='') then
begin
x:=strtoint(NewEdit[1].Text);
for i:=1 to 50 do
for j:=1 to 50 do
for k:=1 to 50 do
if (x+k=j) and (x+i=k) and (x+j=k+i)
and ((x=1) or (i=1) or (j=1) or (k=1)) then
begin
newEdit[5].SetFocus;
newEdit[5].color:=ClGray;
newEdit[10].Color:=ClGray;
NewEdit[5].Text:=inttostr(i);
label1.Caption:='Вы использовали подсказку!';
exit;
end
Else
label1.caption:='Масса круга не может быть равна'+' '+newEdit[1].Text;
end
else
if (newEdit[5].Text<>'') and (newEdit[2].Text='') and (newEdit[1].Text='')
and (newEdit[3].Text='') then
begin
x:=strtoint(NewEdit[5].Text);
for i:=1 to 50 do
for j:=1 to 50 do
for k:=1 to 50 do
if (i+k=j) and (i+x=k) and (i+j=x+k)
and ((x=1) or (i=1) or (j=1) or (k=1)) then
begin
newEdit[1].SetFocus;
newEdit[1].color:=ClGray;
newEdit[4].Color:=ClGray;
newEdit[7].Color:=clGray;
NewEdit[1].Text:=inttostr(i);
label1.Caption:='Вы использовали подсказку!';
exit;
end
Else
label1.caption:='Масса квадрата не может быть равна'+' '+newEdit[5].Text;
end
else
if (newEdit[3].Text<>'') and (newEdit[1].Text='') and (newEdit[2].Text='')
and (newEdit[5].Text='') then
begin
x:=strtoint(NewEdit[3].Text);
for i:=1 to 50 do
for j:=1 to 50 do
for k:=1 to 50 do
if (i+k=x) and (i+j=k) and (i+x=j+k)
and ((x=1) or (i=1) or (j=1) or (k=1)) then
begin
newEdit[1].SetFocus;
newEdit[1].color:=ClGray;
newEdit[6].Color:=ClGray;
newEdit[7].Color:=clGray;
NewEdit[1].Text:=inttostr(i);
label1.Caption:='Вы использовали подсказку!';
exit;
end
Else
label1.caption:='Масса пятигранника не может быть равна'+' '+newEdit[3].Text;
end
else
if (newEdit[2].Text<>'') and (newEdit[1].Text='') and (newEdit[3].Text='')
and (newEdit[5].Text='') then
begin
x:=strtoint(NewEdit[2].Text);
for i:=1 to 50 do
for j:=1 to 50 do
for k:=1 to 50 do
if (x+i=k) and (i+j=x) and (i+k=x+j)
and ((x=1) or (i=1) or (j=1) or (k=1)) then
begin
newEdit[1].SetFocus;
newEdit[1].color:=ClGray;
newEdit[4].Color:=ClGray;
newEdit[7].Color:=clGray;
NewEdit[1].Text:=inttostr(i);
label1.Caption:='Вы использовали подсказку!';
exit;
end
Else
label1.caption:='Масса шестигранника не может быть равна'+' '+newEdit[2].Text;
end
else
Label1.Caption:='Подсказка на данном уровне решения невозможна!';
end;
4:
begin
if (newEdit[6].Text<>'') and (newEdit[2].Text='') and (newEdit[3].Text='')
and (newEdit[1].Text='') then
begin
x:=strtoint(NewEdit[6].Text);
for i:=1 to 50 do
for j:=1 to 50 do
for k:=1 to 50 do
if (k+j=i) and (k+i=x) and (x+k=i+j)
and ((x=1) or (i=1) or (j=1) or (k=1)) then
begin
newEdit[3].SetFocus;
newEdit[3].color:=ClGray;
newEdit[5].Color:=ClGray;
newEdit[9].Color:=ClGray;
NewEdit[3].Text:=inttostr(i);
label1.Caption:='Вы использовали подсказку!';
exit;
end
Else
label1.caption:='Масса круга не может быть равна'+' '+newEdit[6].Text;
end
else
if (newEdit[3].Text<>'') and (newEdit[2].Text='') and (newEdit[1].Text='')
and (newEdit[6].Text='') then
begin
x:=strtoint(NewEdit[3].Text);
for i:=1 to 50 do
for j:=1 to 50 do
for k:=1 to 50 do
if (k+j=x) and (k+x=i) and (i+k=x+j)
and ((x=1) or (i=1) or (j=1) or (k=1)) then
begin
newEdit[6].SetFocus;
newEdit[6].color:=ClGray;
newEdit[7].Color:=ClGray;
NewEdit[6].Text:=inttostr(i);
label1.Caption:='Вы использовали подсказку!';
exit;
end
Else
label1.caption:='Масса квадрата не может быть равна'+' '+newEdit[3].Text;
end
else
if (newEdit[2].Text<>'') and (newEdit[1].Text='') and (newEdit[3].Text='')
and (newEdit[6].Text='') then
begin
x:=strtoint(NewEdit[2].Text);
for i:=1 to 50 do
for j:=1 to 50 do
for k:=1 to 50 do
if (k+x=j) and (k+j=i) and (i+k=j+x)
and ((x=1) or (i=1) or (j=1) or (k=1)) then
begin
newEdit[6].SetFocus;
newEdit[6].color:=ClGray;
newEdit[7].Color:=ClGray;
NewEdit[6].Text:=inttostr(i);
label1.Caption:='Вы использовали подсказку!';
exit;
end
Else
label1.caption:='Масса пятигранника не может быть равна'+' '+newEdit[2].Text;
end
else
if (newEdit[1].Text<>'') and (newEdit[2].Text='') and (newEdit[3].Text='')
and (newEdit[6].Text='') then
begin
x:=strtoint(NewEdit[1].Text);
for i:=1 to 50 do
for j:=1 to 50 do
for k:=1 to 50 do
if (x+k=j) and (x+j=i) and (i+x=j+k)
and ((x=1) or (i=1) or (j=1) or (k=1)) then
begin
newEdit[6].SetFocus;
newEdit[6].color:=ClGray;
newEdit[7].Color:=ClGray;
NewEdit[6].Text:=inttostr(i);
label1.Caption:='Вы использовали подсказку!';
exit;
end
Else
label1.caption:='Масса шестигранника не может быть равна'+' '+newEdit[1].Text;
end
else
Label1.Caption:='Подсказка на данном уровне решения невозможна!';
end;
5:
begin
if (newEdit[1].Text<>'') and (newEdit[2].Text='') and (newEdit[3].Text='')
and (newEdit[5].Text='') then
begin
x:=strtoint(NewEdit[1].Text);
for i:=1 to 50 do
for j:=1 to 50 do
for k:=1 to 50 do
if (x+k=j) and (k+i=x) and (k+j=x+i)
and ((x=1) or (i=1) or (j=1) or (k=1)) then
begin
newEdit[5].SetFocus;
newEdit[5].color:=ClGray;
newEdit[10].Color:=ClGray;
NewEdit[5].Text:=inttostr(i);
label1.Caption:='Вы использовали подсказку!';
exit;
end
Else
label1.caption:='Масса круга не может быть равна'+' '+newEdit[1].Text;
end
else
if (newEdit[5].Text<>'') and (newEdit[2].Text='') and (newEdit[1].Text='')
and (newEdit[3].Text='') then
begin
x:=strtoint(NewEdit[5].Text);
for i:=1 to 50 do
for j:=1 to 50 do
for k:=1 to 50 do
if (i+k=j) and (k+x=i) and (k+j=x+i)
and ((x=1) or (i=1) or (j=1) or (k=1)) then
begin
newEdit[1].SetFocus;
newEdit[1].color:=ClGray;
newEdit[6].Color:=ClGray;
newEdit[9].Color:=clGray;
NewEdit[1].Text:=inttostr(i);
label1.Caption:='Вы использовали подсказку!';
exit;
end
Else
label1.caption:='Масса квадрата не может быть равна'+' '+newEdit[5].Text;
end
else
if (newEdit[3].Text<>'') and (newEdit[1].Text='') and (newEdit[2].Text='')
and (newEdit[5].Text='') then
begin
x:=strtoint(NewEdit[3].Text);
for i:=1 to 50 do
for j:=1 to 50 do
for k:=1 to 50 do
if (i+k=x) and (k+j=i) and (k+x=j+i)
and ((x=1) or (i=1) or (j=1) or (k=1)) then
begin
newEdit[1].SetFocus;
newEdit[1].color:=ClGray;
newEdit[6].Color:=ClGray;
newEdit[9].Color:=clGray;
NewEdit[1].Text:=inttostr(i);
label1.Caption:='Вы использовали подсказку!';
exit;
end
Else
label1.caption:='Масса пятигранника не может быть равна'+' '+newEdit[3].Text;
end
else
if (newEdit[2].Text<>'') and (newEdit[1].Text='') and (newEdit[3].Text='')
and (newEdit[5].Text='') then
begin
x:=strtoint(NewEdit[2].Text);
for i:=1 to 50 do
for j:=1 to 50 do
for k:=1 to 50 do
if (i+x=k) and (x+j=i) and (x+k=i+j)
and ((x=1) or (i=1) or (j=1) or (k=1)) then
begin
newEdit[1].SetFocus;
newEdit[1].color:=ClGray;
newEdit[6].Color:=ClGray;
newEdit[9].Color:=clGray;
NewEdit[1].Text:=inttostr(i);
label1.Caption:='Вы использовали подсказку!';
exit;
end
Else
label1.caption:='Масса шестигранника не может быть равна'+' '+newEdit[2].Text;
end
else
Label1.Caption:='Подсказка на данном уровне решения невозможна!';
end;
6:
begin
if (newEdit[6].Text<>'') and (newEdit[2].Text='') and (newEdit[3].Text='')
and (newEdit[1].Text='') then
begin
x:=strtoint(NewEdit[6].Text);
for i:=1 to 50 do
for j:=1 to 50 do
for k:=1 to 50 do
if (i+j=k) and (k+i=x) and (k+j=x+i)
and ((x=1) or (i=1) or (j=1) or (k=1)) then
begin
newEdit[1].SetFocus;
newEdit[1].color:=ClGray;
newEdit[5].Color:=ClGray;
newEdit[10].Color:=ClGray;
NewEdit[1].Text:=inttostr(i);
label1.Caption:='Вы использовали подсказку!';
exit;
end
Else
label1.caption:='Масса круга не может быть равна'+' '+newEdit[6].Text;
end
else
if (newEdit[1].Text<>'') and (newEdit[2].Text='') and (newEdit[3].Text='')
and (newEdit[6].Text='') then
begin
x:=strtoint(NewEdit[1].Text);
for i:=1 to 50 do
for j:=1 to 50 do
for k:=1 to 50 do
if (x+j=k) and (k+x=i) and (k+j=x+i)
and ((x=1) or (i=1) or (j=1) or (k=1)) then
begin
newEdit[6].SetFocus;
newEdit[6].color:=ClGray;
newEdit[10].Color:=ClGray;
NewEdit[6].Text:=inttostr(i);
label1.Caption:='Вы использовали подсказку!';
exit;
end
Else
label1.caption:='Масса квадрата не может быть равна'+' '+newEdit[1].Text;
end
else
if (newEdit[2].Text<>'') and (newEdit[1].Text='') and (newEdit[3].Text='')
and (newEdit[6].Text='') then
begin
x:=strtoint(NewEdit[2].Text);
for i:=1 to 50 do
for j:=1 to 50 do
for k:=1 to 50 do
if (j+x=k) and (k+j=i) and (k+x=j+i)
and ((x=1) or (i=1) or (j=1) or (k=1)) then
begin
newEdit[6].SetFocus;
newEdit[6].color:=ClGray;
newEdit[10].Color:=ClGray;
NewEdit[6].Text:=inttostr(i);
label1.Caption:='Вы использовали подсказку!';
exit;
end
Else
label1.caption:='Масса пятигранника не может быть равна'+' '+newEdit[2].Text;
end
else
if (newEdit[3].Text<>'') and (newEdit[2].Text='') and (newEdit[1].Text='')
and (newEdit[6].Text='') then
begin
x:=strtoint(NewEdit[3].Text);
for i:=1 to 50 do
for j:=1 to 50 do
for k:=1 to 50 do
if (j+k=x) and (x+j=i) and (x+k=i+j)
and ((x=1) or (i=1) or (j=1) or (k=1)) then
begin
newEdit[6].SetFocus;
newEdit[6].color:=ClGray;
newEdit[10].Color:=ClGray;
NewEdit[6].Text:=inttostr(i);
label1.Caption:='Вы использовали подсказку!';
exit;
end
Else
label1.caption:='Масса шестигранника не может быть равна'+' '+newEdit[3].Text;
end
else
Label1.Caption:='Подсказка на данном уровне решения невозможна!';
end;
end;
end;
procedure TForm1.N3Click(Sender: TObject);
begin
form1.Visible:=false; //скрыть 1 форму
form3.show; //открыть форму авторешения
end;
procedure TForm1.N9Click(Sender: TObject);
begin
shellExecute(handle,'open','help\help.chm',nil,nil,SW_SHOW); //открытие файла справки
end;
procedure TForm1.N10Click(Sender: TObject);
begin
form4.Show; //показать сведения о программе и разработчике
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
mytime:=mytime+1; //счетчик таймера
label3.Caption:=inttostr(mytime); //запись в лебел занчения таймера
end;
end.