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) (со свойствами: Enabled=False, 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 с указанием типа диаграммы и ряда Series1(п. 2.3.7.7). Приведем тексты процедур.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|