Сергей Парижский - Delphi. Учимся на примерах
- Название:Delphi. Учимся на примерах
- Автор:
- Жанр:
- Издательство:МК-Пресс
- Год:2005
- Город:Киев
- ISBN:ISBN 966-8806-02-6
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Сергей Парижский - Delphi. Учимся на примерах краткое содержание
Данная книга — продолжение предыдущей книги автора, "Delphi. Только практика". Также как и в "Delphi. Только практика", в данном издании подробно рассмотрены программы для сетей, различные шуточные программы, простые игрушки, некоторые полезные приложения, разработка приложений в стиле Windows XP. В частности, здесь можно найти такие примеры как бесплатная отправка SMS, FTP-клиент, простое шифрование, CGI-сценарии и многое другое. Описаны методы работы с системным реестром Windows и INI-файлами, а также некоторые важные аспекты программирования на системном уровне с применением функций Windows API. Для облегчения понимания программ каждый пример содержит комментарии сложных строк кода.
Книга ориентирована как на тех, кто уже имеет опыт создания приложений в Delphi, так и на начинающих программистов. Для начинающих пользователей Delphi в конце книги добавлено приложение с описанием синтаксиса языка программирования Object Pascal.
Delphi. Учимся на примерах - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
ch2.Enabled:= True;
рl2.Enabled:= True;
end;
end;
Осталось только обработать нажатие кнопки Новая игра:
procedure TForm1.Button1Click(Sender: TObject);
begin
if ((StrToInt(finish.Text) > StrToInt(start.Text)) and (StrToInt(start.Text) > 0) and (StrToInt(finish.Text) < 60000))
then{проверяем, не выходит ли заданное пользователем число за допустимые пределы}
{загадаем случайное число в заданном диапазоне}
num:= Random(StrToInt(finish.Text) – StrToInt(start.Text)) + StrToInt(start.Text)
else ShowMessage('Неверный диапазон!');
//обнуляем все, и придаем программе начальный вид
znak1.Caption:= '';
znak2.Caption:= '';
ch1.Enabled:= True;
ch2.Enabled:= False;
pl1.Enabled:= True;
pl2.Enabled:= False;
x.Caption:= 'X';
ch1.Text:= '0';
ch2.Text:= '0';
//очистим массивы наибольших и наименьших чисел
for i:= 1 to kolvo+1 do begin
minimum[i]:= 0;
maximum[i]:= 0;
big:= StrToInt(finish.Text);//наибольшее число
small:= StrToInt(start.Text);//наименьшее число
end;
kolvo:= 0;//количество использованных попыток
end;
После того как пользователь указал диапазон, в котором должно находиться случайное число, мы проверяем, не является ли конечное значение меньше начального. Проверяем также, не является ли начальное значение меньше нуля и не превышает ли конечное значение 60000. Если все нормально, то загадываем число в заданном диапазоне. После этого обнуляем все значения и приводим программу к начальному виду.
Компилируем и запускаем программу на выполнение. Игра в действии показана на рис. 9.2.
Рис. 9.2. Игра "Угадывание чисел" в действии
Полный исходный код модуля
Полный исходный код программного модуля игры "Угадывание чисел" представлен в листинге 9. 1.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;
type TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
start : TEdit;
finish: TEdit;
Label3: TLabel;
pl1: TLabel;
ch1: TEdit;
pl2: TLabel;
ch2: TEdit;
comp: TCheckBox;
Button2: TButton;
x: TLabel;
znak1: TLabel;
znak2: TLabel;
procedure FormCreate(Sender: TObject);
procedure compClick(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
procedure min();
procedure max();
public
{ Public declarations }
end;
var
Form1: TForm1;
num, j, i, kolvo, big, small: integer;
maximum, minimum: array [1..100] of integer; {массивы максимальных и минимальных чисел}
implementation
{$R *.dfm}
//процедура нахождения наименьшего числа
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.compClick(Sender: TObject);
begin
if comp.Checked then begin //если флажок установлен
//блокируем ввод от второго игрока
ch2.Enabled:= False;
рl2.Enabled:= False;
//включаем ввод от первого игрока
ch1.Enabled:= True;
pl1.Enabled:= True;
end
else begin
//если игра идет с человеком, то
//включаем ввод для второго игрока
ch2.Enabled:= True;
рl2.Enabled:= True;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if ((StrToInt(finish.Text) > StrToInt(start.Text)) and (StrToInt(start.Text) > 0) and (StrToInt(finish.Text) < 60000))
then {проверяем, не выходит ли заданное пользователем число за допустимые пределы}
{загадаем случайное число в заданном диапазоне}
num:= Random(StrToInt(finish.Text) – StrToInt(start.Text)) + StrToInt(start.Text)
else ShowMessage('Неверный диапазон!');
//обнуляем все, и придаем программе начальный вид
znak1.Caption:= '';
znak2.Caption:= '';
ch1.Enabled:= True;
ch2.Enabled:= False;
pl1.Enabled:= True;
pl2.Enabled:= False;
x.Caption:= 'X';
ch1.Text:= '0';
ch2.Text:= '0';
//очистим массивы наибольших и наименьших чисел
for i:= 1 to kolvo+1 do begin
minimum[i]:= 0;
maximum[i]:= 0;
big:= StrToInt(finish.Text); //наибольшее число
small:= StrToInt(start.Text); //наименьшее число
end;
kolvo:= 0; //количество использованных попыток
end;
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 //если игра против компьютера
Интервал:
Закладка: