Четверг, 19.06.2025, 08:30
Приветствую Вас Гость | RSS
Главная | Каталог файлов | Регистрация | Вход
Посмотри и сделай лучше
Форма входа
Меню сайта

Категории раздела
Школьные шпаргалки [0]
шпаргалки по физике и математике
Excel [6]
Применение Excel
Исходники Delphi 7 [6]
Исходные тексты программ, описания
Откомпилированные [2]
EXE файлы и дополнительные файлы
Прочие [1]

Наш опрос
Натуральное число 89 является:
Всего ответов: 18

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Главная » Файлы » Исходники Delphi 7

Морской бой
16.08.2013, 00:32

Создадим на форме квадрат.

kvadrat.JPG

 

Раскрасим его в синий цвет.

blue.JPG

 

Щелчком мыши создадим процедуру обработки нажатия на кнопку мыши на квадрате.

OnMouse.JPG

 

Впишем в неё следующий текст:

  if  Tshape(Sender).Brush.Style =  bsDiagCross then

  Tshape(Sender).Brush.Style :=  bsSolid

  else

  Tshape(Sender).Brush.Style :=  bsDiagCross;

Обратите внимание на то, что зная имя объекта, обращаемся к нему через  Sender. Это сделано для использования одной общей процедуры для всех наносимых впоследствии квадратах. А их мы создадим из программы, даже не заботясь о присваиваемых им именах.

 

Запустим программу и убедимся, что щелчки по квадрату меняют его внешний вид.

В одном состоянии это будет море, а в другом палуба. Завершим программу.

 

Щелчком по форме создадим процедуру:

procedure TForm1.FormCreate(Sender: TObject);

begin

 

end;

и впишем в неё цикл, предварительно объявив переменные.

procedure TForm1.FormCreate(Sender: TObject);

var

i,k: integer;

begin

  for i:=1 to 10 do

  begin

    for k:=1 to 10 do

    begin

      Kvadr(i, k);

    end;

  end;

 

А теперь добавим процедуру создания программой квадрата аналогичного квадрату созданному вручную.  И не забудем объявить её:

procedure Kvadr(g,v:Integer);

и создаваемые ею объекты:

var

  Form1: TForm1;

  kvadrat: array[1..10,1..10] of TShape ; //клетки создаст программа

  До пробного запуска программы необходимо обеспечить скрытие созданного вручную квадрата. Это можно сделать вручную, изменив свойство:

 Shape1.Visible:= False;

Но мы это сделаем программно, вставив эту строку в начало процедуры перед циклами.

procedure TForm1.FormCreate(Sender: TObject);

var

i,k: integer;

begin

  Shape1.Visible:= False;

  for i:=1 to 10 do

  begin

 

Запустим программу и пощелкаем по квадратикам.

more.JPG

 

Завершим программу.

Для отображения задания и результатов расстановки нанесём на форму метки. Для этого вручную создадим одну метку. А необходимое количество создадим программно.

label.JPG  

 

Расположим её в стороне и будем использовать при отладке, впоследствии с ней поступим как с квадратом – скроем. (Для программного создания объектов на форме я создаю по одному вручную, а затем его скрываю, если кто знает, как сделать проще  -  прошу поделиться опытом.)

В тексте программы добавим процедуру программного создания и расстановки меток.

procedure TForm1.Metki(T:Integer);

var

L:byte ;

begin

  for L:=0 to 1 do

    //программное создание меток для поля боя

  begin

    summ_goris[T,L]:=TLabel.Create(self);

    summ_goris[T,L].Parent:= form1;

    summ_vetr [T,L]:=TLabel.Create(self);

    summ_vetr [T,L].Parent:= form1;

    summ_goris[T,L].Left:= 230 + 20 * L;

    summ_vetr [T,L].Left:= 8 + 20 * T;

    summ_goris[T,L].Top:= 5 + 20 * T;

    summ_vetr [T,L].Top:= 230 + 20 * L;

    summ_goris[T,L].Width:= 20;

    summ_vetr [T,L].Width:= 20;

    summ_goris[T,L].Height:= 20;

    summ_vetr [T,L].Height:= 20;

    summ_goris[T,L].Alignment:= taCenter;

    summ_vetr [T,L].Alignment:=taCenter;

    summ_goris[T,L].Caption:='0';

    summ_vetr [T,L].Caption:='0';

  end;

end;

Не забудем объявить процедуру и метки (аналогично квадратам).

Добавим в цикл вызов процедуры.

  for i:= 1 to 10 do

  begin

    for k:= 1 to 10 do

    begin

      Kvadr(i, k);

    end;

    Metki(i);

  end;

 

Оценку наших стараний будет выполнять следующая процедура.

procedure TForm1.Itog();

var

t,l:byte ;

summ_g,summ_v:integer;

 

begin

  //суммы по горизонтали

  for t:=1 to 10 do

  begin

    summ_g:=0;

    for l:=1 to 10 do

    begin

      if  kvadrat[t,l].Brush.Style =  bsDiagCross then

        summ_g:= summ_g + 1;

    end;

    summ_goris[t,1].Caption:= IntToStr(summ_g);

    if summ_goris[t,1].Caption = summ_goris[t,0].Caption then

      summ_goris[t,1].Color:= clLime

    else

      summ_goris[t,1].Color:= clBtnFace;

  end;

   //суммы по вертикали

  for l:=1 to 10 do

  begin

    summ_v:=0;

    for t:=1 to 10 do

    begin

      if  kvadrat[t,l].Brush.Style =  bsDiagCross then

        summ_v:= summ_v + 1;

    end;

    summ_vertik[l,1].Caption:= IntToStr(summ_v);

    if summ_vertik[l,1].Caption = summ_vertik[l,0].Caption then

      summ_vertik[l,1].Color:= clLime

    else

      summ_vertik[l,1].Color:= clBtnFace;

  end;

end;

Для работы с вариантами расстановки нанесём на форму текстовое поле (аналогично метке) и две кнопки для переноса:

·         задания из текстового поля в метки «задания»

·         в текстовое поле расстановки кораблей из меток «результат»

В тексте программы появляются следующие процедуры.

procedure TForm1.Button1Click(Sender: TObject);

var

i: integer;

text_:string;

begin

// переписыает скопированные из текстового файла

// для игры цифры

  text_:= Edit1.Text;

  for i:=1 to 10 do

  begin

    summ_goris[i,0].Caption:= text_[i];

    summ_vertik[i,0].Caption:= text_[i+10];

  end

 

end;

 

procedure TForm1.Button2Click(Sender: TObject);

var

i: integer;

text_:string;

begin

// переписыает результат расстановки

// для ручного сохранения

// в текстовом файле

  text_:= '';

  for i:=1 to 10 do

  begin

    text_:= text_+  summ_goris[i,1].Caption ;

  end;

  for i:=1 to 10 do

  begin

    text_:= text_+  summ_vertik[i,1].Caption ;

  end;

  Edit1.Text:= text_;

 

end;

 

Изменим программно вид формы.

procedure TForm1.FormCreate(Sender: TObject);

var

i,k: integer;

begin

  Form1.Caption:='Морская разведка';

  Form1.Width:= 280;

  Form1.Height:= 370;

  Edit1.Left:= 20;

  Edit1.Top:= 300;

  Edit1.Height:=20;

  Edit1.Width:=200;

  Edit1.Text:= 'Скопируйте сюда цифры задания';

  Shape1.Visible:= False;

  Label1.Visible:= False;

  Button1.Caption:=' Задание ';

  Button2.Caption:=' Результат';

  Button1.Left:= 20;

  Button2.Left:= 140;

  Button1.Top:= 270;

  Button2.Top:= 270;

  Button1.Width:= 80;

  Button2.Width:= 80;

  Button1.Height:= 25;

  Button2.Height:= 25;

  for i:= 1 to 10 do

  begin

    for k:= 1 to 10 do

    begin

      Kvadr(i, k);

    end;

    Metki(i);

  end;

end;

 

Остаётся для составления заданий:

·         расставить корабли

·         нажать на кнопку « Результат»

·         из текстового поля перенести цифры в текстовый редактор «Блокнот»

повторить это несколько раз с новой строки и сохранить файл с заданиями для игры.

 

Для игры:

·         скопировать любую строчку из созданного файла в текстовое поле

·         нажать на кнопку «Задание»

 

Успехов.

Категория: Исходники Delphi 7 | Добавил: Дед
Просмотров: 4817 | Загрузок: 0 | Рейтинг: 2.8/4
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]

Copyright MyCorp © 2025