Př. program s popojíždějícím autíčkem o 50 pixelů při každém stisku Popojeď

Podobné dokumenty
Programování jako nástroj porozumění matematice (seriál pro web modernivyuka.cz)

Nejzajímavější jsou události MouseDown a KeyDown.

Objekty jako zapozdření dat. začneme vytvářet vlastní objekty a třídy

Programování jako nástroj porozumění matematice (seriál pro web modernivyuka.cz)

Indexové seznamy. známe už pole, kde ale musí být předem známa velikost indexové seznamy umí růst dynamicky

Pokročilá práce s proměnnými

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Metodický list k didaktickému materiálu

Programování jako nástroj porozumění matematice (seriál pro web modernivyuka.cz)

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

Takto chápanému druhu objektů se říká TŘÍDA.

Podmíněné vykonávání

Pro kontrolu správného formátu hodnoty N použijeme metodu try-catch.

Tabulková data. budeme pracovat s CSV soubory položky oddělené středníkem, např.

POLE. - datová struktura ze složek stejného typu, ke kterým se přistupuje pomocí indexů

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Evropská obchodní akademie, Děčín I, Komenského náměstí 2, příspěvková organizace IČ tel

Desetinná čísla. pro celá čísla jsme používali typ int. pro desetinná čísla používáme typ double

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Větvení programů příkaz IF

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Jazyk C# a platforma.net

Středoškolská odborná činnost. Obor SOČ: 1. Matematika a statistika GRAFY FUNKCÍ

Projekt Obrázek strana 135

Aplikace pro vykreslování grafů elementárních funkcí

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Náhodná a pseudonáhodná čísla

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Cvičné příklady Hodina 2

Jazyk C# a platforma.net

Jazyk C# - přístup k datům

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Metodický list k didaktickému materiálu

Rovnice přímek v rovině

Jazyk C# - přístup k datům

Druhy souborů. textové. binární. nestrukturované txt strukturované - ini, xml, csv. veřejné bmp, jpg, wav proprietární docx, cdr, psd

Přidávání animací do programů

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Jazyk C# (seminář 7)

Jazyk C# - přístup k datům

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

MAPOVÉ OKNO GSWEB. Nápověda. Pohyb v mapovém okně Výběr v mapovém okně. Panel Ovládání Panel Vrstvy. Tisk Přehledová mapa Redlining Přihlásit jako

zapište obslužnou metodu události Click tlačítka a vyzkoušejte chování polevýsledek.text = polečíslo1.text + polečíslo2.text;

KTE / ZPE Informační technologie

Obrázek. Základní popis, zadání úkolu. Struktura tříd,

Objekt. základní prvek v OOP. má vlastnosti. má metody. vznikne vytvoření nové instance definován pomocí třídy

Praktická cvičení v grafickém editoru GIMP. březen 2012

Java - Kresba. 2/28/11 1/8 Java - kresba

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Pokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++

Android OpenGL. Pokročilé shadery

MALUJEME v MALOVÁNÍ. Základní nabídka. a) tažením úchytů umístěných v pravém dolním rohu a na spodním okraji obrázku

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Robotika Kybernetika, automatizace a měření FEKT VUT v Brně

Popis základního prostředí programu AutoCAD

Dědičnost. seskupování tříd do hierarchie. potomek získá všechny vlastnosti a metody. provádí se pomocí dvojtečky za názvem třídy.

BARVY. Příkaz barva. Barvy TrueColor. Se objeví dialogové okno

UŽIVATELSKÉ ROZHRANÍ WINDOWS-FORM DESKTOPOVÉ APLIKACE - CVIČENÍ

2. Kinematika bodu a tělesa

Třída DrawingTool. Obrázek 1: Prázdné okno připravené pro kreslení

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

nástroj pro výběr - obdélník, elipsa... nástroj pro přesun - přesun výběru, vrstev a vodítek nástroj laso - vytváření výběru od ruky

Při bodování se mohou přidělovat body za každou dílčí úlohu (tj. a, b ), maximální bodové hodnocení je uvedeno na konci každé dílčí úlohy.

Knihovna CanvasLib TXV první vydání prosinec 2014 změny vyhrazeny

Komponenty v.net. Obsah přednášky

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

2 Grafický výstup s využitím knihovny

Programovací stanice itnc 530

Grafická data jsou u 2D vektorové grafiky uložena ve voxelech NEPRAVDA Grafická data jsou u rastrové grafiky uložena v pixelech PRAVDA Grafická data

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Zásady kreslení Kreslení na obrazovku 139

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd

Školní kolo soutěže Baltík 2007, kategorie A a B

Celostátní kolo soutěže Baltík 2007, kategorie A a B

ZP4CS 10. hodina Kreslení deskové hry. Aleš Keprt duben 2015

Téma: Arkanoid. X36SOJ Strojově orientované jazyky Semestrální práce. Vypracoval: Marek Handl Datum: červen 2006

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

IRAE 07/08 Přednáška č. 10

Abstraktní třída a rozhraní

Pokročilé programování v jazyce C pro chemiky (C3220) Dědičnost tříd v C++

Téma: Vektorová grafika. Určete pravdivost následujícího tvrzení: "Grafická data jsou u 2D vektorové grafiky uložena ve voxelech."

A U T O R : I N G. J A N N O Ž I Č K A S O Š A S O U Č E S K Á L Í P A V Y _ 3 2 _ I N O V A C E _ _ C N C P R O G R A M O V Á N Í _ P W P

02. HODINA. 2.1 Typy souborů a objektů. 2.2 Ovládací prvky Label a TextBox

Pokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody

MRBT. Stacionární průmyslový robot EPSON C3 aplikace pro prezentaci

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Nastavení stránky : Levým tlačítkem myši kliknete v menu na Soubor a pak na Stránka. Ovládání Open Office.org Draw Ukládání dokumentu :

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 17, 2016

Střední průmyslová škola strojnická Vsetín. Předmět Druh učebního materiálu monitory, jejich rozdělení a vlastnosti

POČÍTAČOVÁ GRAFIKA VEKTOROVÁ GRAFIKA VÍCENÁSOBNÉ KOPÍROVÁNÍ

KINEMATIKA. 17. ROVNOMĚRNÝ POHYB PO KRUŽNICI II. Frekvence, perioda. Mgr. Jana Oslancová VY_32_INOVACE_F1r0217

Transkript:

Animace a pohyb

Př. program s popojíždějícím autíčkem o 50 pixelů při každém stisku Popojeď

namespace Autíčko public partial class oknoprogramu : Form int x = 10, y = 10; public oknoprogramu() InitializeComponent(); private void oknoprogramu_paint(object sender, PaintEventArgs e) Graphics kp = e.graphics; kp.drawimage(properties.resources.autíčko, x, y); private void tlačítkopopojeď_click(object sender, EventArgs e) for (int i = 0; i < 50; i++) x += 2; Refresh(); System.Threading.Thread.Sleep(50);

Zdvojení obrazové paměti Asi jste si všimli, že autíčko problikává. Je to způsobeno tím, že se okno neustále maže a překresluje na nové pozici. Při nastavení vlastnosti DoubleBuffered okna na true kreslící metody nepracují přímo s částí RAM grafické karty, která je zobrazena, ale s jinou částí, která momentálně vidět není. Teprve když je obraz komplet připraven, dojde k přepnutí mezi viditelnou a neviditelnou částí. Tím se problikávání (téměř) odstraní.

Časovač Předchozí program má zásadní nevýhodu, a to že usíná, čímž se stává každou chvíli de facto mrtvým. Řešením je neusínat, ale použít časovač, který po zadaných časových prodlevách generuje událost Tick. Prodleva se nastavuje parametrem Interval a je uvedena v milisekundách.

namespace Autíčko public partial class oknoprogramu : Form int x = 10, y = 10; public oknoprogramu() InitializeComponent(); private void oknoprogramu_paint(object sender, PaintEventArgs e) Graphics kp = e.graphics; kp.drawimage(properties.resources.autíčko, x, y); private void tlačítkorozjeďse_click(object sender, EventArgs e) časovač.enabled = true; private void tlačítkozastav_click(object sender, EventArgs e) časovač.enabled = false; private void časovač_tick(object sender, EventArgs e) x += 2; Refresh();

Př. upravte program tak, aby se dala nastavovat rychlost auta v pixelech za sekundu stačí členskou proměnnou v programu. Z fyziky víte, že s = v. t Čas časovače je potřeba převést z milisekund na sekund, tedy double čas = 0.001 * časovač.interval;

Př. program, který odpočítá od 10 do 0 a potom skončí. Př. program, který bude simulovat blikání na žel. přejezdu, včetně zvuku. Př. autíčko, co nikdy nezmizí. Tip: kreslící plocha má bod [0, 0] vlevo nahoře, ale lze pracovat i se zápornými souřadnicemi.

Př. program na slideshow pěti fotek po pěti sekundách. Př. digitální hodiny. Tip: Použijte instanci DateTime, aktuální datum a čas se zjistí přes vlastnost DateTime.Now. Lze převést pomocí metody ToLongTimeString nebo použít vlastnosti Hour, Minute a Second. Rozmyslete si za domácí úkol ručičkové hodiny.ď

Dvourozměrný pohyb Vektor rychlosti se skládá ze dvou složek, x-ové a y-ové v x a v y souřadnice x = v x. t souřadnice y = v y.t Př. program, který pošle kuličku ze středu panelu náhodným směrem náhodnou rychlostí Na začátku kuličku vykreslete mimo panel, aby nebyla vidět. Složky vektoru rychlosti vygenerujte z intervalu < 100, 100>

Upravte program tak, aby se kulička odrážela od hran okna jako ve známé hře Pinball. Př. program simulující chodícího panáčka. Nejprve je potřeba připravit několik obrázků rozfázovaného pohybu.

Dobrovolná látka Př. kruhový pohyb. http://cs.wikipedia.org/wiki/pohyb_po_kru%c 5%BEnici Budeme zadávat pomocí dvou parametrů fázové rychlosti a poloměru kružnice. // Parametry kružnice int xstředukružnice = 100; int ystředukružnice = 100; int poloměrkružnice = 80; // Parametry kuličky double úhel = 0; // Úhel průvodiče ve stupních double omega = 60; // Úhlová rychlost ve stupních za sekundu int poloměrkuličky = 5;

using System; using System.Drawing; using System.Windows.Forms; namespace Kruhový_pohyb public partial class oknoprogramu : Form // Parametry kružnice int xstředukružnice = 100; int ystředukružnice = 100; int poloměrkružnice = 80; // Parametry kuličky double úhel = 0; // Úhel průvodiče ve stupních double omega = 60; // Úhlová rychlost ve stupních za sekundu int poloměrkuličky = 5; public oknoprogramu() InitializeComponent(); private void oknoprogramu_paint(object sender, PaintEventArgs e) Graphics kp = e.graphics; // Výpočet pomocných hodnot pro kružnici int xlh = xstředukružnice - poloměrkružnice; int ylh = ystředukružnice - poloměrkružnice; int šířka = 2 * poloměrkružnice; int výška = šířka; // Kreslíme kružnici kp.drawellipse(pens.cornflowerblue, xlh, ylh, šířka, výška); // Výpočet středu kuličky (NEJDŮLEŽITĚJŠÍ!) double úhelrad = úhel * Math.PI / 180; double rozdílx = poloměrkružnice * Math.Cos(úhelRad); double rozdíly = poloměrkružnice * Math.Sin(úhelRad); double xstředukuličky = xstředukružnice + rozdílx; double ystředukuličky = ystředukružnice + rozdíly; // Výpočet pomocných hodnot pro kuličku // ("recyklujeme" jednou použité pomocné proměnné) xlh = Convert.ToInt32(xStředuKuličky - poloměrkuličky); ylh = Convert.ToInt32(yStředuKuličky - poloměrkuličky); šířka = 2 * poloměrkuličky; výška = šířka; // Kreslíme kuličku kp.fillellipse(brushes.cornflowerblue, xlh, ylh, šířka, výška); private void časovač_tick(object sender, EventArgs e) double čas = 0.001 * časovač.interval; úhel += omega * čas; Refresh();

Př. program, který simuluje kuličku točící se na šňůře. Po přestřižení šňůry kulička odletí rovnoměrným přimočarým pohybem směrem a rychlostí, co zrovna měla.

Př. upravte příklad s přímočarým pohybem tak, aby kulička postupně bledla, až se ztratí. Tip: Štětec vytvoříme pomocí new SolidBrush s barvou, kterou vyrobíme pomocí Color.FromArgb(Alfa, R, G, B), kde Alfa, je tzv. alfa-kanál, který udává průhlednost. Př. poskakující okno, které se bude chaoticky pohybovat po monitoru s odskokem max. o 10 px. Tip: Aktuální pozici okna zjistíte pomocí Location.X a Location.Y, nové nastavení pozice lze provést např. přes SetDesktopLocation(x, y)