Systemy wirtualnej rzeczywistości. Komponenty i serwisy
|
|
- Przybysław Madej
- 9 lat temu
- Przeglądów:
Transkrypt
1 Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Systemy wirtualnej rzeczywistości Laboratorium Komponenty i serwisy Wstęp: W trzeciej części przedstawione zostaną podstawowe techniki obsługi modeli 3D oraz komponentowy sposób tworzenia aplikacji. Zaprezentowane zostaną wbudowane mechanizmy komponentów (GameComponent) i serisów (Services). 1. Wczytanie modelu XNA posiada wygodną klasę do reprezentacji modeli 3D, które mogą się składać z wielu siatek, z przypisanymi wieloma materiałami, efektami, animacjami oraz hierarchią. Posiada również gotowe importery z plików X oraz FBX. Postępując analogicznie do ładowania tekstury trawy załadujemy teraz model czołgu (czolg.fbx). Tworzymy obiekt typu Model: Model czolg; Dodajemy plik czolg.fbx do projektu i w LoadContent wczytujemy go do zmiennej czolg. czolg = Content.Load<Model>("czolg"); 2. Rysowanie modelu Przechodzimy do metody Draw. Poniżej kodu rysowania terenu umieścimy kod rysowania modelu czołgu. Model ten składa się z dwóch siatek ( korpus i wiezyczka ). Każda siatka ma przypisany własny zestaw efektów. W naszym przypadku wszystkie siatki będą miały po jednym efekcie, ale utworzymy pętlę dla przypadku, w którym miałyby ich więcej. W pierwszym kroku tworzymy tablice transformacji, która zawiera transformacje dla każdej siatki. Jeśli nie uwzględnimy tych transformacji poszczególne siatki będą rysowane w początku lokalnego układu współrzędnych modelu zamiast w odpowiednim dla siebie 1
2 miejscu. Następnie ustawiamy macierze świata, widoku i projekcji dla każdego efektu każdej siatki wczytanego modelu. Macierze widoku i projekcji pozostawiamy bez zmian, natomiast macierzy świata przypisujemy wartości pobrane przed chwilą do tablicy. Dodatkowo wymnożymy je przez macierz skalowania ponieważ wczytany model jest zdecydowanie za duży względem naszego terenu. Użyjemy współczynnika skalowania równego Ponieważ nie wprowadziliśmy żadnego oświetlenia dodatkowo włączymy oświetlenie domyślne poprzez metodę EnableDefaultLighting. Na samym końcu rysujemy model metodą Draw dla każdej siatki. Matrix[] transformacje = new Matrix[czolg.Bones.Count]; czolg.copyabsolutebonetransformsto(transformacje); foreach (ModelMesh mesh in czolg.meshes) foreach (BasicEffect effect in mesh.effects) effect.enabledefaultlighting(); effect.view = widok; effect.projection = projekcja; effect.world = transformacje[mesh.parentbone.index] * Matrix.CreateScale(0.07f); mesh.draw(); Wynikiem powinien być obraz jak na rys. 1. Rys. 1 - Model czołgu 2
3 3. Komponenty i serwisy Nadszedł czas na uporządkowanie kodu. Stworzymy trzy komponenty reprezentujące odpowiednio kamerę, teren i gracza. Wykorzystamy do tego wbudowany mechanizm obsługi komponentów. Komponent jest reprezentowany przez klasę GameComponent (lub DrawableGameComponent w przypadku gdy komponent będzie rysowany). Łatwo można zauważyć, że część komponentów będzie wymagać dostępu do innych komponentów lub zmiennych z klasy głównej. Przykładem może tu być komponent terenu, który będzie potrzebował dostępu do komponentu kamery w celu prawidłowego ustawienia macierzy widoku. Eleganckim rozwiązaniem tego problemu są serwisy (Services). Umożliwiają one udostępnienie potrzebnych obiektów dowolnym komponentom. Praktyczne działanie komponentów i serwisów zostanie przedstawione poniżej. 3.1 Kamera Pierwszym komponentem będzie kamera. Tworzymy nowy komponent (Add->New Item..., wybieramy Game Component i nadajemy mu odpowiednią nazwę). W klasie kamery będziemy przechowywać informacje o jej położeniu i punkcie, na który jest zwrócona oraz parametry projekcji. Deklarujemy odpowiednie zmienne: Vector3 pozycja; Vector3 cel; float polewidzenia; float proporcjeobrazu; float bliskaplaszczyzna; float dalekaplaszczyzna; Następnie dodajemy właściwości do pobierania i ustawiania pozycji i celu: public Vector3 Pozycja get return pozycja; set pozycja = value; public Vector3 Cel get return cel; set cel = value; Udostępniamy macierz projekcji, korzystając z metody CreatePerspectiveFieldOfView klasy Matrix: 3
4 public Matrix Projekcja get return Matrix.CreatePerspectiveFieldOfView(poleWidzenia, proporcjeobrazu, bliskaplaszczyzna, dalekaplaszczyzna); Udostępniamy macierz widoku, korzystając z metody CreatLookAt: public Matrix Widok get return Matrix.CreateLookAt(pozycja, cel, Vector3.Up); Na koniec dodamy metodę do wprowadzenia parametrów projekcji: public void UstawProjekcje(float polewidzenia, float proporcjeobrazu, float bliskaplaszczyzna, float dalekaplaszczyzna) this.polewidzenia = polewidzenia; this.proporcjeobrazu = proporcjeobrazu; this.bliskaplaszczyzna = bliskaplaszczyzna; this.dalekaplaszczyzna = dalekaplaszczyzna; 3.2 Teren Następnym komponentem będzie Teren. Większość potrzebnego kodu jest już napisana. Tworzymy zatem nowy komponent i nadajemy mu odpowiednią nazwę. W przeciwieństwie do kamery teren będzie rysowany więc zmieniamy dziedziczenie z GameComponent na DrawableGameComponent. Deklarujemy potrzebne zmienne: VertexBuffer wierzcholki; IndexBuffer indeksy; BasicEffect basiceffect; Texture2D tekstura; Następnie tworzymy konstruktor, w którym wywołujemy metodę StworzTeren i ustawiamy parametry efektu (do tego będziemy potrzebowali urządzenie renderujące, do którego odwołujemy się poprzez Services później stworzymy ten serwis w klasie głównej) i tekstury: 4
5 public Teren(Game game, Texture2D tekstura, float rozmiar, float rozmiartekstury) : base(game) this.tekstura = tekstura; StworzTeren(rozmiar, rozmiartekstury); GraphicsDevice urzadzenie = (GraphicsDevice)Game.Services.GetService(typeof(GraphicsDevice)); basiceffect = new BasicEffect(urzadzenie, null); basiceffect.textureenabled = true; basiceffect.texture = tekstura; Przenosimy metodę StworzTeren z klasy głównej do klasy Teren. Dodajemy odwołanie do urządzenia poprzez serwis. Ponadto tym razem metoda pobiera dwa parametry (skala i skalatekstury) oraz nastąpiła drobna zmiana nazw buforów (z terenwierzcholki na wierzcholki oraz z terenindeksy na indeksy). Na koniec musimy zadbać o rysowanie terenu. Tutaj również wykorzystamy gotowy już kod, lekko go modyfikując. Ponownie odwołujemy się do serwisów. W tym przypadku odwołamy się również do kamery aby rysować teren z uwzględnieniem położenia kamery. public override void Draw(GameTime gametime) GraphicsDevice urzadzenie = (GraphicsDevice)Game.Services.GetService(typeof(GraphicsDevice)); Kamera kamera = (Kamera)Game.Services.GetService(typeof(Kamera)); basiceffect.projection = kamera.projekcja; basiceffect.view = kamera.widok; basiceffect.world = Matrix.Identity; basiceffect.begin(); urzadzenie.vertexdeclaration = new VertexDeclaration(urzadzenie, VertexPositionTexture.VertexElements); urzadzenie.vertices[0].setsource(wierzcholki, 0, VertexPositionTexture.SizeInBytes); urzadzenie.indices = indeksy; basiceffect.techniques[0].passes[0].begin(); urzadzenie.drawindexedprimitives(primitivetype.trianglelist, 0, 0, 4, 0, 2); basiceffect.techniques[0].passes[0].end(); basiceffect.end(); base.draw(gametime); 5
6 3.3 Gracz Ostatnim komponentem będzie Gracz. Tworzymy zatem komponent i deklarujemy odpowiednie zmienne. W przyszłości będziemy chcieli sterować czołgiem dlatego dodamy również zmienne opisujące rotację korpusu czołgu i jego wieżyczki. Poza tym stworzymy właściwości dla pozycji i rotacji: Vector3 pozycja; float rozmiar; float rotacjakorpusu; float rotacjawiezyczki; Model model; public Vector3 Pozycja get return pozycja; set pozycja = value; public float Rotacja get return rotacjakorpusu; Następnie tworzymy konstruktor: public Gracz(Game game, Model model, float rozmiar) : base(game) this.model = model; this.rozmiar = rozmiar; Dodajemy metodę do ustawiania rotacji czołgu i wieżyczki: public void UstawRotacje(float rotacjakorpusu, float rotacjawiezyczki) this.rotacjakorpusu = rotacjakorpusu; this.rotacjawiezyczki = rotacjawiezyczki; Na koniec dodajemy rysowanie czołgu. Również tutaj wykorzystamy napisany już kod wprowadzając jedynie drobne zmiany analogiczne do rysowania terenu. Jedyna poważna zmiana polega na uwzględnieniu położenia i rotacji gracza względem globalnego układu współrzędnych oraz obliczaniu dodatkowej transformacji dla siatki wieżyczki. Umożliwi nam to obracanie jej niezależnie od korpusu. 6
7 public override void Draw(GameTime gametime) GraphicsDevice urzadzenie = (GraphicsDevice)Game.Services.GetService(typeof(GraphicsDevice)); Kamera kamera = (Kamera)Game.Services.GetService(typeof(Kamera)); Matrix[] transformacje = new Matrix[model.Bones.Count]; model.copyabsolutebonetransformsto(transformacje); foreach (ModelMesh mesh in model.meshes) Matrix swiat = Matrix.CreateScale(rozmiar) * Matrix.CreateRotationY(rotacjaKorpusu) * Matrix.CreateTranslation(pozycja); if (mesh.name == "korpus") swiat = transformacje[mesh.parentbone.index] * swiat; if (mesh.name == "wiezyczka") swiat = Matrix.CreateRotationZ(rotacjaWiezyczki) * transformacje[mesh.parentbone.index] * swiat; foreach (BasicEffect effect in mesh.effects) effect.enabledefaultlighting(); effect.projection = kamera.projekcja; effect.view = kamera.widok; effect.world = swiat; mesh.draw(); base.draw(gametime); 3.4 Zmiany w klasie głównej Pozostało jedynie zaktualizować klasę główną. Zaczniemy od deklaracji nowoutworzonych komponentów: Kamera kamera; Teren teren; Gracz gracz; Przejdźmy do LoadContent. Pierwszą zmianą jaką tu wprowadzimy będzie dodanie serwisu udostępniającego urządzenie renderujące. Wczytywanie tekstury trawy i modelu czołgu pozostawimy bez zmian. protected override void LoadContent() spritebatch = new SpriteBatch(GraphicsDevice); 7
8 trawa = Content.Load<Texture2D>("trawa"); czolg = Content.Load<Model>("czolg"); Services.AddService(typeof(GraphicsDevice), graphics.graphicsdevice); Następnie tworzymy kamerę, dodajmy ją do listy komponentów i udostępnijmy ją jako serwis: kamera = new Kamera(this); kamera.ustawprojekcje(mathhelper.toradians(50), graphics.graphicsdevice.viewport.aspectratio, 0.1f, f); kamera.pozycja = new Vector3(13.0f, 15.0f, 8.0f); Services.AddService(typeof(Kamera), kamera); Components.Add(kamera); Tworzymy teren i również dodajemy go do listy komponentów: teren = new Teren(this, trawa, 10.0f, 10.0f); Components.Add(teren); Ostatnim komponentem, który dodamy jest Gracz. Na koniec skierujemy kamerę na czołg ustawiając współrzędne czołgu jako celu kamery. gracz = new Gracz(this, czolg, 0.02f); gracz.pozycja = new Vector3(5.0f, 0.0f, -3.0f); gracz.ustawrotacje(0.0f, 0.0f); Components.Add(gracz); kamera.cel = gracz.pozycja; Usuwamy wcześniej dodaną zawartość metody Draw. Dzięki temu, że dodaliśmy nasze komponenty do listy komponentów nie musimy umieszczać w metodzie Draw żadnych dodatkowych odwołań do metod rysujących. Polecenie base.draw(gametime) spowoduje wywołanie metod Draw wszystkich komponentów na liście. protected override void Draw(GameTime gametime) graphics.graphicsdevice.clear(color.cornflowerblue); base.draw(gametime); 8
9 Wynikiem uruchomienia aplikacji powinien być obraz jak na rys. 2. Rys. 2 - Działająca aplikacja 9
Systemy wirtualnej rzeczywistości. Podstawy grafiki 3D
Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Systemy wirtualnej rzeczywistości Laboratorium Podstawy grafiki 3D Wstęp: W drugiej części przedstawione zostaną podstawowe mechanizmy
Bardziej szczegółowoSystemy wirtualnej rzeczywistości. Sterowanie i wykrywanie kolizji
Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Systemy wirtualnej rzeczywistości Laboratorium Sterowanie i wykrywanie kolizji Wstęp: W czwartej części przedstawione zostaną mechanizmy
Bardziej szczegółowoRozdział 4 Komponenty gry na przykładzie prostopadłościanu
Rozdział 4 Komponenty gry na przykładzie prostopadłościanu Wersja z 2014-03-21 Budowanie gry, nawet stosunkowo prostej, to spore wyzwanie dla programisty. Bardzo łatwo zgubić się w dużej ilości linii kodu
Bardziej szczegółowoProgramowanie telefonów z Windows Phone 7, cz. 3
Programowanie telefonów z Windows Phone 7, cz. 3 Piotr M. Szczypiński Instytut Elektroniki Politechniki Łódzkiej http://www.eletel.p.lodz.pl/pms/ piotr.szczypinski@p.lodz.pl Budynek B9, II piętro, pokój
Bardziej szczegółowoProgramowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych
Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych Obiekty reprezentują pewne pojęcia, przedmioty, elementy rzeczywistości. Obiekty udostępniają swoje usługi: metody operacje,
Bardziej szczegółowoProgramowanie obiektowe
Laboratorium z przedmiotu Programowanie obiektowe - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia.
Bardziej szczegółowoProgramowanie obiektowe
Laboratorium z przedmiotu - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia. Wprowadzenie teoretyczne.
Bardziej szczegółowoPolitechnika Poznańska, Instytut Informatyki, SUM-TWO
Politechnika Poznańska, Instytut Informatyki, SUM-TWO 11 kwietnia 2015 Historia DirectX Gry pod DOS korzystały z własnych bibliotek graficznych. Pierwsze wersje Windows umożliwiały tworzenie grafiki tylko
Bardziej szczegółowoUnity 2D - prosta gra
www.math.uni.lodz.pl/ radmat Cel ćwiczeń Celem bieżących ćwiczeń jest stworzenie prostej gry 2D. Prosta gra Stworzymy prostą grę, w której będziemy sterować pojazdem kosmicznym i będziemy mogli strzelać
Bardziej szczegółowoxmlns:prism=http://www.codeplex.com/prism c. <ContentControl prism:regionmanager.regionname="mainregion" />
1 Tworzenie Shella a. W pierwszej kolejności tworzymy nowy projekt: WPF Application. Name: Shell SolutionName: PrismApp b. Dodajemy bibliotekę PRISM za pomocą NuGet Managera (dla.net Framework 4.5 Prism
Bardziej szczegółowoPrzykładowa dostępna aplikacja w Visual Studio - krok po kroku
Przykładowa dostępna aplikacja w Visual Studio - krok po kroku Zadaniem poniższego opisu jest pokazanie, jak stworzyć aplikację z dostępnym interfejsem. Sama aplikacja nie ma konkretnego zastosowania i
Bardziej szczegółowoKlasy i obiekty cz II
Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Klasy i obiekty cz II Hermetyzacja, mutatory, akcesory, ArrayList Rozwijamy aplikację Chcemy, aby obiekty klasy
Bardziej szczegółowoCzęść XVII C++ Funkcje. Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład.
Część XVII C++ Funkcje Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład. 2 3 Tworzymy deklarację i definicję funkcji o nazwie pobierzln() Funkcja
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć
Bardziej szczegółowoWYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.
WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM NetBeans Wykonał: Jacek Ventzke informatyka sem. VI 1. Uruchamiamy program NetBeans (tu wersja 6.8 ) 2. Tworzymy
Bardziej szczegółowoCiekawym rozwiązaniem służącym do obsługi zdarzeń dla kilku przycisków w ramach jednej aktywności może być następujący kod:
1. Listener dla przycisku. Ciekawym rozwiązaniem służącym do obsługi zdarzeń dla kilku przycisków w ramach jednej aktywności może być następujący kod: W linii 24 tworzymy globalną metodę mglobal_onclicklistener,
Bardziej szczegółowoWykład 8: klasy cz. 4
Programowanie obiektowe Wykład 8: klasy cz. 4 Dynamiczne tworzenie obiektów klas Składniki statyczne klas Konstruktor i destruktory c.d. 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD
Bardziej szczegółowoKlasy i obiekty cz I Klasy, obiekty, podstawy używania obiektów
Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Klasy i obiekty cz I Klasy, obiekty, podstawy używania obiektów Obiekty W codziennym życiu mamy do czynienia z
Bardziej szczegółowoWskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.
Część XXII C++ w Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie. Ćwiczenie 1 1. Utwórz nowy projekt w Dev C++ i zapisz go na
Bardziej szczegółowoProjekt Hurtownia, realizacja skojarzeń dostawców i produktów
niżej. Projekt Hurtownia, realizacja skojarzeń dostawców i produktów W bazie danych HurtowniaSP istnieją tabele Dostawcy oraz Produkty, ich definicje przypomniane są W bazie zdefiniowano także tabelę DostawcyProdukty,
Bardziej szczegółowoUniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Ćwiczenie 3 stos Laboratorium Metod i Języków Programowania
Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Ćwiczenie 3 stos Laboratorium Metod i Języków Programowania Celem ćwiczenia jest zapoznanie studentów z najprostszą dynamiczną strukturą
Bardziej szczegółowoStudia Podyplomowe Grafika Komputerowa i Techniki Multimedialne, 2017, semestr II Modelowanie 3D - Podstawy druku 3D. Ćwiczenie nr 4.
Ćwiczenie nr 4 Metaobiekty 1 Materiały ćwiczeniowe Wszelkie materiały ćwiczeniowe: wykłady, instrukcje oraz ewentualne pliki ćwiczeniowe dla potrzeb realizacji materiału dydaktycznego z przedmiotu Modelowanie
Bardziej szczegółowoPodstawy programowania, Poniedziałek , 8-10 Projekt, część 1
Podstawy programowania, Poniedziałek 30.05.2016, 8-10 Projekt, część 1 1. Zadanie Projekt polega na stworzeniu logicznej gry komputerowej działającej w trybie tekstowym o nazwie Minefield. 2. Cele Celem
Bardziej szczegółowoUML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.
UML a kod w C++ i Javie Projektowanie oprogramowania Dokumentowanie oprogramowania Diagramy przypadków użycia Przewoznik Zarzadzanie pojazdami Optymalizacja Uzytkownik Wydawanie opinii Zarzadzanie uzytkownikami
Bardziej szczegółowoDruga aplikacja Prymitywy, alpha blending, obracanie bitmap oraz mały zestaw przydatnych funkcji wyświetlających własnej roboty.
Przyszedł czas na rysowanie własnych figur, czyli prymitywy, obracanie bitmap, oraz alpha blending-czyli półprzezroczystość. Będę opisywał tylko rzeczy nowe-nie ma potrzeby abym się powtarzał. Zaczynajmny
Bardziej szczegółowo1. Prymitywy graficzne
1. Prymitywy graficzne Prymitywy graficzne są elementarnymi obiektami jakie potrafi bezpośrednio rysować, określony system graficzny (DirectX, OpenGL itp.) są to: punkty, listy linii, serie linii, listy
Bardziej szczegółowoAplikacje WWW - laboratorium
Aplikacje WWW - laboratorium JavaServer Faces Celem ćwiczenia jest przygotowanie aplikacji internetowej z wykorzystaniem technologii JSF. Prezentowane ćwiczenia zostały wykonane w środowisku Oracle JDeveloper
Bardziej szczegółowoTechniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.
Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni Wykład 3 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Abstrakcja funkcyjna Struktury Klasy hermetyzacja
Bardziej szczegółowoArchitektura interfejsu użytkownika
Uniwersytet Jagielloński Interfejsy graficzne Wykład 3 Architektura interfejsu użytkownika Barbara Strug 2011 Hall of shame Hall of Shame Hall of Fame O czym dzisiaj Model Widok- Kontroler Hierarchia widoków
Bardziej szczegółowo1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1
1 LINQ 1 1. Cel zajęć Celem zajęć jest zapoznanie się z technologią LINQ oraz tworzeniem trójwarstwowej aplikacji internetowej. 2. Zadanie Proszę przygotować aplikację WWW, która: będzie pozwalała na generowanie
Bardziej szczegółowoSkalowanie i ustawianie arkuszy/układów wydruku w AutoCAD autor: M. Motylewicz, 2012
1 z 72 Rysunek rysujemy w skali rzeczywistej tzn. jeżeli pas ruchu ma szerokość 3,5m to wpisujemy w AutoCAD: 3,5 jednostki (mapa oczywiście również musi być wstawiona w skali 1:1). Opisany w dalszym ciągu
Bardziej szczegółowoWykład 4: Klasy i Metody
Wykład 4: Klasy i Metody Klasa Podstawa języka. Każde pojęcie które chcemy opisać w języku musi być zawarte w definicji klasy. Klasa definiuje nowy typ danych, których wartościami są obiekty: klasa to
Bardziej szczegółowoGry Komputerowe Laboratorium 4. Teksturowanie Kolizje obiektów z otoczeniem. mgr inż. Michał Chwesiuk 1/29. Szczecin, r
Gry Komputerowe Laboratorium 4 Teksturowanie Kolizje obiektów z otoczeniem mgr inż. Michał Chwesiuk 1/29 Klasa Stwórzmy najpierw klasę TextureManager, która będzie obsługiwała tekstury w projekcie. 2/29
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Wykład 2 Marcin Młotkowski 4 marca 2015 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 47 Krótki opis C Obiektowy, z kontrolą typów; automatyczne odśmiecanie;
Bardziej szczegółowoKurs WWW. Paweł Rajba. pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/
Paweł Rajba pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/ Spis treści Wprowadzenie Automatyczne ładowanie klas Składowe klasy, widoczność składowych Konstruktory i tworzenie obiektów Destruktory i
Bardziej szczegółowoProgramowanie komputerowe. Zajęcia 7
Programowanie komputerowe Zajęcia 7 Klasy Klasy to typy danych, które pozwalają na zgromadzenie w jednej zmiennej (obiekcie) zarówno danych jak i operacji związanych z tymi danymi. Obiekt danej klasy może
Bardziej szczegółowoPHP: bloki kodu, tablice, obiekty i formularze
1 PHP: bloki kodu, tablice, obiekty i formularze SYSTEMY SIECIOWE Michał Simiński 2 Bloki kodu Blok if-else Switch Pętle Funkcje Blok if-else 3 W PHP blok if i blok if-else wyglądają tak samo i funkcjonują
Bardziej szczegółowoZad. 6: Sterowanie robotem mobilnym
Zad. 6: Sterowanie robotem mobilnym 1 Cel ćwiczenia Utrwalenie umiejętności modelowania kluczowych dla danego problemu pojęć. Tworzenie diagramu klas, czynności oraz przypadków użycia. Wykorzystanie dziedziczenia
Bardziej szczegółowoJava: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak
Java: otwórz okienko Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU klasy wewnętrzne, lokalne i anonimowe biblioteka AWT zestaw Swing JFrame JPanel komponenty obsługa zdarzeń
Bardziej szczegółowoTemat: Transformacje 3D
Instrukcja laboratoryjna 11 Grafika komputerowa 3D Temat: Transformacje 3D Przygotował: dr inż. Grzegorz Łukawski, mgr inż. Maciej Lasota, mgr inż. Tomasz Michno 1 Wstęp teoretyczny Bardzo często programując
Bardziej szczegółowoPLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),
PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ), Program 351203 Opracowanie: Grzegorz Majda Tematyka zajęć 2. Przygotowanie środowiska pracy
Bardziej szczegółowoJęzyk C++ zajęcia nr 2
Język C++ zajęcia nr 2 Inicjalizacja Definiowanie obiektu może być połączone z nadaniem mu wartości początkowej za pomocą inicjalizatora, który umieszczany jest po deklaratorze obiektu. W języku C++ inicjalizator
Bardziej szczegółowoDynamiczne i wydajne tworzenie interfejsu. Piotr Michałkiewicz
Dynamiczne i wydajne tworzenie interfejsu użytkownika Piotr Michałkiewicz Główne punkty prezentacji View i ViewGroup w kodzie OnClick() i Tag Space widget i GridLayout Dynamiczne dodawanie widgetów Animations
Bardziej szczegółowoInformatyka II. Laboratorium Aplikacja okienkowa
Informatyka II Laboratorium Aplikacja okienkowa Założenia Program będzie obliczał obwód oraz pole trójkąta na podstawie podanych zmiennych. Użytkownik będzie poproszony o podanie długości boków trójkąta.
Bardziej szczegółowoProgramowanie strukturalne i obiektowe. Funkcje
Funkcje Często w programach spotykamy się z sytuacją, kiedy chcemy wykonać określoną czynność kilka razy np. dodać dwie liczby w trzech miejscach w programie. Oczywiście moglibyśmy to zrobić pisząc trzy
Bardziej szczegółowoLab 9 Podstawy Programowania
Lab 9 Podstawy Programowania (Kaja.Gutowska@cs.put.poznan.pl) Wszystkie kody/fragmenty kodów dostępne w osobnym pliku.txt. Materiały pomocnicze: Wskaźnik to specjalny rodzaj zmiennej, w której zapisany
Bardziej szczegółowoRozdział 4 KLASY, OBIEKTY, METODY
Rozdział 4 KLASY, OBIEKTY, METODY Java jest językiem w pełni zorientowanym obiektowo. Wszystkie elementy opisujące dane, za wyjątkiem zmiennych prostych są obiektami. Sam program też jest obiektem pewnej
Bardziej szczegółowoUnity 3D - podpowiedzi w grze. System cząstek
www.math.uni.lodz.pl/ radmat Cel ćwiczeń Celem bieżących ćwiczeń jest dodanie podpowiedzi, które będą się wyświetlały nad przedmiotami, a także systemu cząstek. Wyświetlanie podpowiedzi Dodamy teraz do
Bardziej szczegółowoKurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016
Wykład 1 3 marca 2016 Słowa kluczowe języka Java abstract, break, case, catch, class, const, continue, default, do, else, enum, extends, final, finally, for, goto, if, implements, import, instanceof, interface,
Bardziej szczegółowo2) W wyświetlonym oknie należy zaznaczyć chęć utworzenia nowej aplikacji (wygląd okna może się różnić od powyższego); kliknąć OK
Zaawansowane aplikacje internetowe EJB 2 Celem tego laboratorium jest pokazanie, w jaki sposób aplikacje stworzone w różnych technologiach mogą korzystać z funkcjonalności udostępnianej przez komponenty
Bardziej szczegółowoPodstawy Swing. Tomasz Borzyszkowski
Podstawy Swing Tomasz Borzyszkowski Wprowadzenie Już Java 1.0 zawierała bibliotekę AWT (Abstract Window Toolkit) służącą do oprogramowania GUI. Kolejne wersje Java również wspierały to rozwiązanie. Swing
Bardziej szczegółowoWstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 6. Karol Tarnowski A-1 p.
Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy Wykład 6 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Funkcje w języku C Zasięg zmiennych Przekazywanie
Bardziej szczegółowoWstęp. Ale po co? Implementacja
Wstęp Mechanizm sesji jest jedną z podstawowych form komunikacji pomiędzy skryptami jako jedyna tablica z super globalnych nie jest widoczna dla użytkownika. Mimo, że PHP od wersji 4 staje się coraz bardziej
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Laboratorium 3 i 4 - przypomnienie wiadomości o OOP na przykładzie Javy mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 8 marca 2017 1 / 20 mgr inż. Krzysztof Szwarc
Bardziej szczegółowoTworzenie własnych komponentów
Tworzenie własnych komponentów 1. Tworzenie nowego komponentu W tym celu należy wykorzystać menu Component. Interesujące są dwie opcje menu New Component i Install Component. Pierwsze polecenie służy do
Bardziej szczegółowoOperator przypisania. Jest czym innym niż konstruktor kopiujący!
Operator przypisania Jest czym innym niż konstruktor kopiujący! Domyślnie jest zdefiniowany jako przypisanie składowa po składowej (zatem niekoniecznie bajt po bajcie). Dla klasy X definiuje się jako X&
Bardziej szczegółowoJava - tablice, konstruktory, dziedziczenie i hermetyzacja
Java - tablice, konstruktory, dziedziczenie i hermetyzacja Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU zmienne tablicowe konstruktory klas dziedziczenie hermetyzacja
Bardziej szczegółowoUsługi Informatyczne "SZANSA" - Gabriela Ciszyńska-Matuszek ul. Świerkowa 25, Bielsko-Biała
Usługi Informatyczne "SZANSA" - Gabriela Ciszyńska-Matuszek ul. Świerkowa 25, 43-305 Bielsko-Biała NIP 937-22-97-52 tel. +48 33 488 89 39 zwcad@zwcad.pl www.zwcad.pl Aplikacja do rysowania wykresów i oznaczania
Bardziej szczegółowoMechanizm dziedziczenia
Mechanizm dziedziczenia Programowanie obiektowe jako realizacja koncepcji ponownego wykorzystania kodu Jak przebiega proces dziedziczenia? Weryfikacja formalna poprawności dziedziczenia Realizacja dziedziczenia
Bardziej szczegółowografika 2D i animacja obsługa rotacji i elementy 3D-OpenGL w Androidzie
grafika 2D i animacja obsługa rotacji i elementy 3D-OpenGL w Androidzie Krzysztof Czech, 2 rok IZ Grzegorz Duszyński, 2 rok IZ Daniel Engel, 2 rok IZ Łukasz Olech, 2 rok IZ Radek Wilczak, 2 rok EKA Nadpisywanie
Bardziej szczegółowoModelowanie rynków finansowych z wykorzystaniem pakietu R
Modelowanie rynków finansowych z wykorzystaniem pakietu R Wprowadzenie do pakietu R Mateusz Topolewski woland@mat.umk.pl Wydział Matematyki i Informatyki UMK Plan działania 1 Co i dlaczego...? 2 Przechowywanie
Bardziej szczegółowoRysunek 1: Okno timeline wykorzystywane do tworzenia animacji.
Ćwiczenie 5 - Tworzenie animacji Podczas tworzenia prostej animacji wykorzystywać będziemy okno Timeline domyślnie ustawione na dole okna Blendera (Rys. 1). Proces tworzenia animacji polega na stworzeniu
Bardziej szczegółowoGLKit. Wykład 10. Programowanie aplikacji mobilnych na urządzenia Apple (IOS i ObjectiveC) #import "Fraction.h" #import <stdio.h>
#import "Fraction.h" #import @implementation Fraction -(Fraction*) initwithnumerator: (int) n denominator: (int) d { self = [super init]; } if ( self ) { [self setnumerator: n anddenominator:
Bardziej szczegółowoProgramowanie obiektowe
Wykład 2 28 lutego 2019 Plan wykładu 1 2 3 4 5 Plan wykładu 1 2 3 4 5 Krótki opis C Obiektowy, z kontrolą typów; automatyczne odśmiecanie; standardy ISO i ECMA; podobny składniowo do C++; Język C Krótka
Bardziej szczegółowoPARADYGMATY PROGRAMOWANIA Wykład 4
PARADYGMATY PROGRAMOWANIA Wykład 4 Metody wirtualne i polimorfizm Metoda wirualna - metoda używana w identyczny sposób w całej hierarchii klas. Wybór funkcji, którą należy wykonać po wywołaniu metody wirtualnej
Bardziej szczegółowoĆwiczenie 14 Dmuchawce
Dmuchawce Celem ćwiczenia jest wykorzystanie właściwości programu Flash do generowania animacji o charakterze losowym. Prezentowany efekt można wykorzystać do wielu różnych celów np. spadające liście,
Bardziej szczegółowoWprowadzenie w dziedziczenie. Klasa D dziedziczy klasę B: Klasa B klasa bazowa (base class), klasa D klasa pochodna (derived class).
Wprowadzenie w dziedziczenie Klasa D dziedziczy klasę B: B klasa bazowa D klasa pochodna Klasa B klasa bazowa (base class), klasa D klasa pochodna (derived class). Najpierw jest tworzona klasa bazowa,
Bardziej szczegółowoProgramowanie i struktury danych
Programowanie i struktury danych 1 / 19 Dynamiczne struktury danych Dynamiczną strukturą danych nazywamy taka strukturę danych, której rozmiar, a więc liczba przechowywanych w niej danych, może się dowolnie
Bardziej szczegółowoLaboratorium Systemów Informacji Przestrzennej. Korzystanie z zewnętrznych usług geokodowania i nawigacji w środowisku OpenLayers
Laboratorium Systemów Informacji Przestrzennej Korzystanie z zewnętrznych usług geokodowania i nawigacji w środowisku OpenLayers ZADANIA DO WYKONANIA: 1. W oparciu o dostępny kod źródłowy stworzyć funkcję
Bardziej szczegółowoznajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.
Część XVI C++ Funkcje Jeśli nasz program rozrósł się już do kilkudziesięciu linijek, warto pomyśleć o jego podziale na mniejsze części. Poznajmy więc funkcje. Szybko się przekonamy, że funkcja to bardzo
Bardziej szczegółowoKlasa jest nowym typem danych zdefiniowanym przez użytkownika. Najprostsza klasa jest po prostu strukturą, np
Klasy Klasa jest nowym typem danych zdefiniowanym przez użytkownika Wartości takiego typu nazywamy obiektami Najprostsza klasa jest po prostu strukturą, np struct Zespolona { Klasy jako struktury z operacjami
Bardziej szczegółowoWykład 5 Okna MDI i SDI, dziedziczenie
Wykład 5 Okna MDI i SDI, dziedziczenie Autor: Zofia Kruczkiewicz Zagadnienia 1. Aplikacja wielookienkowa. Zakładanie projektu typu CLR Windows Forms 1.1. Aplikacja typu MDI 1.2. Aplikacja typu SDI 2. Dziedziczenie
Bardziej szczegółowoProgramowanie obiektowe
Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04 Cel zajęć. Celem zajęć jest zapoznanie się ze sposobem działania popularnych. Wprowadzenie teoretyczne. Rozważana w ramach niniejszych zajęć
Bardziej szczegółowoJęzyk JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna
Język JAVA podstawy wykład 2, część 1 1 Język JAVA podstawy Plan wykładu: 1. Rodzaje programów w Javie 2. Tworzenie aplikacji 3. Tworzenie apletów 4. Obsługa archiwów 5. Wyjątki 6. Klasa w klasie! 2 Język
Bardziej szczegółowo6.4. Efekty specjalne
6.4. Efekty specjalne Rozdział ten będzie poświęcony efektom specjalnym, które również znalazły swoje zastosowanie w programie MS PowerPoint 2007. Pierwszym typem efektów jaki zostanie poddany naszej analizie
Bardziej szczegółowoRys 3.2. 17 Odtwarzacz filmu. Możemy także skorzystać z programów służących do odtwarzania filmów np. Windows Media Player.
Powoduje to odtworzenie filmu : Rys 3.2. 17 Odtwarzacz filmu Możemy także skorzystać z programów służących do odtwarzania filmów np. Windows Media Player. 3.3 Ruch kamery Tematem tego ćwiczenia będzie
Bardziej szczegółowoJęzyki i techniki programowania Ćwiczenia 2
Języki i techniki programowania Ćwiczenia 2 Autor: Marcin Orchel Spis treści: Język C++... 5 Przekazywanie parametrów do funkcji... 5 Przekazywanie parametrów w Javie.... 5 Przekazywanie parametrów w c++...
Bardziej szczegółowodr Artur Bartoszewski dr Artur Bartoszewski - Aplikacje mobilne - Wykład
dr Artur Bartoszewski 1 Intencje Intencje (obok Aktywności) są jednym z podstawowych komponentów z których zbudowane są aplikacje systemu Android. Są one odpowiedzialne przede wszystkim za obsługę rozkazów
Bardziej szczegółowoZaawansowane programowanie w C++ (PCP)
Zaawansowane programowanie w C++ (PCP) Wykład 4 - wzorce projektowe. dr inż. Robert Nowak - p. 1/18 Powtórzenie klasy autonomiczne tworzenie nowych typów: dziedziczenie i agregacja dziedziczenie: przedefiniowywanie
Bardziej szczegółowoDefiniowanie własnych klas
Programowanie obiektowe Definiowanie własnych klas Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski @ pwr.wroc.pl Definiowanie własnych klas Autor:
Bardziej szczegółowoWASM AppInventor Lab 3. Rysowanie i animacja po kanwie PODSTAWY PRACY Z KANWAMI
Rysowanie i animacja po kanwie PODSTAWY PRACY Z KANWAMI Kanwa, to komponent służący do rysowania. Można ją dodać w Designerze przeciągając komponent Canvas z sekcji Basic. W celu ustawienia obrazka jako
Bardziej szczegółowoGrafika Komputerowa Materiały Laboratoryjne
Grafika Komputerowa Materiały Laboratoryjne Laboratorium 6 Processing c.d. Wstęp Laboratorium 6 poszerza zagadnienie generowania i przetwarzania obrazów z wykorzystaniem języka Processing 2, dedykowanego
Bardziej szczegółowoLaboratorium 1. Część I. Podstawy biblioteki graficznej OpenGL.
Laboratorium 1 Część I Podstawy biblioteki graficznej OpenGL. I. Konfiguracja środowiska 1. Ściągamy bibliotekę freeglut i rozpakujemy do głównego folderu dysku systemowego np. C:\freeglut 2. Uruchamiamy
Bardziej szczegółowoProgramowanie Obiektowe Ćwiczenie 4
Programowanie Obiektowe Ćwiczenie 4 1. Zakres ćwiczenia wyjątki kompozycja 2. Zagadnienia Założeniem, od którego nie należy odbiegać, jest by każdy napotkany problem (np. zatrzymanie wykonywanej metody)
Bardziej szczegółowoProgramowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska
Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego Iwona Kochaoska Programowanie Obiektowe Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych,
Bardziej szczegółowoC++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów
Operatory są elementami języka C++. Istnieje zasada, że z elementami języka, takimi jak np. słowa kluczowe, nie można dokonywać żadnych zmian, przeciążeń, itp. PRZECIĄŻANIE OPERATORÓW Ale dla operatorów
Bardziej szczegółowoLABORATORIUM 7 Cel: 1_1
LABORATORIUM 7 Cel: Budowa klas z wykorzystaniem dziedziczenia oraz implementowania interfejsów. Wprowadzenie do trybu graficznego -cd. Animacje obiektów w trybie graficznym obsługa zdarzeń od klawiatury
Bardziej szczegółowoInterfejsy i klasy wewnętrzne
Interfejsy i klasy wewnętrzne mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 Interfejs klasy sposób komunikacji z jej obiektami (zestaw składowych publicznych). Określa on zestaw
Bardziej szczegółowoUnity 3D - własny ekran startowy i menu gry
www.math.uni.lodz.pl/ radmat Cel ćwiczeń Celem bieżących ćwiczeń jest stworzenie własnego ekranu startowego oraz menu gry. Własny ekran startowy Tworzymy nowy, pusty obiekt GameObject Create Empty i nadajemy
Bardziej szczegółowoProgramowanie obiektowe Wykład 7. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/20
Dariusz Wardowski dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/20 Relacja ma Przykłady relacji typu ma : Student ma nazwisko Wielokąt ma wierzchołki (punkty) Stos ma elementy Dla obiektów
Bardziej szczegółowoLaboratorium 7 Blog: dodawanie i edycja wpisów
Laboratorium 7 Blog: dodawanie i edycja wpisów Dodawanie nowych wpisów Tworzenie formularza Za obsługę formularzy odpowiada klasa Zend_Form. Dla każdego formularza w projekcie tworzymy klasę dziedziczącą
Bardziej szczegółowoPodstawy i języki programowania
Podstawy i języki programowania Laboratorium 2 - wprowadzenie do zmiennych mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 23 października 2017 1 / 26 mgr inż. Krzysztof Szwarc Podstawy i
Bardziej szczegółowoVBA praca z makrami w Excelu
VBA praca z makrami w Excelu Dariusz Aksamit Wydział Fizyki Politechniki Warszawskiej Przedmiot Programowanie w języku Visual Basic for Application (VBA) Semestr zimowy 2016/2017 Opiekun przedmiotu: dr
Bardziej szczegółowoZajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej
Zajęcia nr 2 Programowanie strukturalne dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej Pętla while #include using namespace std; int main ()
Bardziej szczegółowo- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy
Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy - Narzędzie Windows Forms - Przykładowe aplikacje 1 Narzędzia Windows Form Windows Form jest narzędziem do tworzenia aplikacji dla
Bardziej szczegółowoJAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.
JAVA Java jest wszechstronnym językiem programowania, zorientowanym obiektowo, dostarczającym możliwość uruchamiania apletów oraz samodzielnych aplikacji. Java nie jest typowym kompilatorem. Źródłowy kod
Bardziej szczegółowoSieciowe Technologie Mobilne. Laboratorium 2
Sieciowe Technologie Mobilne Laboratorium 2 Tworzenie wieloplatformowych aplikacji mobilnych przy użyciu biblioteki PhoneGap. Łukasz Kamiński Laboratorium 2 Na dzisiejszym laboratorium skupimy się na implementacji
Bardziej szczegółowoMateriały do laboratorium MS ACCESS BASIC
Materiały do laboratorium MS ACCESS BASIC Opracowała: Katarzyna Harężlak Access Basic jest językiem programowania wykorzystywanym w celu powiązania obiektów aplikacji w jeden spójny system. PROCEDURY I
Bardziej szczegółowo