Uniwersytet Łódzki dla dzieci

Transkrypt

Uniwersytet Łódzki dla dzieci
Uniwersytet Łódzki dla dzieci
27.02.2011
Jak jeździć autkiem po zielonej łące, czyli tworzymy grę komputerową
http://cni.wfis.uni.lodz.pl
Plan zajęć
1.
2.
3.
4.
5.
6.
7.
8.
Czym jest gra?
Rodzaje gier
Gry kiedyś i dzisiaj
Trochę o grafice komputerowej (jakie są rodzaje)
Animacja
„Dzień dobry. Nazywam się Flash”
Szybki kurs programowania
Tworzymy grę
http://cni.wfis.uni.lodz.pl
Czym jest gra?
•
•
•
•
•
•
•
Czynność
Forma rozgrywki
Zbiór zasad
Konkurencja (rywalizacja)
Dążenie do zwycięstwa
Bywają gry edukacyjne
Pamiętajcie: Gry nie tylko to gry komuterowe!!
http://cni.wfis.uni.lodz.pl
Rodzaje gier
1. Gry fizyczne (sport)
• Piłka norzna
• Siatkówka
• Wiele innych
2. Gry umysłowe
• Szachy
• Warcaby
• Państwa miasta
3. Gry podwórkowe
• Kapsle
• W chowanego
• Berek
4. Gry planszowe
• Chińczyk
• Eurobiznes/Monopol
5. Gry karciane
• Makao
• Wojna
http://cni.wfis.uni.lodz.pl
Rodzaje gier
Gry komputerowe
• Platformowe
• Zręcznościowe
• Przygodowe
• Akcji
• Sportowe
• Fabularne (RPG)
• Strategiczne
• Symulacyjne
• Edukacyjne
http://cni.wfis.uni.lodz.pl
Gry kiedyś i dzisiaj
• Pierwsza gra powstała 1947r.
• Pierwsza gra konsolowa PONG (1972r.)
dostępna dla ludzi
• Z czasem powstały komputery specjalnie do gier komputerowyc
• Konsole do gier
• Nintendo
• PlayStation
• X-BOX
http://cni.wfis.uni.lodz.pl
Trochę o grafice komputerowej
Klasyfikacja grafiki komputerowej według
1. Techniki tworzenia
• Grafika wektorowa
• Grafika rastrowa
2. Charakter danych
• 2D
• 3D
http://cni.wfis.uni.lodz.pl
Animacja
Rodzaje animacji:
• Rysunkowa
• Lalkowa
• Plastelinowa
• Animacja komputerowa.
Rodzaje animacji?
• Animacje 2D
– Gotowe ilustracje (sprite)
– Wirtualny szkielet
• Animacje 3D
– W zasadzie tylko i wyłącznie używa się modelu „wirtualnego szkieletu”
http://cni.wfis.uni.lodz.pl
Animacja
1. FPS
– Co to jest?
– Ile powinno wynosić?
Minimum 12, zalecane 15. W grach zalecane nie mniej jak 20 FPS
2. W czym się tworzy animacje 2D
– Adobe® Photoshop
– GIMP
– Inkscape
– Adobe® Flash
– Notatnik (czyli javascript oraz SVG)
3. A co z grafiką 3D
– Najpierw uczymy się 2D !
– Dla ciekawych: openGL, directX, 3ds Studio (wcześniej 3D Max Studio), Autodesk
Softimage, Cinema 4D, LightWave 3D, Maya, Rhinoceros 3D, Blender
http://cni.wfis.uni.lodz.pl
Animacja
GIF – najprostsza i najstarsza forma animacji 2D
Jakieś wnioski?
• Bardzo prosty efekt
• Płynność niestety tylko wystarczająca
• Brak możliwości zatrzymania
Czy ktoś to jeszcze używa?
• Głównie na stronach WWW – coraz rzadziej w formie animacji
• Ikonki w niektórych programach
• Częściej stosowana jest jego „konkurencja” - PNG
http://cni.wfis.uni.lodz.pl
„Dzień dobry. Nazywam się Flash”
•
•
•
•
•
•
Grafika wektorowa
Animacje tworzone na zasadzie klatek kluczowych
Program komercyjny (czyli niestety płatny)
Istnieją darmowe odpowiedniki
Daje możliwość programowani
Wykorzystywany przy tworzeniu: gier internetowych, banerów reklamowych, niekiedy całych stron
internetowych, częściej pojedyncze elementy strony
http://cni.wfis.uni.lodz.pl
Szybki kurs programowania
Wszystko jest zmienne
• Co to jest zmienna?
• Co może przechowywać?
• Jak ją tworzyć?
Podstawy logiki
• „NIE pada deszcz”
• „pada deszcz I świeci słońce”
• „pada deszcz LUB świeci słońce”
• „pada deszcz I NIE świeci słońce”
• „pada deszcz LUB NIE świeci słońce”
Operacje matematyczne
• Reszta z dzielenia
• Układ współżędnych
• ++
• +=
• -=
http://cni.wfis.uni.lodz.pl
Tworzymy grę
Kilka słów wstępu
• Tworzymy platformową grę 2D
• Poruszamy się autkiem tylko do przodu
• Autko może podskakiwać
• Losowo zostaje stworzony obiekt – przeszkoda
• W lewym górny narożniku wyświetlana jest ilość kolizji autka z przeszkodami
http://cni.wfis.uni.lodz.pl
Tworzymy grę
No to do roboty
1. Z prawej strony wybieramy narzędzie Linia
– Rysujemy linię poziomą
– Przekształcamy na klip filmowy
– Ustawiamy jej Y=330
– Nazywamy „ziemia”
2. Wybieramy narzędzie owal
– Nad ziemią tworzymy koło (z klawisze shift tworzy się ładne koło – nie jajo)
– Przekształcamy na klip filmowy
– Nazywamy „kolo”
3. Przechodzimy do zakładki kodu źródłowego
http://cni.wfis.uni.lodz.pl
Tworzymy grę
Kodujemy
import flash.events.Event;
import flash.ui.Keyboard;
import flash.events.KeyboardEvent;
var skok = false;
var spadek = true;
var spadanieTempo = 5;
var skakanieTempo = -5;
ziemia.y = 330;
this.addEventListener(Event.ENTER_FRAME, enterFrame, false, 0, true);
stage.addEventListener(KeyboardEvent.KEY_DOWN, key_down);
function key_down(event:KeyboardEvent):void{
if (event.keyCode ==Keyboard.SPACE){
skok=true;
}
}
function enterFrame(event:Event) :void
{
if (skok){
kolo.y += skakanieTempo;
if (kolo.y <= 200){
skok=false;
spadek=true;
}
}
if (spadek){
kolo.y += spadanieTempo;
}
if((ziemia.hitTestObject(kolo))){
spadek=false;
}
}
http://cni.wfis.uni.lodz.pl
Tworzymy grę
Kodujemy - timer
import flash.utils.Timer;
import flash.events.TimerEvent;
//--------------------------------------------------var czasomierz:Timer = new Timer(2000);
czasomierz.start();
//--------------------------------------------------czasomierz.addEventListener(TimerEvent.TIMER,timer);
//--------------------------------------------------function timer(event:TimerEvent):void{
skok=true;
}
http://cni.wfis.uni.lodz.pl
Tworzymy grę
Kodujemy - timer
Mała zmiana timera ;)
//------------------------------------------------var tworz=false;
var stworzony = false;
var mc:MovieClip = new MovieClip();
mc.graphics.beginFill(0x000000);
mc.graphics.drawRect(0,0,30,30);
mc.graphics.endFill();
//------------------------------------------------function timer(event:TimerEvent):void{
if (Math.random()%6==0 || !stworzony){
tworz=true;
}
}
function enterFrame(event:Event) :void
{
/* ZOSTAWIAMY BEZ ZMIAN DO
if((ziemia.hitTestObject(kolo))){
spadek=false;
} */
if(tworz){
stworzony=true;
mc.x=485;
mc.y=300;
stage.addChild(mc);
tworz=false;
}
if (stworzony){
mc.x -= 5;
if (mc.x<0){
stworzony=false;
}
}
}
http://cni.wfis.uni.lodz.pl
Tworzymy grę
Licznik kolizji
Tworzmy dwa pola tekstowe w jednym wisujemy „kolizje” drugie zmieniamy na klip
filmowy i nazywamy „txt_kolizje” i zostawiamy puste
//------------------------------------------------var kolizje=0;
var koliza_trwa=false;
//------------------------------------------------// Na koniec function enterFrame(event:Event) :void zmieniamy
if (stworzony){
mc.x -= 5;
if (mc.x<0){
stworzony=false;
}
if (kolo.hitTestObject(mc)||!kolizja_trwa){
kolizje++;
txt_kolizje.text = kolizje;
kolizja_trwa=true;
}
else{
kolizja_trwa = false;
}
}
http://cni.wfis.uni.lodz.pl
import
import
import
import
import
import
var
var
var
var
var
var
var
var
var
flash.events.Event;
flash.ui.Keyboard;
flash.events.KeyboardEvent;
flash.utils.Timer;
flash.events.TimerEvent;
flash.display.MovieClip;
spadek=true;
}
}
if (spadek){
kolo.y += spadanieTempo;
}
if((ziemia.hitTestObject(kolo))){
spadek=false;
}
skok = false;
spadek = true;
spadanieTempo = 5;
skakanieTempo = -5;
czasomierz:Timer = new Timer(2000);
tworz=false;
stworzony = false;
kolizje=0;
koliza_trwa=false;
if(tworz){
stworzony=true;
mc.x=485;
mc.y=300;
stage.addChild(mc);
tworz=false;
}
if (stworzony){
mc.x -= 5;
if (mc.x<0){
stworzony=false;
}
if (kolo.hitTestObject(mc)||!kolizja_trwa){
kolizje++;
txt_kolizje.text = kolizje;
kolizja_trwa=true;
}
else{
kolizja_trwa = false;
}
}
var mc:MovieClip = new MovieClip();
mc.graphics.beginFill(0x000000);
mc.graphics.drawRect(0,0,30,30);
mc.graphics.endFill();
czasomierz.start();
ziemia.y = 330;
this.addEventListener(Event.ENTER_FRAME, enterFrame, false, 0, true);
stage.addEventListener(KeyboardEvent.KEY_DOWN, key_down);
czasomierz.addEventListener(TimerEvent.TIMER,timer);
function key_down(event:KeyboardEvent):void{
if (event.keyCode ==Keyboard.SPACE){
skok=true;
}
}
function timer(event:TimerEvent):void{
if (Math.random()%6==0 || !stworzony)
{
tworz=true;
}
}
function enterFrame(event:Event) :void
{
if (skok){
kolo.y += skakanieTempo;
if (kolo.y <= 200){
skok=false;
}
http://cni.wfis.uni.lodz.pl
Zakończenie
Pytania?
http://cni.wfis.uni.lodz.pl
Dziękujmy
Za uwagę !
http://cni.wfis.uni.lodz.pl/
http://cni.wfis.uni.lodz.pl

Podobne dokumenty