Delphi. Учимся на примерах - [14]

Шрифт
Интервал

Присвойте его свойству Name значение comp, a свойству Caption — значение Играть против компьютера (проследите также, чтобы свойство Checked было равно False).

Ниже разместите две кнопки (компонент Button категории Standard), присвоив их свойству Caption значения Принять вариант и Новая игра. Полученная форма должна соответствовать рис. 9.1.

Рис. 9.1. Форма для игры "Угадывание чисел"

Разработка программного кода

Прежде всего, объявим переменные, которые будем использовать на протяжении всей программы:

>var

> Form1: TForm1;

> num, j, i, kolvo, big, small: integer;

> maximum, minimum: array [1..100] of integer; {массивы максимальных и минимальных чисел}

Переменная num соответствует случайно заданное число, переменной kolvo — количество попыток, за которые число было отгадано, переменной big — наибольшее число из названных, а переменной small — наименьшее число из названных.

Теперь напишем две процедуры, которые в случае игры против компьютера будут определять границы нахождения числа. Процедура min будет определять нижнюю границу, а процедура max — верхнюю.

Объявим эти процедуры как закрытые члены класса формы:

>type

> TForm1 = class(TForm)

> …

>private

> { Private declarations }

> procedure min();

> procedure max();

>public

> { Public declarations }

>end;

После этого создадим сами процедуры в разделе implementation:

>//процедура нахождения наименьшего числа

>procedure TForm1.min();

>begin

> for i:=1 to kolvo do begin

>  for j:=1 to kolvo do begin

>   {Если число меньше наименьшего, то оно становится наименьшим}

>   if minimum[j] > small then small:= minimum[j];

>  end;

end;

>end;


>//процедура нахождения наибольшего числа

>procedure TForm1.max();

>var temp: integer;

>begin

> temp:= StrToInt(finish.Text);

> for i:=1 to kolvo do begin

>  for j:=1 to kolvo do begin

>   if temp > maximum[j] then

>    if maximum[j] > 0 then temp:= maximum[j]; {если число больше наибольшего…}

end;

> end;

> if ( (temp<>0) and (temp<>StrTolnt(finish.Text)) ) then

>  {… и если число входит в допустимый диапазон, то оно становится наибольшим}

big:= temp;

>end;

Рассмотрим процедуру, которая будет выполняться при создании формы:

>procedure TForm1.FormCreate(Sender: TObject);

>begin

> Randomize; //включаем генератор случайных чисел

> //загадываем случайное число из заданного диапазона

> num:= Random(StrToInt(finish.Text) – StrToInt(start.Text)) + StrToInt(start.Text);

> kolvo:= 0; //обнуляем количество попыток

> big:= StrToInt(finish.Text); //самое большое число

> small:= StrToInt(start.Text); //самое маленькое число

>end;

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

Самое главное событие — нажатие кнопки Принять вариант. Создадим для этого кнопки обработчик события OnClick:

>procedure TForm1.Button2Click(Sender: TObject);

>begin

> //увеличиваем количество попыток на единицу

> kolvo:= kolvo + 1;

> if not comp.Checked then //если идет игра с человеком

> begin

>  if pl1.Enabled then begin //если ход первого игрока

>  //если вариант больше загаданного числа, ставим знак >

>  if StrToInt(ch1.Text) > num then znak1.Caption:= '>';

>  //если вариант меньше загаданного числа, ставим знак <

>  if StrToInt(ch1.Text) < num then znak1.Caption:= '<';

>  if StrToInt(ch1.Text) = num then //если число угадано

>  begin

>   znak1.Caption:= '='; //изменим знак на "="

>   //вместо знака "X" показываем загаданное число

>   х.Caption:= IntToStr(num);

>   //выводим сообщение о победе первого игрока

>   ShowMessage('Победил первый игрок!' + #13#10 + 'Число угадано за ' + IntToStr(kolvo) + ' попытки')

>  end;

>  //передаем ход второму игроку

>  pl1.Enabled:= False;

>  ch1.Enabled:= False;

>  ch2.Enabled:= True;

>  pl2.Enabled:= True;

>  Exit; //прерываем выполнение процедуры

> end;

> if pl2.Enabled then begin //если ход второго игрока

>  {сравниваем загаданное число с вариантом второго игрока и ставим соответствующий знак}

>  if StrToInt(ch2.Text) > num then znak2.Caption:= '>';

>  if StrToInt(ch2.Text) < num then znak2.Caption := '<';

>   if StrToInt(ch2.Text) = num then begin

>    znak2.Caption := '=';

>    x.Caption:= IntToStr(num);

>    ShowMessage('Победил второй игрок!' + #13#10 + 'Число угадано за ' + IntToStr(kolvo) + ' попытки')

>   end;

>  end;

>  //передаем ход первому игроку

>  рl2.Enabled:= False;

>  ch2.Enabled:= False;

>  ch1.Enabled:= True;

>  pl1.Enabled:= True;

>  Exit;

> end;

> if comp.Checked then begin //если игра против компьютера

>  {проверяем вариант первого игрока и ставим соответствующий знак}

>  if StrToInt(ch1.Text) > num then znak1.Caption:= '>';

>  if StrToInt(ch1.Text) < num then znak1.Caption:= '<';

>  if StrToInt(ch1.Text) = num then begin

>   znak1.Caption:= '=';

>   x.Caption:= IntToStr(num);

>   ShowMessage('Вы победили!' + #13#10 + 'Число угадано за ' + IntToStr(kolvo) + ' попытки');

>   Exit;

>  end;

>  //если вариант первого игрока больше загаданного числа

>  if znak1.Caption = '>' then begin

>   maximum[kolvo]:= StrToInt(ch1.Text); {добавляем в массив наибольших чисел вариант первого игрока}

>   max();

>   //ищем наибольшее число


Рекомендуем почитать
Изучаем Java EE 7

Java Enterprise Edition (Java EE) остается одной из ведущих технологий и платформ на основе Java. Данная книга представляет собой логичное пошаговое руководство, в котором подробно описаны многие спецификации и эталонные реализации Java EE 7. Работа с ними продемонстрирована на практических примерах. В этом фундаментальном издании также используется новейшая версия инструмента GlassFish, предназначенного для развертывания и администрирования примеров кода. Книга написана ведущим специалистом по обработке запросов на спецификацию Java EE, членом наблюдательного совета организации Java Community Process (JCP)


Pro Git

Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.


Java 7

Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.


Фундаментальные алгоритмы и структуры данных в Delphi

Книга "Фундаментальные алгоритмы и структуры данных в Delphi" представляет собой уникальное учебное и справочное пособие по наиболее распространенным алгоритмам манипулирования данными, которые зарекомендовали себя как надежные и проверенные многими поколениями программистов. По данным журнала "Delphi Informant" за 2002 год, эта книга была признана сообществом разработчиков прикладных приложений на Delphi как «самая лучшая книга по практическому применению всех версий Delphi».В книге подробно рассматриваются базовые понятия алгоритмов и основополагающие структуры данных, алгоритмы сортировки, поиска, хеширования, синтаксического разбора, сжатия данных, а также многие другие темы, тесно связанные с прикладным программированием.


Питон — модули, пакеты, классы, экземпляры

Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.


Как пасти котов. Наставление для программистов, руководящих другими программистами

«Как пасти котов» – это книга о лидерстве и руководстве, о том, как первое совмещать со вторым. Это, если хотите, словарь трудных случаев управления IT-проектами. Программист подобен кошке, которая гуляет сама по себе. Так уж исторически сложилось. Именно поэтому так непросто быть руководителем команды разработчиков. Даже если вы еще месяц назад были блестящим и дисциплинированным программистом и вдруг оказались в роли менеджера, вряд ли вы знаете, с чего надо начать, какой выбрать стиль руководства, как нанимать и увольнять сотрудников, проводить совещания, добиваться своевременного выполнения задач.