Rabu, 21 Januari 2009

GAME KETIGA



Game ke-3 saya beri nama Plus-Fire.Game ini merupakan game dimana pemain akan menambahkan 4angka yang berada dibawah,setelah itu memilih jawaban yang sesuai dengan jawaban 4angka yang telah dijumlahkan tersebut.
Game ini ditujukan kepada siswa tingkat SD kelas 1,2,3,4.Saya harap dengan game ini siswa dapat menambah kecepatan dalam belajar berhitung penjumlah.

berikut scrip2Nya:

Midllet:
/*
* 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 jeni
*/
public class MidletUtama1 extends MIDlet implements CommandListener{
Display display;
Splash1 sp;
Menu1 menu;
private Timer timer;
private TimerTask timerTask;
Command ok = new Command("ok",Command.OK,0);
Command back = new Command("back",Command.BACK,1);
Game3 game3;
Form form4,form5;
public void startApp() {
try {
display = Display.getDisplay(this);
sp = new Splash1(this);
display.setCurrent(sp);
} catch (Exception e) {
}
}

public void pauseApp() {
}

public void destroyApp(boolean unconditional) {
}

void startTimer() {
menu = new Menu1(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 mulaiGame(){
game3 = new Game3(this);
game3.start();

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

display.setCurrent(game3);
}

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

public void commandAction(Command c, Displayable d) {
if(c==back){
display.setCurrent(menu);
}
}
void about1(){
form4 = new Form("ABOUT");
form4.append(" Game ini merupakan game edukasi dalam bentuk matematik.Dengan game ini anak dapat belajar lebih cepat dalam penjumlahan.");
form4.addCommand(back);
form4.setCommandListener(this);
display.setCurrent(form4);
}
void petunjuk1(){
form5 = new Form("PETUNJUK");
form5.append(" Jumlahkan 4angka yang berada dibawah,Lalu tembak pesawat yang sesuai dengan jawaban yang benar.");
form5.addCommand(back);
form5.setCommandListener(this);
display.setCurrent(form5);
}
}

---------------------------------------------------------------------------------------------------------------------------------------
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;

/**
*
* @author jeni
*/
class Splash1 extends Canvas{
private MidletUtama1 midlet1;
Image gambar;
public Splash1(MidletUtama1 midlet) {
midlet1 = midlet;
try {
gambar = Image.createImage("/SPLAS.png");
} catch (Exception e) {
System.out.println("error di load gambar");
}
}

protected void paint(Graphics g) {
g.setColor(255,255,255);
g.fillRect(0, 0, getWidth(), getHeight());

g.drawImage(gambar, 0, 0, Graphics.TOP|Graphics.LEFT);
}

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

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


}

---------------------------------------------------------------------------------------------------------------------------------------
Menu:
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Font;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;

/**
*
* @author jeni
*/
public class Menu1 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;
MidletUtama1 midlet;
Image img;

public Menu1(MidletUtama1 midlet) {
this.midlet = midlet;
initializePicture();
index = 1;
isPlay = true;
Thread t = new Thread(this);
t.start();
}

protected void paint(Graphics g) {
g.setColor(0, 0, 0);
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+10, 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+10, 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+10, 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+10, 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("/Gmenu.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.about1();
break;
}
switch (index) {
case (3):
midlet.petunjuk1();
break;
}
switch (index) {
case (4):
midlet.exit();
break;
}
}
}
}

----------------------------------------------------------------------------------------------------------------------------------------

import java.util.Random;
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.Sprite;

/**
*
* @author jeni
*/
public class Game3 extends GameCanvas implements Runnable{
private MidletUtama1 midlet1;
private boolean isPlay;
Image gmb1,gmbpluru,ruko,gmbBledak,gmbMenang,gmbkalah;
Sprite player,tembak,rukoMlaku,mbledak;
int arah=getWidth()/2, left=getHeight()-70;
Sprite bulat [] = new Sprite[4];
int x,x1,x2,x3;
Random rmd = new Random();
Play play= new Play();
private Sprite[] jawaban= new Sprite[3];
private int[] jawabX= new int[3];
private int[] jawabXTemp = new int[3];
private int[] frameIdx= new int[3];
private int jawbBenar,jawbSalah1,jawbSalah2,soal1,soal2,soal3,soal4;
private int y,z,inRuko;
private int skor;
Image gJawabanBiru ;
double awan;

public Game3(MidletUtama1 midlet) {
super(false);
this.midlet1=midlet;
try {
play.playWavMidi("/SMS.MID");

gmb1=Image.createImage("/gmbPlayer.png");
gmbpluru=Image.createImage("/tembak.png");
ruko=Image.createImage("/ruko.png");
gmbMenang=Image.createImage("/menang.png");
gmbkalah=Image.createImage("/kalah.png");

rukoMlaku=new Sprite(ruko);
tembak=new Sprite(gmbpluru);
tembak.setPosition(getWidth()/2, getHeight()+2);

gJawabanBiru = Image.createImage("/kapalMungsuh.png");


player= new Sprite(gmb1,30,40);

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

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

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;

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

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

y-=1;
if (y <= -450) {
isReset=false;
resetPosisi();
}

inRuko++;
if(inRuko>getWidth()){
inRuko=0;
}

arah++;
if(arah>=getWidth()-20){
arah=arah-2;
}
if(arah<0){
arah=arah+2;
}

try {
Thread.sleep(20);
} catch (Exception e) {
System.out.println("salah");
}
}

}
boolean mlakuDewe=false;

public void paint(Graphics g) {
g.setColor(162, 189, 249);
g.fillRect(0, 0, getWidth(), getHeight());

rukoMlaku.setPosition(inRuko, getHeight()/2-4);
rukoMlaku.paint(g);
rukoMlaku.setPosition(inRuko-getWidth(), getHeight()/2-4);
rukoMlaku.paint(g);

if (mlakuDewe == true) {
tembak.move(0, -4);
tembak.paint(g);
if (tembak.getY() < 0) {
tembak.setPosition(getWidth() / 2, getHeight() + 2);
mlakuDewe = false;
}
}

player.setPosition(arah, left);
player.paint(g);

jawaban[0].setPosition(70+getWidth()+y, 30);
jawaban[1].setPosition(110+getWidth()+y, 30);
jawaban[2].setPosition(150+getWidth()+y, 30);
jawaban[0].paint(g);
jawaban[1].paint(g);
jawaban[2].paint(g);
g.setColor(220,250,230);
g.drawString("sekor= "+ skor, 5, 5,g.TOP|g.LEFT);
g.drawString(""+ jawbBenar, jawabX[jawabXTemp[0]]+y, jawaban[0].getY()+15, Graphics.TOP|Graphics.HCENTER);
g.drawString(""+ jawbSalah1, jawabX[jawabXTemp[1]]+y, jawaban[0].getY()+15, Graphics.TOP|Graphics.HCENTER);
g.drawString(""+ jawbSalah2, jawabX[jawabXTemp[2]]+y, jawaban[0].getY()+15, Graphics.TOP|Graphics.HCENTER);

g.setColor(0,0,0);
g.drawString(""+soal1, 30, getHeight()-25, g.TOP|g.HCENTER);
g.drawString(""+soal2, 90, getHeight()-25, g.TOP|g.HCENTER);
g.drawString(""+soal3, 150, getHeight()-25, g.TOP|g.HCENTER);
g.drawString(""+soal4, 210, getHeight()-25, g.TOP|g.HCENTER);

if(peng10>=10){
isPlay=false;
play.stopPlaying();
if(skor>80){
g.drawImage(gmbMenang, 0, 0, g.TOP|g.LEFT);
g.setColor(0,0,0);
g.drawString("sekor= "+ skor, 5, 5,g.TOP|g.LEFT);
}
if(skor<80){
g.drawImage(gmbkalah, 0, 0, g.TOP|g.LEFT);
g.setColor(0,0,0);
g.drawString("sekor= "+ skor, 5, 5,g.TOP|g.LEFT);
}
}
flushGraphics();
}



protected void keyPressed(int key) {
key=getKeyStates();

if((key==RIGHT_PRESSED)){
player.setTransform(Sprite.TRANS_NONE);
player.nextFrame();
arah=arah+3;
if(arah>getWidth()-40){
arah=arah-3;
}


}
if((key==LEFT_PRESSED)){
player.setTransform(Sprite.TRANS_MIRROR);
player.nextFrame();
arah=arah-3;
if(arah<0){
arah=arah+3;
}
}

if((key==FIRE_PRESSED)){
if(tembak.getY()>=getHeight()){
tembak.setPosition(player.getX()+15, player.getY());
mlakuDewe=true;
}
}

}



public void acak(){

int temp1 = 0, temp2 = 0;
soal1=rmd.nextInt(8);
soal2=rmd.nextInt(10);
soal3=rmd.nextInt(9);
soal4=rmd.nextInt(15);
jawbBenar=(soal1+soal2)+(soal3+soal4);

//mencari jawaban acak 1-100 yang berbeda dengan jawaban benar
do{
if(temp2==0){
temp1=rmd.nextInt(40);
if(temp1!=jawbBenar){
jawbSalah1=temp1;
temp2=1;
}
}else if(temp2==1){
temp1=rmd.nextInt(40);
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);
}


boolean isReset=false;
int peng10;

public void resetPosisi(){
y = 0;
peng10++;
jawaban[0].setPosition(70+getWidth(), 0);
jawaban[1].setPosition(110+getWidth(), 0);
jawaban[2].setPosition(150+getWidth(), 0);

isReset = true;
acak();
}

void tabrakJawaban(){
int z = jawabX[jawabXTemp[0]]+y;
System.out.println("jawaban yang bener ada di "+z);
int a = 70+getWidth()+y;
int b = 110+getWidth()+y;
int c = 150+getWidth()+y;
System.out.println("baris pertama "+a);
System.out.println("baris kedua"+b);
System.out.println("baris ketiga"+c);
if(tembak.collidesWith(jawaban[0], true)){
if(90+getWidth()==jawabX[jawabXTemp[0]]){
System.out.println("jawabn bener");
skor=skor+10;
resetPosisi();

}else{
System.out.println("salah 1");
resetPosisi();
}
}

if(tembak.collidesWith(jawaban[1], true)){
if(130+getWidth()==jawabX[jawabXTemp[0]]){
System.out.println("jawabn bener");
skor=skor+10;
resetPosisi();
}else{
System.out.println("salah 2");
resetPosisi();
}
}

if(tembak.collidesWith(jawaban[2], true)){
if(170+getWidth()==jawabX[jawabXTemp[0]]){
System.out.println("jawabn bener");
skor=skor+10;
resetPosisi();
}else{
System.out.println("salah 3");
resetPosisi();
}
}
}

}
--------------------------------------------------------------------------------------------------------------------------------------
untuk musik:

import javax.microedition.media.Manager;
import javax.microedition.media.MediaException;
import javax.microedition.media.Player;
import javax.microedition.media.PlayerListener;

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
import javax.microedition.media.control.VolumeControl;

/**
*
* @author jeni
*/
class Play implements PlayerListener{
// private Display display;
private static Player player;
private VolumeControl vc;

// static void playWavMidi(String file,String p)throws Exception {
void playWavMidi(String file) throws Exception {
player = Manager.createPlayer(getClass().getResourceAsStream(file),
"audio/midi");
System.out.print("sini");
player.addPlayerListener(this);
player.setLoopCount(-1);
player.prefetch();
player.realize();
vc = (VolumeControl)player.getControl("VolumeControl");
if (vc != null) {
vc.setLevel(100);
}
player.start();
}
public void stopPlaying(){
try {
player.stop();
} catch (MediaException ex) {
ex.printStackTrace();
}
}
public void playerUpdate(Player arg0, String arg1, Object arg2) {

}
}

Tidak ada komentar:

Posting Komentar