Step by Step Membuat Game Sederhana

47
Latihan Membuat Game Sederhana http:// bit.ly/latihangreenfoot Question? Ask Me Please: HATMA Suryotrisongko Whatsapp: 0853.5900.7300 Email: [email protected]

description

Cara buat game sederhana

Transcript of Step by Step Membuat Game Sederhana

Page 1: Step by Step Membuat Game Sederhana

Latihan Membuat Game Sederhanahttp://bit.ly/latihangreenfoot

Question? Ask Me Please:HATMA Suryotrisongko

Whatsapp: 0853.5900.7300Email: [email protected]

Page 2: Step by Step Membuat Game Sederhana

1. Buka Greenfoot, Create New Scenario

Page 3: Step by Step Membuat Game Sederhana

2. Background. Buat New Subclass World Space (space.gif)

NB = Gambar2 yang diperlukan untuk latihan ini sudah tersedia di folder “1. Gambar2 Untuk Membuat Game Latihan”

Page 4: Step by Step Membuat Game Sederhana

3. Player Ship. Buat New Subclass Actor Ship (rocket.png)

Page 5: Step by Step Membuat Game Sederhana

4. Tambahkan Object Ship ke World (klik kanan pada Class Ship, new)

Page 6: Step by Step Membuat Game Sederhana

5. Klik Kanan (Atau menu Control), Save The World addObject()

Page 7: Step by Step Membuat Game Sederhana

6. Kontrol Keyboard. Buka Source Code Class Ship, buat method. isKeyDown

private void moveUp() { if (Greenfoot.isKeyDown("up")) { setLocation(getX(), getY() - 1); } }

private void moveDown() { if (Greenfoot.isKeyDown("down")) { setLocation(getX(), getY() + 1); } }

private void moveLeft() { if (Greenfoot.isKeyDown("left")) { setLocation(getX() - 1, getY()) ; } }

private void moveRight() { if (Greenfoot.isKeyDown("right")) { setLocation(getX() + 1, getY() ); } }

TIPS : Ketika Copy Paste, klik menu EDIT > AUTO LAYOUT supaya rapi kode programnya

Page 8: Step by Step Membuat Game Sederhana

7. Tambahkan pemanggilan method di dalam public void act() { } Tes !

public void act() { moveUp(); moveDown(); moveRight(); moveLeft(); }

Page 9: Step by Step Membuat Game Sederhana

8. Shooting Missiles. Buat New Subclass Actor Laser (missile.jpg)

Page 10: Step by Step Membuat Game Sederhana

9. Edit Source Code Laser, Tambahkan di public void act() { } setLocation

public void act() { setLocation( getX() + 10, getY() ); }

Page 11: Step by Step Membuat Game Sederhana

10. Buat method fire() di class Ship, lalu tambahkan di act(), tes menembakkan peluru

public void fire() { if (Greenfoot.isKeyDown("space")) { getWorld().addObject( new Laser(), getX(), getY() ); } }

public void act() { moveUp(); moveDown(); moveRight(); moveLeft(); fire(); }

Page 12: Step by Step Membuat Game Sederhana

11. sound effect tambahkan playSound() di method fire() (shot1.wav)

NB = file audio harus sudah di copy ke dalam folder sounds di project greenfoot anda….

public void fire() { if (Greenfoot.isKeyDown("space")) { getWorld().addObject(new Laser(), getX(), getY()); Greenfoot.playSound("shot1.wav"); } } NB = File Audio yang diperlukan untuk latihan ini sudah tersedia

di folder “2. Audio Suara Untuk Membuat Game Latihan”

Page 13: Step by Step Membuat Game Sederhana

12. The setPaintOrder() method supaya peluru keluar dari perut pesawat

• NB = tambahkan setPaintOrder() ke dalam Constructor World

public Space() { super(600, 400, 1); setPaintOrder(Ship.class, Laser.class); prepare(); }

Page 14: Step by Step Membuat Game Sederhana

13. Removing the missiles from the world. Edit class Laser, act() method

public void act() { setLocation(getX() + 10, getY()); if ( getX() >= getWorld().getWidth() - 1 ) { getWorld().removeObject( this ); } }

Page 15: Step by Step Membuat Game Sederhana

14. Spawning alien ships randomly buat class Enemy (cruiser.gif)

Page 16: Step by Step Membuat Game Sederhana

15. Method act() Enemy bergerak ke kiri, menghilan kalau sudah sampai pojok

public void act() { setLocation(getX() - 5, getY()); if (getX() <= 0) { setLocation(getWorld().getWidth() + 20 , Greenfoot.getRandomNumber(400)); } }

Page 17: Step by Step Membuat Game Sederhana

16. Tambahkan beberapa objek enemy pada constructor Space addObject()

private void prepare() { Ship ship = new Ship(); addObject(ship, 91, 221); addObject(new Enemy(), getWidth() + 20 , Greenfoot.getRandomNumber(400)); addObject(new Enemy(), getWidth() + 20 , Greenfoot.getRandomNumber(400)); addObject(new Enemy(), getWidth() + 20 , Greenfoot.getRandomNumber(400)); }

Page 18: Step by Step Membuat Game Sederhana

Check point 1. Ketinggalan ? aja project greenfoot yang ada di dalam file zip CheckPoint1.zip

Page 19: Step by Step Membuat Game Sederhana

17. Hold that fire! buat variabel di class Ship, dekremen setiap act(), cek kondisi tembak peluru

private int canShoot = 0;

public void fire() { if (Greenfoot.isKeyDown("space") && (canShoot <= 0)) { getWorld().addObject(new Laser(), getX(), getY()); Greenfoot.playSound("shot1.wav"); canShoot = 25; } }

public void act() { moveUp(); moveDown(); moveRight(); moveLeft(); fire(); canShoot--; }

Page 20: Step by Step Membuat Game Sederhana

Check point 2. Ketinggalan ? aja project greenfoot yang ada di dalam file zip CheckPoint2.zip

Page 21: Step by Step Membuat Game Sederhana

18. Collision Detection. ???

if (getOneIntersectingObject(Laser.class) != null){

Show explosionPlay explosion soundRemove the missile from the worldRemove the enemy (this enemy object)

from the world}

Page 22: Step by Step Membuat Game Sederhana

18. Explosion. Create Actor new subclass, set image explosion.png, copypaste code dari Explosion.java

NB = Kode program java Explosion.java untuk latihan ini sudah tersedia di folder “3. Helper Class Untuk Membuat Game Latihan”

Page 23: Step by Step Membuat Game Sederhana

19. Collision Detection. Edit Enemy class, tambahkan di act() method. Tes!

if (getOneIntersectingObject(Laser.class) != null) { getWorld().addObject(new Explosion(), getX(), getY()); Greenfoot.playSound("explosion.wav"); Actor laser = getOneIntersectingObject(Laser.class); getWorld().removeObject(laser); getWorld().removeObject(this); }

NB = File Audio yang diperlukan untuk latihan ini sudah tersedia di folder “2. Audio Suara Untuk Membuat Game Latihan”

Page 24: Step by Step Membuat Game Sederhana

20. Let's keep those enemies coming! Buat method resurrect() utk menggantikan removeObject(Enemy)

private void resurrect() { setLocation(getWorld(). getWidth() + 20, Greenfoot.getRandomNumber(400)); }

if (getOneIntersectingObject(Laser.class) != null) { getWorld().addObject(new Explosion(), getX(), getY()); Greenfoot.playSound("explosion.wav"); Actor laser = getOneIntersectingObject(Laser.class); getWorld().removeObject(laser); resurrect(); }

Page 25: Step by Step Membuat Game Sederhana

Check point 3. Ketinggalan ? aja project greenfoot yang ada di dalam file zip CheckPoint3.zip

Page 26: Step by Step Membuat Game Sederhana

21. The Score()class: Class declaration, drawstring() and setImage() buat new subclass Actor Score()

Buat constructor di class Score

public Score(String text) { GreenfootImage img = new GreenfootImage(text, 24, Color.WHITE, Color.BLACK); setImage(img); }

Tambahkan statement import di class Scoreimport java.awt.* ;

Page 27: Step by Step Membuat Game Sederhana

22. The World class (Space): constructing and initiating the Score object

Tambahkan ke dalam constructor

Score score_field = new Score ("Score:");addObject(score_field, 50, 50);

Page 28: Step by Step Membuat Game Sederhana

23. Modifikasi constructor Space passing object Score ke object Enemy

For the Enemy object’s constructor, we need to pass the score_field as its parameter:

private void prepare() { Ship ship = new Ship(); addObject(ship, 91, 221); Score score_field = new Score ("Score:"); addObject(score_field, 50, 50); addObject(new Enemy(score_field), getWidth() + 1 , Greenfoot.getRandomNumber(400)); addObject(new Enemy(score_field), getWidth() + 1 , Greenfoot.getRandomNumber(400)); addObject(new Enemy(score_field), getWidth() + 1 , Greenfoot.getRandomNumber(400)); }

in order to make the Score object accessible to the Enemy object. The reason for this is that we will be passing the value of every new score from the Enemy’s collision method, as explained below. Unless the Enemy object can access the Score object, it will have no way of displaying the new score when it changes.

Page 29: Step by Step Membuat Game Sederhana

24. The Enemy class: Collecting cones and incrementing the score edit class Enemy

public class Enemy extends Actor{

private Score scoreNum;

public static int count = 0;

public Enemy(Score score_field) {

scoreNum = score_field; }

Page 30: Step by Step Membuat Game Sederhana

25. The Score class: Creating a method() to refresh the score

public void setText(String text) { GreenfootImage img = new GreenfootImage(text, 24, Color.WHITE, Color.BLACK); setImage(img); }

Page 31: Step by Step Membuat Game Sederhana

26. The Enemy class: Using the collision event to increase the score

if (getOneIntersectingObject(Laser.class) != null) { getWorld().addObject(new Explosion(), getX(), getY()); Greenfoot.playSound("explosion.wav"); Actor laser = getOneIntersectingObject(Laser.class); getWorld().removeObject(laser); resurrect(); count++; scoreNum.setText("Score: " + count); }

Page 32: Step by Step Membuat Game Sederhana

Check point 4. Ketinggalan ? Extract saja project greenfoot yang ada di dalam file zip CheckPoint4.zip

Page 33: Step by Step Membuat Game Sederhana

27. welcome screen. Add new subclass world class Welcome (welcome.png)

TIPS = anda bisa membuat banyak subclass World, misal untuk welcome screen, level 1, level 2, dll… supaya World ditampilkan, klik kanan, New

Page 34: Step by Step Membuat Game Sederhana

28. Edit class Welcome, buat method Act() Click Mouse to start!

public void act() { if ( Greenfoot.mousePressed(this) ) Greenfoot.setWorld( new Space() ); }

Page 35: Step by Step Membuat Game Sederhana

Check point 5. Ketinggalan ? aja project greenfoot yang ada di dalam file zip CheckPoint5.zip

Page 36: Step by Step Membuat Game Sederhana

29. Background Suara. Edit constructor class Space

private void prepare() { Ship ship = new Ship(); addObject(ship, 91, 221); Score score_field = new Score ("Score:"); addObject(score_field, 50, 50); addObject(new Enemy(score_field), getWidth() + 1 , Greenfoot.getRandomNumber(400)); addObject(new Enemy(score_field), getWidth() + 1 , Greenfoot.getRandomNumber(400)); addObject(new Enemy(score_field), getWidth() + 1 , Greenfoot.getRandomNumber(400)); GreenfootSound backsong = new GreenfootSound("level1.mp3"); backsong.play(); }

Page 37: Step by Step Membuat Game Sederhana

30. Banyak Level• Buat static variabel di Class Spacepublic static int level = 1;public static int skormenang = 10;

• Edit constructor Spaceprivate void prepare() { Ship ship = new Ship(); addObject(ship, 91, 221); Score score_field = new Score ("Score:"); addObject(score_field, 50, 50); GreenfootSound backsong = new GreenfootSound("level1.mp3"); backsong.play(); for(int i=0; i<level; i++) addObject(new Enemy(score_field), getWidth() + 1 , Greenfoot.getRandomNumber(400)); }

Page 38: Step by Step Membuat Game Sederhana

31. Buat new subclass World class Win (win.png)

Page 39: Step by Step Membuat Game Sederhana

32. Cek sudah menang? Edit class Enemy, method act(), tambahkan

if (count>= Space.skormenang) { int tmpnewlevel = ++Space.level; int tmpskormenang = Space.skormenang + 10;

Greenfoot.setWorld( new Win(tmpnewlevel, tmpskormenang) ); }

Page 40: Step by Step Membuat Game Sederhana

33. Edit class Winpublic class Win extends World{ private int newlevel, newskormenang; public Win(int newlevel, int newskormenang) { super(600, 400, 1); this.newlevel = newlevel; this.newskormenang = newskormenang; } public void act() { if(Greenfoot.mousePressed(this)) Greenfoot.setWorld( new Space(newlevel, newskormenang) ); } }

Page 41: Step by Step Membuat Game Sederhana

34. Buat Constructor baru di class Space

public Space(int newlevel, int newskormenang) { super(600, 400, 1); setPaintOrder(Ship.class, Laser.class); prepare(); level = newlevel; skormenang = newskormenang; }

Page 42: Step by Step Membuat Game Sederhana

Check point 6. Ketinggalan ? aja project greenfoot yang ada di dalam file zip CheckPoint6.zip

Page 43: Step by Step Membuat Game Sederhana

34. Game Over!.. Create new subclass World Gameover (gameover.png)

Page 44: Step by Step Membuat Game Sederhana

35. Edit class Ship method act().. Collision dengan object Enemy = kalah

public void act() { moveUp(); moveDown(); moveRight(); moveLeft(); fire(); canShoot--; if (getOneIntersectingObject(Enemy.class) != null) { getWorld().addObject(new Explosion(), getX(), getY()); Greenfoot.playSound("explosion.wav"); Greenfoot.setWorld( new Gameover(Space.level, Enemy.count) ); } }

Page 45: Step by Step Membuat Game Sederhana

36. Edit kode program class Gameover

public class Gameover extends World{

public Gameover(int level, int skor) { // Create a new world with 600x400 cells with a cell size of 1x1 pixels. super(600, 400, 1); Score score_field = new Score ("Anda kalah di level:" + level + " skor:" +skor); addObject(score_field, 300, 50); }}

NB = modifikasi variabel count di class enemy menjadi public supaya bisa diakses dari class Gameover

Page 46: Step by Step Membuat Game Sederhana

Check point 7. Ketinggalan ? aja project greenfoot yang ada di dalam file zip CheckPoint7.zip

Page 47: Step by Step Membuat Game Sederhana

Thankyou…. Question? Ask me: Hatma Suryotrisongko (0853.5900.7300) [email protected]