Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Procedure TForm1.Button2Click(Sender: TObject); // кнопка «Проверить»




var b:byte; v,e:integer; // V‑значение ответа, E‑номер нецифрового символа

begin b:= 5; // начальное значение балловой оценки

Val(Edit1.Text,v,e); // перевод ответа из строки в числовую переменную V

If (e<>0) or ((H[1, 1] + H[1, 2]) <> v) then // введенная сумма ошибочная

begin b:= b - 1; // оценка уменьшается на один балл

Label9.Caption:=IntToStr(H[1, 1] + H[1, 2]); // вывод правильной суммы

end;

Val(Edit2.Text,v,e);

If (e<>0) or ((H[2, 1] - H[2, 2]) <> v) Then // введенная разность ошибочная

begin b:= b - 1; Label10.Caption:=IntToStr(H[2,1]-H[2, 2]); end;

Val(Edit3.Text,v,e);

If (e<>0) or ((H[3, 1] * H[3, 2]) <> v) Then // произведение ошибочно

begin b:= b - 1; Label11.Caption:=IntToStr(H[3,1]*H[3,2]); end;

Val(Edit4.Text,v,e);

If (e<>0) or ((H[4, 1] / H[4, 2]) <> v) Then // частное от деления ошибочно

begin b:= b - 1; Label12.Caption:=IntToStr(round(H[4,1]/H[4,2])); end;

Label13.Caption:= IntToStr(b); // вывод оценки в метку Label13

Timer1.Interval:= 0; // отключение счетчика времени

button1.Enabled:=True; // разблокировка кнопки «Тест»

button2.Enabled:=False; // блокировка кнопки «Проверить»

Edit1.Enabled:=False; Edit2.Enabled:=False; Edit3.Enabled:=False; Edit4.Enabled:=False; // блокировка полей ввода ответов

end;

Procedure TForm1.Button3Click(Sender: TObject); // кнопка «Выход»

begin form1.Close; end;

Procedure TForm1.Timer1Timer(Sender: TObject); // таймер

Begin // уменьшение на одну секунду, оставшегося на ответ времени

Label14.Caption:=IntToStr(StrToInt(Label14.Caption)-1); //если время на //ответ закончилось, то вызов процедуры обработки кнопки «Проверить»

If Label14.Caption = '0' Then Button2Click(Button2); end; // конец процедуры

Игра «Морской бой» (Delphi)

В форме размещена таблица размером 7 7; ей соответствует массив MK(7,7), в котором случайным образом помечены элементы со значением 1. Эти элементы задают местоположение кораблей в таблице, которые иг­рок должен потопить, щелкая мышкой по соответствующим ячейкам. Иг­рок должен задать число всех кораблей перед началом игры в поле SpinEdit1 («Число кораблей»).

Разместим компоненты: StringGrid1 (п. 2.3.2.4) (со свойствами: Enab­led=Fal­se, ColCount=7, RowCount=7, FixedRows=0, FixedCols=0), поля Edit1 (число потопленных кораблей), Edit2 (число выстрелов, Text=0, ReadOnly=True), счетчик SpinEdit1 (п. 2.3.6.4) (число кораблей, MinValue=1, MaxValue=49) и две командные кнопки.

 
 

Рис. 8.1.6.1. Вид формы игры «Морской бой»

 

Приведем тексты процедур обработки событий.

Var // раздел переменных модуля Unit1

mk:Array [0..6,0..6] of byte; // массив с признаками расположения кораблей

Procedure TForm1.Button1Click(Sender: TObject); // кнопка «Начало»

var i,j,k:integer; // обьявление переменных циклов

begin edit1.text:='0'; edit2.text:='0'; // обнуление значений полей edit1, edit2

k:=1; randomize; // включение счетчика случайных чисел

for i:=0 to 6 do // очистка массива (цикл по строкам)

for j:=0 to 6 do // цикл по колонкам

begin mk[i,j]:=0;StringGrid1.cells[i,j]:=''; end; // очистка текущей ячейки

while k<=SpinEdit1.Value do // цикл формирования положения кораблей

begin i:=random(7);j:=random(7); // формирование координат корабля

if mk[i,j]=0 then begin mk[i,j]:=1; k:=k+1;end; // пометка ячейки с кораблем

end; // конец цикла

StringGrid1.enabled:=true; // разрешение на использование таблицы

end;

Procedure TForm1.StringGrid1Click(Sender:TObject);// щелчок по таблице

begin edit2.text:=inttostr(strtoint(edit2.text)+1); // число выстрелов +1

if length(StringGrid1.cells[stringgrid1.Col,stringgrid1.row])=0 then

if mk[stringgrid1.col,stringgrid1.row]=1 then // попадание

begin StringGrid1.cells[stringgrid1.Col,stringgrid1.row]:='Потоплен';

edit1.text:=inttostr(strtoint(edit1.text)+1);// число потопленных кораблей+1

if SpinEdit1.Value=strtoint(edit1.text) then // все корабли потоплены

begin beep; Application.MessageBox('Победа!','Морской бой',MB_OK);

StringGrid1.enabled:=false; // блокировка таблицы

end;

end

else begin StringGrid1.cells[stringgrid1.col,stringgrid1.row]:='X';end;// промах

end;

Procedure TForm1.Button2Click(Sender: TObject); // кнопка «Выход»

begin Close; end; // завершение работы программы

Вывод диаграммы (Delphi)

 
 

Сформируем круговую диаграмму проданных товаров по типам в стоимостном выражении (рис. 8.1.7.1).

Рис. 8.1.7.1. Вид формы с диаграммой

 

Разместим пять полей (Edit1 - Edit5) для ввода объема продаж товаров по груп­пам (не все поля можно заполнять и поля с ошибками игнорируют­ся), три кнопки и компонент Chart1 с указанием типа диаграммы и ряда Se­ries1(п. 2.3.7.7). Приведем тексты процедур.

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...