• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Podstawy tworzenia gier w J2ME, dla początkujących adeptów sztuki programowania
 

Podstawy tworzenia gier w J2ME, dla początkujących adeptów sztuki programowania

on

  • 1,658 views

Prezentacja pokazująca podstawy tworzenia gier w technologii J2ME z wykorzystaniem niskopoziomowego API.

Prezentacja pokazująca podstawy tworzenia gier w technologii J2ME z wykorzystaniem niskopoziomowego API.

Prezentacja dla osób zaczynających przygodę z programowaniem.

Statistics

Views

Total Views
1,658
Views on SlideShare
1,658
Embed Views
0

Actions

Likes
0
Downloads
5
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Podstawy tworzenia gier w J2ME, dla początkujących adeptów sztuki programowania Podstawy tworzenia gier w J2ME, dla początkujących adeptów sztuki programowania Presentation Transcript

    • Podstawy tworzenia gier w J2ME, dla początkujących adeptów sztuki programowania Marcin Stachniuk mstachniuk@gmail.com Blog: mstachniuk.blogspot.com Twitter: @MarcinStachniuk 27 maja 2012Marcin Stachniuk Podstawy tworzenia gier w J2ME 1/34
    • Plan prezentacji 1 Podstawy rysowania 2 Obsługa klawiszy 3 Sprite 4 TiledLayer 5 Wykrywanie kolizji 6 Animacja Marcin Stachniuk Podstawy tworzenia gier w J2ME 2/34
    • Plan prezentacji 1 Podstawy rysowania 2 Obsługa klawiszy 3 Sprite 4 TiledLayer 5 Wykrywanie kolizji 6 Animacja Marcin Stachniuk Podstawy tworzenia gier w J2ME 3/34
    • GameCanvas GameCanvas Przestrzeń po której będziemy malować. Marcin Stachniuk Podstawy tworzenia gier w J2ME 4/34
    • GameCanvas - możliwości Metody: setFullScreenMode(true); – ustawienie pełnego ekranu. Graphics g = getGraphics(); – pobranie buforu graficznego. flushGraphics(); – namalowanie grafiki z bufora Marcin Stachniuk Podstawy tworzenia gier w J2ME 5/34
    • Graphics Graphics Klasa służąca do rysowania prymitywów, obrazków i tekstów. Metody: g.setColor(0xFFFFFF) / g.setColor(255, 255, 255) – ustawienie aktualnego koloru na biały g.drawRect(10, 20, 50, 60) – malowanie prostokąta w punkcie [10,20] i szerokości 50px i wysokości 60px g.fillRect(10, 20, 50, 60) – malowanie wypełnionego prostokąta Marcin Stachniuk Podstawy tworzenia gier w J2ME 6/34
    • Image Image Klasa służąca do wczytywania obrazków. Metody: Image tankImage = createImage("tank.png"); – wczytywanie obrazka z pliku tank.png tankImage.getHeight() – pobranie wysokości obrazka tankImage.getWidth() – pobranie szerokości obrazka Marcin Stachniuk Podstawy tworzenia gier w J2ME 7/34
    • Szkielet aplikacji cz. 1 Główna pętla programu Tank2012.java 1 public void run() { 2 while (!canvas.isEndGame()) { // dopoki gra sie nie skonczyła 3 try { 4 canvas.inputKeys(); // obsluga wcisnietych klawiszy 5 canvas.think(); // pozostala logika gry 6 canvas.paint(); // odmalowanie ekranu 7 Thread.sleep(100); // uspienie watku na 100 ms 8 } catch (Exception ex) { 9 ex.printStackTrace();10 }11 }12 destroyApp(false); // sprzatanie przed zamknieciem aplikacji13 notifyDestroyed(); // zamkniecie aplikacji14 } Marcin Stachniuk Podstawy tworzenia gier w J2ME 8/34
    • Szkielet aplikacji cz. 2 Tu będzie nasza implementacja TankGameCanvas.java 1 public class TankGameCanvas extends AbstractTankCanvas { 2 /** Przygotowanie aplikacji */ 3 public void init() { 4 } 5 6 /** Metoda odpowiedzialna za malowanie po ekranie */ 7 public void paint() { 8 } 910 /** Obsluga naciskanych klawiszy. */11 public void inputKeys() {12 }1314 /** Miejsce na logike aplikacji. */15 public void think() {16 }1718 /** Metoda informujaca, czy gra sie juz zakonczyla czy nie. */19 public boolean isEndGame() {20 }21 } Marcin Stachniuk Podstawy tworzenia gier w J2ME 9/34
    • Plan prezentacji 1 Podstawy rysowania 2 Obsługa klawiszy 3 Sprite 4 TiledLayer 5 Wykrywanie kolizji 6 Animacja Marcin Stachniuk Podstawy tworzenia gier w J2ME 10/34
    • Obsługa klawiszy gry w GameCanvas Metody klasy GameCanvas int keyStates = getKeyStates(); – pobranie stanu wciśniętych klawiszy (keyStates & LEFT PRESSED) != 0 – sprawdzenie czy naciśnięto w lewo Klawisze akcji gry DOWN PRESSED, LEFT PRESSED, RIGHT PRESSED, UP PRESSED, FIRE PRESSED, GAME A PRESSED, GAME B PRESSED, GAME C PRESSED, GAME D PRESSED Marcin Stachniuk Podstawy tworzenia gier w J2ME 11/34
    • Obsługa klawiszy – przykład1 if ((keyStates & LEFT_PRESSED) != 0) {2 // dalsza logika3 } Marcin Stachniuk Podstawy tworzenia gier w J2ME 12/34
    • Plan prezentacji 1 Podstawy rysowania 2 Obsługa klawiszy 3 Sprite 4 TiledLayer 5 Wykrywanie kolizji 6 Animacja Marcin Stachniuk Podstawy tworzenia gier w J2ME 13/34
    • Sprite http://java.sun.com/javame/reference/apis/jsr118/javax/microedition/lcdui/game/Sprite.html Marcin Stachniuk Podstawy tworzenia gier w J2ME 14/34
    • Sprite – podstawowe właściwości Utworzenie Sprite’a: tank = new Sprite(tankImage, 30, 30); – utworzenie Sprite dla czołgu Metody: tank.paint(Graphics g) – namalowanie czołgu tank.setVisible(true) – czołg staje się widoczny tank.setVisible(false) – czołg staje się niewidoczny tank.isVisible() – sprawdzenie czy czołg jest widoczny Marcin Stachniuk Podstawy tworzenia gier w J2ME 15/34
    • Sprite – pozycja, wielkość i zmiana pozycji Metody: tank.getX() – pobranie współrzędnej X dla czołgu tank.getY() – pobranie współrzędnej Y dla czołgu tank.getHeight() – pobranie wysokości dla czołgu tank.getWidth() – pobranie szerokości dla czołgu tank.setPosition(2, 3) – ustawienie pozycji czołgu w punkcie [2, 3] tank.move(5, 8) – przesuniecie czołgu o wektor [5, 8] tank.defineReferencePixel(1, 5) – definicja piksela referencyjnego dla czołgu tank.setRefPixelPosition(4, 6) – ustawienie pozycji piksela referencyjnego czołgu w pozycji [4, 6] Marcin Stachniuk Podstawy tworzenia gier w J2ME 16/34
    • Zadania Zadanie 1 Dopisać poruszanie się czołgu w pionie i poziomie, za pomocą strzałek na klawiaturze telefonu. Zadanie 2 Dopisać ograniczenie aby czołg nie wyjeżdżał po za ekran. Marcin Stachniuk Podstawy tworzenia gier w J2ME 17/34
    • Zadania Zadanie 1 Dopisać poruszanie się czołgu w pionie i poziomie, za pomocą strzałek na klawiaturze telefonu. Zadanie 2 Dopisać ograniczenie aby czołg nie wyjeżdżał po za ekran. Marcin Stachniuk Podstawy tworzenia gier w J2ME 17/34
    • Sprite - możliwość animacji Metody: tank.setFrameSequence(new int [] 2,3,0,1) – ustawienie sekwencji animacji na klatki (2,3,0,1) tank.nextFrame() – ustawienie następnej klatki tank.prevFrame() – ustawienie poprzedniej klatki tank.getFrame() – pobranie numeru aktualnej klatki tank.setFrame(3) – wybranie 3ciej klatki animacji Marcin Stachniuk Podstawy tworzenia gier w J2ME 18/34
    • Zadania Zadanie 3 Dopisać obracanie czołgu lufą w kierunku jazdy. Marcin Stachniuk Podstawy tworzenia gier w J2ME 19/34
    • Plan prezentacji 1 Podstawy rysowania 2 Obsługa klawiszy 3 Sprite 4 TiledLayer 5 Wykrywanie kolizji 6 Animacja Marcin Stachniuk Podstawy tworzenia gier w J2ME 20/34
    • TiledLayer http://java.sun.com/javame/reference/apis/jsr118/javax/microedition/lcdui/game/TiledLayer.html Marcin Stachniuk Podstawy tworzenia gier w J2ME 21/34
    • TiledLayer http://java.sun.com/javame/reference/apis/jsr118/javax/microedition/lcdui/game/TiledLayer.html Marcin Stachniuk Podstawy tworzenia gier w J2ME 22/34
    • TiledLayer – podstawy Konstruktor: tiles = new TiledLayer(4, 6, image, 20, 20); – utworzenie nowego TiledLayer’a o 4ch kolumnach, 6ciu wierszach i rozmiarze pojedynczego kafelka 20x20. Metody: tiles.setCell(2, 3, 1) - ustawienie kafelka nr. 1 na pozycji [2,3] Marcin Stachniuk Podstawy tworzenia gier w J2ME 23/34
    • Zadania Zadanie 4 Wyświetlić TiledLayer’a z trawą na ekranie. Czołg może się „schować” w trawie. Marcin Stachniuk Podstawy tworzenia gier w J2ME 24/34
    • Plan prezentacji 1 Podstawy rysowania 2 Obsługa klawiszy 3 Sprite 4 TiledLayer 5 Wykrywanie kolizji 6 Animacja Marcin Stachniuk Podstawy tworzenia gier w J2ME 25/34
    • Sprite, TiledLayer - wykrywanie kolizji Metody w Sprite: tank.collidesWith(missile, false) – test kolizji czołgu z innym Sprite’m (missile) tank.collidesWith(tiles, false) – sprawdzanie kolizji czołgu z kafelkiem TiledLayer’a Marcin Stachniuk Podstawy tworzenia gier w J2ME 26/34
    • Zadania Zadanie 5 Wyświetlić TiledLayer’a z białymi cegłami i wodą na ekranie. Przez białe cegły i wodę nie można przejechać. Podpowiedź: Użyj nowego TiledLayer’a. Marcin Stachniuk Podstawy tworzenia gier w J2ME 27/34
    • Plan prezentacji 1 Podstawy rysowania 2 Obsługa klawiszy 3 Sprite 4 TiledLayer 5 Wykrywanie kolizji 6 Animacja Marcin Stachniuk Podstawy tworzenia gier w J2ME 28/34
    • TiledLayer – animacja Metody: int animatedTile = tiles.createAnimatedTile(0); - utworzenie animowanego kafelka tiles.setAnimatedTile(animatedTile, 2) - ustawienie animowanego kafelka o numerze animatedTile na kafelek nr. 2. Marcin Stachniuk Podstawy tworzenia gier w J2ME 29/34
    • Zadania Zadanie 6 Spraw, aby woda się animowała. Zadanie 7 Wyświetl na ekranie mór z czerwonych cegieł i spraw, aby można było zniszczyć cegły za pomocą wystrzeliwanych pocisków. Podpowiedź 1: Dla każdego murku utwórz pojedynczego Sprite’a. Podpowiedź 2: Dla Sprite’a będącego pociskiem zdefiniuj pixel referencyjny w jego centrum. Marcin Stachniuk Podstawy tworzenia gier w J2ME 30/34
    • Zadania Zadanie 6 Spraw, aby woda się animowała. Zadanie 7 Wyświetl na ekranie mór z czerwonych cegieł i spraw, aby można było zniszczyć cegły za pomocą wystrzeliwanych pocisków. Podpowiedź 1: Dla każdego murku utwórz pojedynczego Sprite’a. Podpowiedź 2: Dla Sprite’a będącego pociskiem zdefiniuj pixel referencyjny w jego centrum. Marcin Stachniuk Podstawy tworzenia gier w J2ME 30/34
    • Efekt Powinniśmy osiągnąć coś takiego: Marcin Stachniuk Podstawy tworzenia gier w J2ME 31/34
    • Pytania ? Marcin Stachniuk Podstawy tworzenia gier w J2ME 32/34
    • Więcej informacji Kontakt z autorem: e-mail: mstachniuk@gmail.com blog: mstachniuk.blogspot.com twitter: @MarcinStachniuk Kod źródłowy: https://github.com/mstachniuk/tank2012j2me Marcin Stachniuk Podstawy tworzenia gier w J2ME 33/34
    • Podstawy tworzenia gier w J2ME, dla początkujących adeptów sztuki programowania Marcin Stachniuk mstachniuk@gmail.com Dzięki za uwagę! 27 maja 2012Marcin Stachniuk Podstawy tworzenia gier w J2ME 34/34