Podstawy tworzenia gier w J2ME, dla    początkujących adeptów sztuki programowania                     Marcin Stachniuk   ...
Plan prezentacji  1   Podstawy rysowania  2   Obsługa klawiszy  3   Sprite  4   TiledLayer  5   Wykrywanie kolizji  6   An...
Plan prezentacji  1   Podstawy rysowania  2   Obsługa klawiszy  3   Sprite  4   TiledLayer  5   Wykrywanie kolizji  6   An...
GameCanvas  GameCanvas  Przestrzeń po której będziemy malować.  Marcin Stachniuk                         Podstawy tworzeni...
GameCanvas - możliwości  Metody:        setFullScreenMode(true); – ustawienie pełnego ekranu.        Graphics g = getGraph...
Graphics  Graphics  Klasa służąca do rysowania prymitywów, obrazków i tekstów.  Metody:        g.setColor(0xFFFFFF) / g.se...
Image  Image  Klasa służąca do wczytywania obrazków.  Metody:        Image tankImage = createImage("tank.png");        – w...
Szkielet aplikacji cz. 1     Główna pętla programu Tank2012.java 1    public void run() { 2        while (!canvas.isEndGam...
Szkielet aplikacji cz. 2   Tu będzie nasza implementacja TankGameCanvas.java 1 public class TankGameCanvas extends Abstrac...
Plan prezentacji  1   Podstawy rysowania  2   Obsługa klawiszy  3   Sprite  4   TiledLayer  5   Wykrywanie kolizji  6   An...
Obsługa klawiszy gry w GameCanvas  Metody klasy GameCanvas        int keyStates = getKeyStates(); – pobranie stanu        ...
Obsługa klawiszy – przykład1    if ((keyStates & LEFT_PRESSED) != 0) {2        // dalsza logika3    }    Marcin Stachniuk ...
Plan prezentacji  1   Podstawy rysowania  2   Obsługa klawiszy  3   Sprite  4   TiledLayer  5   Wykrywanie kolizji  6   An...
Sprite  http://java.sun.com/javame/reference/apis/jsr118/javax/microedition/lcdui/game/Sprite.html   Marcin Stachniuk     ...
Sprite – podstawowe właściwości  Utworzenie Sprite’a:        tank = new Sprite(tankImage, 30, 30); – utworzenie        Spr...
Sprite – pozycja, wielkość i zmiana pozycji  Metody:        tank.getX() – pobranie współrzędnej X dla czołgu        tank.g...
Zadania  Zadanie 1  Dopisać poruszanie się czołgu w pionie i poziomie, za pomocą  strzałek na klawiaturze telefonu.  Zadan...
Zadania  Zadanie 1  Dopisać poruszanie się czołgu w pionie i poziomie, za pomocą  strzałek na klawiaturze telefonu.  Zadan...
Sprite - możliwość animacji  Metody:        tank.setFrameSequence(new int [] 2,3,0,1)        – ustawienie sekwencji animac...
Zadania  Zadanie 3  Dopisać obracanie czołgu lufą w kierunku jazdy.  Marcin Stachniuk                          Podstawy tw...
Plan prezentacji  1   Podstawy rysowania  2   Obsługa klawiszy  3   Sprite  4   TiledLayer  5   Wykrywanie kolizji  6   An...
TiledLayer  http://java.sun.com/javame/reference/apis/jsr118/javax/microedition/lcdui/game/TiledLayer.html  Marcin Stachni...
TiledLayer  http://java.sun.com/javame/reference/apis/jsr118/javax/microedition/lcdui/game/TiledLayer.html  Marcin Stachni...
TiledLayer – podstawy  Konstruktor:        tiles = new TiledLayer(4, 6, image, 20, 20);        – utworzenie nowego TiledLa...
Zadania  Zadanie 4  Wyświetlić TiledLayer’a z trawą na ekranie. Czołg może się  „schować” w trawie.  Marcin Stachniuk     ...
Plan prezentacji  1   Podstawy rysowania  2   Obsługa klawiszy  3   Sprite  4   TiledLayer  5   Wykrywanie kolizji  6   An...
Sprite, TiledLayer - wykrywanie kolizji  Metody w Sprite:         tank.collidesWith(missile, false) – test kolizji czołgu ...
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 przej...
Plan prezentacji  1   Podstawy rysowania  2   Obsługa klawiszy  3   Sprite  4   TiledLayer  5   Wykrywanie kolizji  6   An...
TiledLayer – animacja  Metody:        int animatedTile = tiles.createAnimatedTile(0); -        utworzenie animowanego kafe...
Zadania  Zadanie 6  Spraw, aby woda się animowała.  Zadanie 7  Wyświetl na ekranie mór z czerwonych cegieł i spraw, aby mo...
Zadania  Zadanie 6  Spraw, aby woda się animowała.  Zadanie 7  Wyświetl na ekranie mór z czerwonych cegieł i spraw, aby mo...
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      ...
Podstawy tworzenia gier w J2ME, dla    początkujących adeptów sztuki programowania                       Marcin Stachniuk ...
Upcoming SlideShare
Loading in...5
×

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

1,554

Published on

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

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

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,554
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

  1. 1. 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
  2. 2. 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
  3. 3. 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
  4. 4. GameCanvas GameCanvas Przestrzeń po której będziemy malować. Marcin Stachniuk Podstawy tworzenia gier w J2ME 4/34
  5. 5. 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
  6. 6. 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
  7. 7. 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
  8. 8. 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
  9. 9. 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
  10. 10. 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
  11. 11. 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
  12. 12. Obsługa klawiszy – przykład1 if ((keyStates & LEFT_PRESSED) != 0) {2 // dalsza logika3 } Marcin Stachniuk Podstawy tworzenia gier w J2ME 12/34
  13. 13. 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
  14. 14. Sprite http://java.sun.com/javame/reference/apis/jsr118/javax/microedition/lcdui/game/Sprite.html Marcin Stachniuk Podstawy tworzenia gier w J2ME 14/34
  15. 15. 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
  16. 16. 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
  17. 17. 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
  18. 18. 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
  19. 19. 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
  20. 20. Zadania Zadanie 3 Dopisać obracanie czołgu lufą w kierunku jazdy. Marcin Stachniuk Podstawy tworzenia gier w J2ME 19/34
  21. 21. 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
  22. 22. TiledLayer http://java.sun.com/javame/reference/apis/jsr118/javax/microedition/lcdui/game/TiledLayer.html Marcin Stachniuk Podstawy tworzenia gier w J2ME 21/34
  23. 23. TiledLayer http://java.sun.com/javame/reference/apis/jsr118/javax/microedition/lcdui/game/TiledLayer.html Marcin Stachniuk Podstawy tworzenia gier w J2ME 22/34
  24. 24. 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
  25. 25. 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
  26. 26. 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
  27. 27. 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
  28. 28. 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
  29. 29. 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
  30. 30. 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
  31. 31. 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
  32. 32. 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
  33. 33. Efekt Powinniśmy osiągnąć coś takiego: Marcin Stachniuk Podstawy tworzenia gier w J2ME 31/34
  34. 34. Pytania ? Marcin Stachniuk Podstawy tworzenia gier w J2ME 32/34
  35. 35. 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
  36. 36. 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
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×