Senin, 19 Januari 2009

GAME KEDUA


Game kedua saya yaitu multiple car.Game ini saya buat untuk tingkat SD kelas 3 keatas.Tujuan game ini adalah untuk belajar perkalian.Game ini adalah game dimana player berbentuk mobil. Cara kerja game ini adalah menabrak jawaban yang benar.Jika benar maka skor anda bertambah 10,dan jika salah skor anda -10.

untuk midletNnya:

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

import java.util.Timer;
import java.util.TimerTask;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

/**
* @author sendal
*/
public class MidletUtama extends MIDlet implements CommandListener {

Display display;
Game2 game2;
Menu menu;
Command back = new Command("back", Command.BACK, 1);
Command ok = new Command("ok", Command.OK, 0);
Splash sp;
private Timer timer;
private TimerTask timerTask;
//MidletUtama midlet;
Play play = new Play();

public void startApp() {
try {
display = Display.getDisplay(this);
// game2 = new Game2();
// game2.start();
sp = new Splash(this);
display.setCurrent(sp);
} catch (Exception ex) {
System.out.print("midlet salah");
}
}

void startTimer() {
menu = new Menu(this);
timer = new Timer();
timerTask = new TimerTask() {

public void run() {
display.setCurrent(menu);
}
};
timer.schedule(timerTask, 2000);
}

void stopTimer() {
timer.cancel();
timerTask.cancel();

}

public void pauseApp() {
}

public void destroyApp(boolean unconditional) {
}

public void mulaiGame() {

game2 = new Game2(this);
game2.start();

game2.addCommand(back);
game2.setCommandListener(this);


display.setCurrent(game2);
}

public void petunjunk() {
Form form1 = new Form("Petunjuk");
form1.append(" Gunakan tombol arah kanan untuk menggerakkan player kekanan,dan kiri untuk arah kekiri.Pilih jawaban yang sesuai dari soal yang muncul disebelah kiri.");
form1.addCommand(back);
form1.setCommandListener(this);
display.setCurrent(form1);
}

public void about() {
Form form2 = new Form("About");
form2.append(" Game ini adalah game perkalian dimana anak bermain game sambil belajar.Game ini juga dibuat agar anak lebih suka belajar perkalian.karena masih banyak anak yang kurang cepat dalam menjawab soal perkalian.Untuk itu semoga dalam game ini akan memberikan manfaat bagi anak."
);

form2.addCommand(back);
form2.setCommandListener(this);

display.setCurrent(form2);
}

public void exit() {
destroyApp(false);
notifyDestroyed();
}

public void commandAction(Command c, Displayable d) {
if (c == back) {
display.setCurrent(menu);
play.stopPlaying();
}
}
}
--------------------------------------------------------------------------------------------
untuk splash:

import javax.microedition.lcdui.Canvas;

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;

/**
*play.plaFile(/dmasiv.mid)
* @author jeni
*/
class Splash extends Canvas{
private MidletUtama midlet1;
int w,h;
Image img,gambar;

Splash(MidletUtama midlet) {
w=getWidth();
h=getHeight();
midlet1=midlet;
try{

img=Image.createImage("/multicar.jpg");
// gambar=Image.createImage("/play angka.png");
}
catch(Exception ex){
ex.printStackTrace();
}
}

protected void paint(Graphics g) {
// g.setColor(0,0,0);
// g.drawRect(0, 0, getWidth(), getHeight());
g.drawImage(img, getWidth()/2, getHeight()/2, g.HCENTER|g.VCENTER);
// g.drawImage(gambar, getWidth()/2, getHeight()/2, g.HCENTER|g.VCENTER);

}
protected void hideNotify(){
midlet1.stopTimer();
}
protected void showNotify(){
midlet1.startTimer();
}

}

--------------------------------------------------------------------------------------------
untuk menu:

import javax.microedition.lcdui.Canvas;

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Font;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;

/**
*
* @author jeni
*/
public class Menu extends Canvas implements Runnable {

boolean isPlay;
Font milih = Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_BOLD, Font.SIZE_LARGE);
Font takMilih = Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_PLAIN, Font.SIZE_MEDIUM);
Font biasa = Font.getFont(Font.FACE_PROPORTIONAL, Font.STYLE_BOLD, Font.SIZE_LARGE);
int index;
MidletUtama midlet;
Image img;
Game2 game2;

public Menu(MidletUtama midlet) {
this.midlet = midlet;
initializePicture();
index = 1;
isPlay = true;
Thread t = new Thread(this);
t.start();
//setCommandListener(game2);
}

protected void paint(Graphics g) {
g.setColor(255, 255, 255);
g.fillRect(0, 0, getWidth(), getHeight());
g.drawImage(img, getWidth() / 2, getHeight() / 2, Graphics.HCENTER | Graphics.VCENTER);

if (index == 1) {
g.setColor(0, 0, 0);
g.setFont(milih);
} else {
g.setColor(250, 0, 0);
g.setFont(takMilih);
}

g.drawString("Start", getWidth() / 2, getHeight() / 2 - g.getFont().getHeight(), Graphics.BOTTOM | Graphics.HCENTER);
if (index == 2) {
g.setColor(0, 0, 0);
g.setFont(milih);
} else {
g.setColor(250, 0, 0);
g.setFont(takMilih);
}

g.drawString("about", getWidth() / 2, getHeight() / 2, g.BOTTOM | g.HCENTER);
if (index == 3) {
g.setColor(0, 0, 0);
g.setFont(milih);
} else {
g.setColor(250, 0, 0);
g.setFont(takMilih);
}
g.drawString("petunjuk", getWidth() / 2, getHeight() / 2 + g.getFont().getHeight(), g.BOTTOM | g.HCENTER);
if (index == 4) {
g.setColor(0, 0, 0);
g.setFont(milih);
} else {
g.setColor(250, 0, 0);
g.setFont(takMilih);
}
g.drawString("Exit", getWidth() / 2, getHeight() / 2 + g.getFont().getHeight(), Graphics.TOP | Graphics.HCENTER);

}


public void run() {
while (isPlay) {
try {
Thread.sleep(20);
} catch (Exception x) {
}
repaint();
}
}

private void initializePicture() {
try {
img = Image.createImage("/menu.jpg");
} catch (Exception ex) {
}
}

protected void keyPressed(int key) {
System.out.println("indeks = "+index);
if (getGameAction(key) == Canvas.DOWN) {
if (index <> 1) {
index--;
}
}
if (getGameAction(key) == Canvas.FIRE) {

switch (index) {
case (1):
midlet.mulaiGame();
break;
}
switch (index) {
case (2):
midlet.about();
break;
}
switch (index) {
case (3):
midlet.petunjunk();
break;
}
switch (index) {
case (4):
midlet.exit();
break;
}
}
}
}

--------------------------------------------------------------------------------------------
ini adalah script game ke-2

import java.util.Random;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.GameCanvas;

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
import javax.microedition.lcdui.game.LayerManager;
import javax.microedition.lcdui.game.Sprite;

/**
*
* @author sendal
*/
public class Game2 extends GameCanvas implements Runnable {

private boolean isPlay;
private Image mobil, jalanRaya, jalanRaya2,menang,kalah;
private Sprite player, spriteJalanRaya;
private LayerManager layerManager1;
private long delay = 20;
private int skor;
//Command back = new Command("back",Command.BACK,1);
Menu menu;
MidletUtama midlet;
private int y;
private Random rmd = new Random();
private Sprite jawaban[] = new Sprite[3];
int soal1,soal2,jawbBenar,jawbSalah1,jawbSalah2;
private int [] jawabX = new int[3];
private int [] jawabXTemp = new int[3];
Play play = new Play();

public Game2(MidletUtama midlet) {
super(false);
this.midlet=midlet;
//addCommand(back);
//setCommandListener(this);

try {
play.playWavMidi("/SMS.MID");

mobil = Image.createImage("/mob.png");
jalanRaya = Image.createImage("/jalan.png");
menang = Image.createImage("/MENANG.png");
kalah = Image.createImage("/Untitled.png");

player = new Sprite(mobil);
// player.setPosition(getWidth() / 2, getHeight()-50);

spriteJalanRaya = new Sprite(jalanRaya);
// spriteJalanRaya.setPosition(70, 0);

Image gJawabanBiru = Image.createImage("/biru.png");
Image gJawabanAbang = Image.createImage("/abang.png");
Image gJawabanIjo = Image.createImage("/ijo.png");

jawaban[0] = new Sprite(gJawabanAbang);
jawaban[1] = new Sprite(gJawabanBiru);
jawaban[2] = new Sprite(gJawabanIjo);

jawaban[0].setPosition(70, 0);
jawaban[1].setPosition(110, 0);
jawaban[2].setPosition(150, 0);

jawabX[0]=jawaban[0].getX()+jawaban[0].getWidth()/2;
jawabX[1]=jawaban[1].getX()+jawaban[1].getWidth()/2;
jawabX[2]=jawaban[2].getX()+jawaban[2].getWidth()/2;
// layerManager1=new LayerManager();
// layerManager1.append(spriteJalanRaya);
} catch (Exception ex) {
System.out.print("asu");
}

acak();
//acakTempat();
}

public void run() {
Graphics gr = getGraphics();
while (isPlay == true) {

tampilGambar(gr);
berjalan();
keyPressed();
tabrakJawaban();
x+=3;
// ry--;
if (x >= getHeight()) {
x = 0;
}

try {
Thread.sleep(delay);
} catch (InterruptedException ie) {
System.out.print("salah");
}
}
}

public void start() {
isPlay = true;
Thread t = new Thread(this);
t.start();
}

public void stop() {
isPlay = false;
}

int x = 0;

public void tampilGambar(Graphics g) {
g.setColor(10, 174, 60);
g.fillRect(0, 0, getWidth(), getHeight());

g.setColor(255, 255, 255);
g.drawString("Skor= " + skor, 5, 5, g.TOP | g.LEFT);

spriteJalanRaya.setPosition(70, x);
spriteJalanRaya.paint(g);

spriteJalanRaya.setPosition(70, x - getHeight());
spriteJalanRaya.paint(g);


g.setColor(255, 255, 255);
g.drawString("Soal:"+soal1+"x"+soal2, 5, 20, Graphics.TOP|Graphics.LEFT);
if(isJawabanVisible){
jawaban[0].paint(g);
jawaban[1].paint(g);
jawaban[2].paint(g);
g.setColor(220,250,230);
g.drawString(""+ jawbBenar, jawabX[jawabXTemp[0]], jawaban[0].getY()+15, Graphics.TOP|Graphics.HCENTER);
g.drawString(""+jawbSalah1, jawabX[jawabXTemp[1]], jawaban[0].getY()+15, Graphics.TOP|Graphics.HCENTER);
g.drawString(""+jawbSalah2, jawabX[jawabXTemp[2]], jawaban[0].getY()+15, Graphics.TOP|Graphics.HCENTER);

}

player.setPosition(rx, ry);
player.paint(g);


if(roundNumber>=10){
isPlay=false;
play.stopPlaying();
if(skor>90){
g.setColor(231, 253, 83);
g.drawImage(menang, getWidth()/2, getHeight()/2, g.HCENTER|g.VCENTER);
g.setColor(0, 0, 0);
g.drawString("Skor yang anda peroleh= " + skor, getWidth()/2, 15, g.TOP | g.HCENTER);
}
if(skor<100){ peroleh= " + skor, getWidth()/2, 15, g.TOP | g.HCENTER); } } flushGraphics(); } int roundNumber = 0; boolean isJawabanVisible = true; void tabrakJawaban(){ if(player.collidesWith(jawaban[0], true)){ if(jawaban[0].getX()+jawaban[0].getWidth()/2==jawabX[jawabXTemp[0]]){ System.out.println(" isjawabanvisible =" false;" skor="skor+10;" ry="ry-10);" isjawabanvisible =" false;" skor="skor-10;" ry="ry-10);" 2="=" isjawabanvisible =" false;" skor="skor+10;" ry="ry-10);" isjawabanvisible =" false;" skor="skor-10;" ry="ry-10);" 2="=" isjawabanvisible =" false;" skor="skor+10;" ry="ry-10);" isjawabanvisible =" false;" skor="skor-10;" ry="ry-10);"> getHeight()) {
resetPosisi();
}

isJawabanVisible = true;

}



public void resetPosisi(){
roundNumber++;
y = -(2*20);
isJawabanVisible = true;
acak();
}

int rx = getWidth() / 2;
int ry = getHeight()-80;
public void keyPressed() {
int key = getKeyStates();

if ((key == RIGHT_PRESSED)) {
rx = rx + 3;
if(rx > 150){
rx=rx-3;
}
}
if ((key == LEFT_PRESSED)) {
rx = rx - 3;
if (rx < 70) {
rx=rx+3;
}
}

}

public void acak(){
int temp1 = 0, temp2 = 0;
soal1=rmd.nextInt(11);
soal2=rmd.nextInt(11);
jawbBenar=soal1*soal2;

//mencari jawaban acak 1-100 yang berbeda dengan jawaban benar
do{
if(temp2==0){
temp1=rmd.nextInt(100);
if(temp1!=jawbBenar){
jawbSalah1=temp1;
temp2=1;
}
}else if(temp2==1){
temp1=rmd.nextInt(100);
if(temp1!=jawbBenar && temp1!=jawbSalah1){
jawbSalah2=temp1;
temp2=2;
}
}

//angka jawaban di tempat..
else if(temp2==2){
temp1=rmd.nextInt(3);
jawabXTemp[0]=temp1;
temp2=3;
}else if(temp2==3){
temp1=rmd.nextInt(3);
if(temp1!=jawabXTemp[0]){
jawabXTemp[1]=temp1;
temp2=4;
}
}else if(temp2==4){
temp1=rmd.nextInt(3);
if(temp1!=jawabXTemp[0] && temp1!=jawabXTemp[1]){
jawabXTemp[2]=temp1;
temp2=5;
}
}
}while(temp2!=5);
}

}

Tidak ada komentar:

Posting Komentar