Praktek 6 Game Pimpong : Final

16.13 Diposting oleh Gunawan

Pada praktek sebelumnya praktek 5 Game Pimpong : User Input kita sudah menghasilkan sebuah game sederhana, berikutnya kita akan mencoba membuat score dari hasil permainan. Logikanya seperti ini : Jika kita tidak bisa menangkap bola maka score untuk HP bertambah 1 begitu juga sebaliknya. Berikut hasil akhir dari penambahan score:

Berikut penambahan script dari PongCanvas.java.

/* -------------------------------------

* Nama File : PongCanvas.java

* by Gunawan

* jagungodak@yahoo.com

*--------------------------------------

*/

import java.io.IOException;

import javax.microedition.lcdui.Graphics;

import javax.microedition.lcdui.Image;

import javax.microedition.lcdui.game.GameCanvas;

import javax.microedition.lcdui.game.Sprite;

import java.util.Random;

public class PongCanvas extends GameCanvas implements Runnable {

private int sleepTime=30;

private Image ballImg;

private Sprite ballSprite;

private int ballX = getWidth()/2;

private int ballY = getHeight()/2;

private final static int ballXVel=3;

private final static int ballYVel=1;

private int ballDirection=1;

private Image padImg;

private Sprite padSprite;

private int padX = 10;

private int padY = getHeight() / 2;

private final static int padYVel = 2;

private Sprite AISprite;

private int AIX = getWidth() - 10;

private int AIY = getHeight() / 2;

private final static int AIYVel = 2;

private int actX;

private int padScore = 0;

private int AIScore = 0;

public PongCanvas() {

super(false);

}

public void run(){

while(true){

updateScreen(getGraphics());

try{

Thread.sleep(sleepTime);

}catch(Exception ex){

}

}

}

public void start(){

try{

ballImg=Image.createImage("/ball.png");

padImg = Image.createImage("/pad.png");

}catch(IOException ioex){

System.out.println("Kesalahan Pada Image"+ioex);

}

ballSprite=new Sprite(ballImg,3,3);

ballSprite.defineReferencePixel(2, 2);

ballSprite.setRefPixelPosition(ballX, ballY);

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

padSprite.defineReferencePixel(1, 10);

padSprite.setRefPixelPosition(padX, padY);

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

AISprite.defineReferencePixel(3, 10);

AISprite.setRefPixelPosition(AIX, AIY);

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

AISprite.defineReferencePixel(3, 10);

AISprite.setRefPixelPosition(AIX, AIY);

Thread runner=new Thread(this);

runner.start();

}

private void createBackground(Graphics g){

g.setColor(0x000000);

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

}

private void updateScreen(Graphics g){

createBackground(g);

createScoreboard(g);

moveBall();

movePad();

moveAI();

ballSprite.setRefPixelPosition(ballX , ballY);

ballSprite.paint(g);

padSprite.setRefPixelPosition(padX, padY);

padSprite.paint(g);

AISprite.setRefPixelPosition(AIX, AIY);

AISprite.paint(g);

flushGraphics();

}

public void moveBall(){

if (ballDirection == 0) {

ballX -= ballXVel;

ballY -= ballYVel;

} else if (ballDirection == 1) {

ballX += ballXVel;

ballY -= ballYVel;

} else if (ballDirection == 2) {

ballX += ballXVel;

ballY += ballYVel;

} else if (ballDirection == 3) {

ballX -= ballXVel;

ballY += ballYVel;

}

if (ballDirection == 0 && ballX <>

ballDirection = 1;

AIScore++;

} else if (ballDirection == 0 && ballY <>

ballDirection = 3;

} else if (ballDirection == 1 && ballY <>

ballDirection = 2;

} else if (ballDirection == 1 && ballX > getWidth()) {

ballDirection = 0;

padScore++;

if (sleepTime > 5) sleepTime--;

} else if (ballDirection == 2 && ballY > getHeight()) {

ballDirection = 1;

} else if (ballDirection == 2 && ballX > getWidth()) {

ballDirection = 3;

padScore++;

if (sleepTime > 5) sleepTime--;

} else if (ballDirection == 3 && ballY > getHeight()) {

ballDirection = 0;

} else if (ballDirection == 3 && ballX <>

ballDirection = 2;

AIScore++;

}

if (ballDirection == 0 && ballSprite.collidesWith(padSprite, false)) {

ballDirection = 1;

} else if (ballDirection == 3 && ballSprite.collidesWith(padSprite, false)) {

ballDirection = 2;

} else if (ballDirection == 1 && ballSprite.collidesWith(AISprite, false)) {

ballDirection = 0;

} else if (ballDirection == 2 && ballSprite.collidesWith(AISprite, false)) {

ballDirection = 3;

}

sleepTime += AIScore - padScore;

if (sleepTime < sleeptime =" 5;

}

private void movePad() {

int keyState = getKeyStates();

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

padY -= padYVel;

} else if ((keyState & DOWN_PRESSED) != 0 && padY <>

padY += padYVel; }

}

private void moveAI() {

Random random = new Random();

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

if (ballY <> actX && AIY > AISprite.getHeight() / 2) AIY -= AIYVel;

if (ballY > AIY && ballX > actX && AIY <>

}

private void createScoreboard(Graphics g) {

g.setColor(0xffffff);

g.drawString(padScore + " - " + AIScore, getWidth() / 2, 20, Graphics.HCENTER | Graphics.TOP);

}

}

2 komentar:

  1. Anonim mengatakan...

    artikel ini sangat bagus buat kami mahasiswa tkj. tapi pak , kita belum begitu ngerti. bleh kan sambil nyoba di rumah sambil nanya

  2. novii mengatakan...

    wajid di coba

Posting Komentar