Procedure TForm1.Button1Click(Sender: TObject); // кнопка «Тест» 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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) (со свойствами: 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. Вид формы игры «Морской бой»

 

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



Поделиться:


Последнее изменение этой страницы: 2017-02-08; просмотров: 316; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.226.222.12 (0.005 с.)