Rabu, 22 April 2009

Membuat game pong di hp

Akhirnya setelah sekian lama tidak “ngoprek” blog,saya luncurkan posting terbaru saya…(Lebai mode on)

Di bawah ini merupakan script java untuk membuat game mobile “kacangan”..

Tapi silahkan dicoba..

^^

//Simpan source code dibawah ini sesuai dengan nama classnya(CanvasPong.java)

import java.io.IOException;

import javax.microedition.lcdui.game.GameCanvas;

import javax.microedition.lcdui.game.Sprite;

import javax.microedition.lcdui.Graphics;

import javax.microedition.lcdui.Image;

import java.util.Random;

public class CanvasPong extends GameCanvas implements Runnable {

private int delayWaktu = 30; // delay waktu

private Image bolaImage; // gambar bola

private Sprite bolaSprite; //sprite bola

private int xAwal = getWidth() / 2; // ukuran awal x dari bola

private int yAwal = getHeight() / 2; // ukuran awal y dari bola

private final static int xImp = 3;

private final static int yImp = 1;

private int arahBola = 1; // menentukan status arah bola

private Image padImage; // gambar player pad

private Sprite padSprite; // sprite player pad

private int padX = 10; // letak x awal dari player pad

private int padY = getHeight() / 2; letak y awal dari player pad

private final static int padImp = 2;

private Sprite AISprite; // sprite AI

private int AIX = getWidth() - 10; //letak x awal dari AI pad

private int AIY = getHeight() / 2; //letak y awal dari AI pad

private final static int AIImp = 2;

private int action;

private int playerSkor = 0; //inialisasi awal skor

private int AISkor = 0;

public CanvasPong() {

super(false);

}

public void run() {

while(true) {

updateScreen(getGraphics());

try {

Thread.sleep(delayWaktu);

} catch (Exception e) {

}

}

}

public void start() {

try {

bolaImage = Image.createImage(”/bola.png”);

padImage = Image.createImage(”/pad.png”);

} catch (IOException ioex) {

System.out.println(ioex);

}

bolaSprite = new Sprite(bolaImage, 3, 3);

bolaSprite.defineReferencePixel(2, 2);

bolaSprite.setRefPixelPosition(xAwal, yAwal);

padSprite = new Sprite(padImage, 3, 20);

padSprite.defineReferencePixel(1, 10);

padSprite.setRefPixelPosition(padX, padY);

AISprite = new Sprite(padImage, 3, 20);

AISprite.defineReferencePixel(3, 10);

AISprite.setRefPixelPosition(AIX, AIY);

Thread runner = new Thread(this);

runner.start();

}

private void buatBackground(Graphics g) {

g.setColor(0×000000);

g.fillRect(0, 0, getWidth(), getHeight());

}

private void updateScreen(Graphics g) {

buatBackground(g);

buatSkorBoard(g);

gerakBola();

gerakPad();

gerakAi();

bolaSprite.setRefPixelPosition(xAwal, yAwal);

bolaSprite.paint(g);

padSprite.setRefPixelPosition(padX, padY);

padSprite.paint(g);

AISprite.setRefPixelPosition(AIX, AIY)

AISprite.paint(g);

flushGraphics();

}

private void gerakBola() {

if (arahBola == 0) { xAwal -= xImp; yAwal -= yImp;

} else if (arahBola == 1) {

xAwal += xImp; yAwal -= yImp;

} else if (arahBola == 2) {

xAwal += xImp; yAwal += yImp;

} else if (arahBola == 3) {

xAwal -= xImp; yAwal += yImp;

}

if (arahBola == 0 && xAwal <>

arahBola = 1; AISkor++;

} else if (arahBola == 0 && yAwal <>

{ arahBola = 3;

{ else if (arahBola == 1 && yAwal <>

arahBola = 2;

} else if (arahBola == 1 && xAwal > getWidth()) {

arahBola = 0;

playerSkor++;

if (delayWaktu > 5) delayWaktu–;

} else if (arahBola == 2 && yAwal > getHeight()) {

arahBola = 1;

} else if (arahBola == 2 && xAwal > getWidth()) {

arahBola = 3;

playerSkor++;

if (delayWaktu > 5) delayWaktu–;

} else if (arahBola == 3 && yAwal > getHeight()) {

arahBola = 0;

} else if (arahBola == 3 && xAwal <>

arahBola = 2;

AISkor++;

}

if (arahBola == 0 && bolaSprite.collidesWith(padSprite, false)) {

arahBola = 1;

} else if (arahBola == 3 && bolaSprite.collidesWith(padSprite, false)) {

arahBola = 2;

} else if (arahBola == 1 && bolaSprite.collidesWith(AISprite, false)) {

arahBola = 0;

} else if (arahBola == 2 && bolaSprite.collidesWith(AISprite, false)) {

arahBola = 3;

}

delayWaktu += AISkor - playerSkor;

if (delayWaktu < delaywaktu ="">

}

private void padGerak() {

int keyState = getKeyStates();

if ((keyState & UP_PRESSED) != 0 && padY > padSprite.getHeight() / 2) {

padY -= padImp;

} else if ((keyState & DOWN_PRESSED) != 0 && padY <= getHeight() - padSprite.getHeight() / 2) {

padY += padImp;

}

}

private void AIGerak() {

Random random = new Random();

action = getWidth() / 3 + Math.abs(random.nextInt() % (getWidth() / 8));

if (yAwal <> action && AIY > AISprite.getHeight() / 2) AIY -= AIImp;

if (yAwal > AIY && xAwal > action && AIY <>

}

private void buatSkorBoard(Graphics g) {

g.setColor(0xffffff);

g.drawString(playerSkor + ” - ” + AISkor, getWidth() / 2, 20, Graphics.HCENTER | Graphics.TOP);

}

}

O ya hampir lupa..

Ini adalah gambar dari bola dan padnya..

bola

bola

Lalu ini padnya..

pad

pad

Nah ni buat midletnya..

(Simpan dengan nama Pong.java)

import javax.microedition.lcdui.Display;
import javax.microedition.midlet.MIDlet;

public class Pong extends MIDlet {

private static CanvasPong canvas;

public Pong() {

canvas = new CanvasPong();

}

public void startApp() {

Display display = Display.getDisplay(this);

canvas.start();

display.setCurrent(canvas);

}

public void pauseApp() {

}

public void destroyApp(boolean unconditional) {

}

}

Maaf klu tampilan blognya masih acak”an…

=D