КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
WithForm1.Image1.Canvasdo beginBegin Begin WithForm1.Image1.Canvasdo begin if (Vx = 0) and (Vy = 0) then Pen.Color:= RGB(0, 70, 0) else Pen.Color:= clBlack; Brush.Color:= Pen.Color; Pen.Width:= 5; MoveTo(GunPosition, 240);
LineTo(GunPosition + round(15 * sin(Angle * pi / 180)), 240 - round(15 * cos(Angle * pi / 180))); Pen.Width:= 1; Ellipse(GunPosition - 8, 232, GunPosition + 8, 248); Rectangle(GunPosition - 10, 240, GunPosition + 10, 260); end;
end;
Процедура DrawExplosion обеспечивает доступ к координатам снаряда.
procedure DrawExplosion(x, y, Phase: integer); var
i, xx, yy, Size: integer; a, b: double; with Form1.Image1.Canvas do for i:= 0 to Phase * 10 do begin a:= random * 2 * pi; b:= random * sqr(Phase) / 3 + 5; xx:= x + round(l * sin(a)); yy:= y + round(l * cos(a)); Size:= round(sqr(10 - Phase) / 8 + 2); Pen.Color:= RGB(random(100), 0, 0); Brush.Color:= Pen.Color; Ellipse(xx - random(Size) - 1, yy - random(Size) - 1, xx + random(Size), yy + random(Size)); end; end; Кроме того, пушка меняет цвет, когда готов очередной снаряд. В довершение, нужно соединить все написанное воедино. Процедуры рисования объединяются в процедуре, рисующей все поле боя: • небо, • шары, • пушка, • ядро, • бомба. Объединять все вместе обработчик таймера.
procedure DrawBattleField; var
i: integer; begin
with Form1.Image1.Canvas do for i:= 0 to 259 do Pen.Color:= RGB(i div 2, i div 2, 255); MoveTo(0, i); LineTo(440, i); end; for i:= 0 to BallCount - 1 do with Balloons[i] do if Explosion = 0 then DrawBalloon(x, 260 - y, Color) else if Explosion < 10 then DrawExplosion(x, 260 - y, Explosion); if GunExplosion = 0 then DrawGun else if GunExplosion < 10 then DrawExplosion(GunPosition,240, GunExplosion); Pen.Color:= clMaroon; Brush.Color:= clRed;
if (Vx <> 0) or (Vy <> 0) then Ellipse(round(x) - 2, 260 - round(y) - 2, round(x) + 3, 260 -round(y) + 3); if (BombY <> 1000) then Ellipse(GunPosition - 2, 260 - round(BombY) - 2, GunPosition + 3,260 - round(BombY) + 3); end;
end;
procedure TForm1.Timer1Timer(Sender: TObject); begin
MoveAll; CheckCollisions; DrawBattleField;
end;
Рис. 64. Практическая работа № 19 «Тест»
Цель работы -создать программу,которая тестирует учащегося по информатике иматематике.
Проект должен содержать последовательность форм, реализующих диалог с тестируемым учащимся. На первой форме происходит регистрация учащегося.
Рис. 65.
Фрагмент программы (unit1): uses Unit2;
{$R *.dfm}
procedure TForm1.Button2Click(Sender: TObject); begin
Close; end;
procedure TForm1.Button1Click(Sender: TObject); begin
Form2.Label3.Caption:=Form1.Edit1.Text; Form2.ShowModal; end;
На второй форме предлагается выбрать один из тестов.
Рис. 66.
Фрагмент программы (unit2):
uses Unit3, Unit6;{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject); begin
Form3.ShowModal; end; procedure TForm2.Button2Click(Sender: TObject); begin
Form2.Close; end;
procedure TForm2.Button3Click(Sender: TObject); begin
Form6.Edit2.Text:=''; Form6.ShowModal; end;
На третьей форме предлагается проути тест по информатике.
Рис. 67.
Фрагмент программы (unit3): uses Unit4, Unit2;
{$R *.dfm}
procedure TForm3.Button1Click(Sender: TObject); begin
k:=0; if (Form3.Edit1.Text='монитор') or (Form3.Edit1.Text='Монитор') or (Form3.Edit1.Text='МОНИТОР') then k:=k+1; if (Form3.Edit2.Text='Клавиатура') or (Form3.Edit2.Text='клавиатура') or (Form3.Edit2.Text='КЛАВИАТУРА') then k:=k+1;
if Form3.Edit3.Text='8' then k:=k+1;Form4.Label2.Caption:=IntToStr(k); if k=0 then Form4.Label1.Caption:='Очень плохо' else if k=1 then Form4.Label1.Caption:='Плохо' else if k=2 then Form4.Label1.Caption:='Хорошо' else if k=3 then Form4.Label1.Caption:='Очень хорошо'; Form3.Edit1.Text:=''; Form3.Edit2.Text:=''; Form3.Edit3.Text:=''; Form4.ShowModal; end;
procedure TForm3.Button2Click(Sender: TObject); begin
Form3.Close; end;
На следующей форме отображается результат тестирования и предложение о промотре ответа.
Рис. 68.
Фрагмент программы (unit4): uses Unit1, Unit5, Unit3, Unit2; {$R *.dfm}
procedure TForm4.Button2Click(Sender: TObject); begin
Form4.Close; end;
procedure TForm4.Button1Click(Sender: TObject); begin
Form4.Close; Form3.Close; end;
procedure TForm4.Button3Click(Sender: TObject); begin
Form5.ShowModal; end;
На следующей форме отображаются правильные ответы.
Рис. 69.
Фрагмент программы (unit5): uses Unit4, Unit3, Unit2, Unit1; {$R *.dfm}
procedure TForm5.Button1Click(Sender: TObject); begin
Form4.Close; Form3.Close; Form2.Close; Form1.Close;
Form5.Close; end;
Если учащийся выбрал тест по математике, то ему предлагается проверить свои знания таблицы умножения. На следующей форме случайным образом выбираются числа. Учащийся должен ввести значение произведения в текстовое поле. С помощью кнопки «проверка» выясняется правильность введенного ответа. Если ответ правильный, то можно сгенерировать следующий пример. После нескольких примеров можно проверить свой рейтинг.
Рис. 70.
Фрагмент программы (unit6): uses Unit7, Unit1;
{$R *.dfm}
procedure TForm6.Button1Click(Sender: TObject); var n,i:integer;
begin randomize;
a:=random(10)-0; b:=random(10)-0; Form6.Label1.Caption:=IntToStr(a); Form6.Label2.Caption:=IntToStr(b); Form6.Edit2.Text:=''; Form6.Label6.Caption:='';
end;
procedure TForm6.Button2Click(Sender: TObject); begin
if (a*b=StrToInt(Form6.Edit2.Text)) then begin Form6.Label6.Caption:='Правильно'; m:=m+1;
r:=r+1; q:=q+1; end
Дата добавления: 2017-02-01; Просмотров: 67; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |