Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Procedure TForm1.Button1Click(Sender: TObject); // кнопка «Тест»
var R:integer; // объявление переменной «R» begin Randomize; // включение счетчика случайных чисел Timer1.Interval:= 1000; // включение таймера с интервалом в одну секунду H[1, 1]:= Random(99) + 1; // первое слагаемое в интервале 1-100 H[1, 2]:= Random(99) + 1; // второе слагаемое в интервале 1-100 H[2, 1]:= Random(99) + 1; // уменьшаемое в интервале 1-100 H[2, 2]:= Random(99) + 1; // вычитаемое в интервале 1-100 If H[2, 2] > H[2, 1] Then // вычитаемое строго больше уменьшаемого Begin R:= H[2, 1]; H[2, 1]:= H[2, 2]; H[2, 2]:= R; End; // обмен H[3, 1]:= Random(9) + 1; // первый множитель в интервале 1-10 H[3, 2]:= Random(9) + 1; // второй множитель в интервале 1-10 H[4, 2]:= Random(9) + 1; // делитель в интервале 1-10 H[4, 1]:= round((Int(Random(9)) + 1) * H[4,2]); //делимое в интервале 1-100 Label1.Caption:= IntToStr(H[1, 1]); // вывод первого слагаемого в Label1 Label2.Caption:= IntToStr(H[2, 1]); // вывод уменьшаемого в Label2 Label3.Caption:= IntToStr(H[3, 1]); // вывод первого множителя в Label3 Label4.Caption:= IntToStr(H[4, 1]); // вывод делимого в метку Label4 Label5.Caption:= IntToStr(H[1, 2]); // вывод второго слагаемого в Label5 Label6.Caption:= IntToStr(H[2, 2]); // вывод вычитаемого в метку Label6 Label7.Caption:= IntToStr(H[3, 2]); // вывод второго множителя в Label7 Label8.Caption:= IntToStr(H[4, 2]); // вывод делителя в метку Label8 //очистка полей с ответами школьника и меток с правильными ответами Edit1.Text:= '0'; Edit2.Text:= '0'; Edit3.Text:= '0'; Edit4.Text:= '0'; Label9.Caption:= ''; Label10.Caption:= ''; Label11.Caption:=''; Label12.Caption:= ''; Label13.Caption:= ''; // очистка метки с оценкой Label14.Caption:='60'; // на ответ дается 60 секунд button1.Enabled:=False; // блокировка кнопки «Тест» button2.Enabled:=True; // разблокировка кнопки «Проверить» Edit1.Enabled:=True; Edit2.Enabled:=True; Edit3.Enabled:=True; Edit4.Enabled:=True; Edit1.SetFocus; // установка фокуса на поле Edit1 end; 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. Вид формы игры «Морской бой»
Приведем тексты процедур обработки событий.
|
||||||||
Последнее изменение этой страницы: 2017-02-08; просмотров: 316; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.226.222.12 (0.005 с.) |