DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Розрахункова робота з курсу «Об'єктно-орієнтоване програмування»

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Інститут комп’ютерних наук та інформаційних технологій
Факультет:
Факультет комп’ютерних наук
Кафедра:
Кафедра автоматизованих систем управління

Інформація про роботу

Рік:
2015
Тип роботи:
Розрахункова робота
Предмет:
Об’єктно-орієнтоване програмування
Група:
КН-30
Коротко про документ

Про що ця робота

У роботі розроблено проект мовою Delphi для створення рухомих графічних зображень. Реалізовано класи для імітації роботи автозаправної станції та руху автомобіля.

У роботі розглядаються

  • Об'єктно-орієнтоване програмування
  • Графіка в Delphi
  • Створення класів
  • Анімація об'єктів
  • Програмні модулі
  • Управління подіями

Зміст і розділи

  1. Завдання
  2. Аналіз методів та алгоритму
  3. Опис класів та об'єктів
  4. Текст програми
  5. Інструкція користувача
  6. Висновок
Для кого:Студенти технічних спеціальностей та викладачі
Викладачі:Викладач кафедри

Ключові поняття

Delphiкласоб'єктанімаціяполотнографікамодульметодінтерфейс

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ Національний університет «Львівська політехніка» Кафедра АСУ Розрахункова робота з курсу “Об'єктно орієнтоване програмування” Варіант 16 Тема Створення проекту з елементами графіки” ЗАВДАННЯ: Створити проект Delphi для побудови рухомих графічних зображень. Основні елементи зображення розглядати як об’єкти класів, які необхідно ввести та описати. Рух або зміну об’єктів реалізувати за допомогою відповідних методів класів. Рух більшості об’єктів здійснюється зліва направо, а тоді повторюється або змінює напрямок. Програма має реагувати на керуючі клавіші: 1) для видачі підказки; 2) для зупинки (паузи) та продовження руху; 3) старт із початкового стану; 4) збільшення-зменшення об’єкта; 5) уповільнення-прискорення руху; 6) завершення програми. Примітка. Опис класів та реалізацію методів виконати в окремому програмному модулі. Індивідуальне завдання: 16) Автозаправна станція заправляє. . Аналіз методів та алгоритмув виконнання завдання У даної задачі є безліч методів рішення. Проце свідчить навіть те що є безліч варіантів створення зображення кульки а саме її побудова чи прив’язки розмірів або координат. Хоча побудова класу не залежить від зовнішнього предствалення даних які містяться в класі оскільки воно формується реалізацією тих чи інших класів завданням яких є відображення інформації об’єкту. Опис класів та об’єктів В програмі створено три нові класи : TCar , TAZC, TScena. Текст Програми Zapravka; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; const MaxBak=150; MaxFuel=100; Type TCar=class private x,y:double; Length:integer; Height:integer; Fuel:double; public Fueled:boolean; constructor Create(x,y:double;Length,Height:integer;Fuel:double); procedure Go(dx:double); procedure Draw(Can:TCanvas); procedure Scale(Scale:double); function GetBakX:integer; function GetBackX:integer; function GetFuel:integer; end; TAZC=class private x,y:double; Height:integer; Fuel:double; ConLen:integer; public Connected:boolean; Disconnect:boolean; constructor Create(x,y:double;Height:integer;Fuel:double); procedure Draw(Can:TCanvas); procedure Scale(Scale:double); procedure LoadFuel(Load:integer); function StopX:integer; function GetFuel:integer; procedure DoConnectWith(tx:integer); procedure DoDisconnect; end; TScena=class public Changes:boolean; Stoped:boolean; CarFuelLoad:boolean; C:TCar; Wog:TAZC; GroundY:integer; Canvas:TCanvas; MaxX:integer; procedure Draw; procedure Scale(scale:double); constructor Create(Can:TCanvas;y:integer;MaxX:integer); end; implementation { TCar } constructor TCar.Create(x, y: double; Length,Height: integer;Fuel: double); begin Self.x:=x; Self.y:=y; Self.Length:=Length; Self.Height:=Height; Self.Fuel:=Fuel; Fueled:=false; end; procedure TCar.Draw(Can: TCanvas); var xi,yi,color:integer; begin xi:=round(x); yi:=round(y-Height/5); Can.Pen.Width:=3; Can.Font.Name:='Arial Black'; Can.Font.Size:=Height div 12; with Can do begin Arc(xi-Height,yi-Height,xi,yi,xi,yi-Height div 2,xi-Height div 2,yi-Height); color:=Brush.Color; Brush.Color:=$07F6FF; Rectangle(xi-Length,yi-Height div 2,xi,yi); Brush.Color:=$FF9E28; Rectangle(xi-Length,yi-Height,xi-Height div 2,yi-Height div 2); TextOut(xi-Length+round(Height*(0.2)),yi-Height+round(Height*(0.15)),'Купуй українське!'); Brush.Color:=Color; //колеса color:=Brush.Color; Brush.Color:=$0; Ellipse(xi-round(Height*(0.55)),yi-round(Height/4),xi-round(Height*(1/8)),round(y)); Ellipse(xi-Length+round(Height*(0.1)),yi-round(Height/4),xi-Length+round(Height*(0.55)),round(y)); Brush.Color:=$C4C4C4; Ellipse(xi-round(Height*(0.45)),yi-round(Height/7),xi-round(Height*(0.22)),round(y-Height*(0.1))); Ellipse(xi-Length+round(Height*(0.2)),yi-round(Height/7),xi-Length+round(Height*(0.45)),round(y-Height*(0.1))); Brush.Color:=Color; //------ Rectangle(xi-Length+round(Height*(0.8)),yi-round(Height*(0.4)),xi-Length+round(Height*(0.9)),round(yi-Height*(0.3))); Ellipse(xi-round(Height*(0.1)),yi-round(Height/3),xi-round(Height*(0.03)),yi-round(Height*(0.2))); end; end; function TCar.GetBackX: integer; begin result:=round(x-Length); end; function TCar.GetBakX: integer; begin result:=round(x-Length+round(Height*(0.85))); end; { function TCar.GetBakY: integer; begin result:=round(y-Height*(0.3)); end; } function TCar.GetFuel: integer; begin result:=round(Fuel); end; procedure TCar.Go(dx: double); begin x:=x+dx; end; procedure TCar.Scale(Scale: double); begin Length:=round(Length*scale); Height:=round(Height*scale); end; { TScena } constructor TScena.Create(Can:TCanvas;y:integer;MaxX:integer); begin Self.MaxX:=MaxX; Canvas:=Can; C:=TCar.Create(10,y,150,80,50); GroundY:=y; Wog:=TAZC.Create(MaxX div 2,y,80,100); C.Scale(2); Wog.Scale(2); end; procedure TScena.Draw; begin C.Draw(Canvas); Wog.Draw(Canvas); with Canvas do begin MoveTo(0,groundy); LineTo(MaxX,groundy); end; Changes:=false; end; procedure TScena.Scale(scale: double); begin C.Scale(scale); Wog.Scale(scale); end; { TAZC } constructor TAZC.Create(x, y: double; Height: integer; Fuel: double); begin Self.x:=x; Self.y:=y; Self.Height:=Height; Self.Fuel:=Fuel; Connected:=false; Disconnect:=true; end; procedure TAZC.DoConnectWith(tx: integer); begin ConLen:=ConLen+round(Height*0.02); if (ConLen+x)>tx then Connected:=true else Connected:=false; end; procedure TAZC.DoDisconnect; begin ConLen:=ConLen-round(Height*0.02); if (ConLen-1)<0 then Disconnect:=true; end; procedure TAZC.Draw(Can: TCanvas); var xi,yi:integer; color:TColor; Delta:double; begin xi:=round(x); yi:=round(y); With Can do begin Rectangle(round(xi-Height/2.2),round(yi-Height*2),round(xi-Height/5),round(yi)); Rectangle(round(xi-Height*1.6),round(yi-Height*2.3),round(xi+Height),round(yi-Height*1.8)); Font.Size:=round(Height*0.25); Font.Color:=$00FF00; TextOut(round(xi-Height*1.21),round(yi-Height*2.28),'WELCOME'); Font.Color:=$000000; Rectangle(round(xi),round(yi-Height*0.58),round(xi+ConLen),round(yi-Height*0.52)); Ellipse(round(xi-Height/10),round(yi-Height*0.65),round(xi+Height/9),round(yi-Height*0.47)); Rectangle(round(xi-Height/1.5),yi-Height,xi,yi); Rectangle(round(xi-Height/1.7),round(yi-Height/1.1),round(xi-Height/11),round(yi-Height/1.5)); Rectangle(round(xi-Height/1.7),round(yi-Height/1.6),round(xi-Height/2.2),round(yi-Height/5)); color:=Brush.Color; Brush.Color:=$68C0FF; Delta:=(Height/5-Height/1.6)*0.01*(MaxFuel-Fuel); Rectangle(round(xi-Height/1.7),round(yi-Height/1.6-Delta),round(xi-Height/2.2),round(yi-Height/5)); Brush.Color:=color; Font.Size:=round(Height*0.08); TextOut(round(xi-Height/2.78),round(yi-Height/1.74),'A95'); Arc(round(xi-Height/2.5),round(yi-Height/1.6),round(xi-Height/9),round(yi-Height/3),0,0,0,0); Font.Size:=round(Height/10); TextOut(round(xi-Height/2.5),round(yi-Height/1.15),IntToStr(100-round(Fuel))); end; end; function TAZC.GetFuel: integer; begin result:=round(Fuel); end; procedure TAZC.LoadFuel(Load: integer); begin if Fuel-Load>0 then Fuel:=Fuel-Load; end; procedure TAZC.Scale(Scale: double); begin Height:=round(Height*Scale); end; function TAZC.StopX: integer; begin result:=round(x+Height*0.5); end; end. Інструкція користувачеві програми. Щоб відкрити допомогу натисніть h 'Пробіл- зупинити/продовжити ‘+’ збільшення масштабу ‘-‘ зменшення масштабу BackSpace - програти з початку Скріншоти роботи програми:    Висновок: Знання графічних можливостей системи є невід’ємною частиною при побудові сучасних програмних вжитків, що дозволяє приваблювати клієнтів зовнішнім виглядом, тому використання лише стандартних компонентів призводить до одноманіності програм. Крім того Особливо цікавим є побудова анімації та динамічних зображень що забезпечує створення унікального інтерфейсу.
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!