Senin, 11 April 2011

Pembuatan Aplikasi Game Snake 3D pada Mobile..



Assalamu'alaikum Wr.Wb.
Ini merupakan tugas yang diberikan oleh Dosen saya untuk Mata Kuliah Pemrograman Multimedia. Sebenernya beliau memberikan 3 pilihan tugas, salah satunya yaitu membuat Aplikasi Game pada mobile. Sebelumnya saya bingung harus memilih dari ketiga tugas tersebut, namun setelah berpikir-pikir, mungkin sebaiknya saya membahas tentang pembuatan aplikasi game ini. oke, pada kesempatan ini, aplikasi  game yang saya buat ini adalah game Snake 3D. berawal dari perkembangan aplikasi permainan pada telepon seluler juga telah semakin maju, ini terlihat dari makin banyaknya jenis – jenis permainan yang ada pada telpon seluler.  Seperti kita ketahui bahwa semua orang butuh permainan tidak hanya untuk hiburan, tetapi juga untuk melatih logika, insting dan ketepatan. Oleh karena itu, saya membuat sebuah aplikasi permainan sederhana ini dengan menggunakn J2ME

Apa sih J2ME itu ?
Java2 Micro Edition atau yang biasa disebut J2ME adalah lingkungan pengembangan yang didesain untuk meletakkan perangkat lunak JAVA pada barang elektronik berserta perangkat pendukungnya. Pada J2ME, jika perangkat lunak berfungsi dengan baik pada sebuah perangkat maka belum tentu juga berfungsi baik pada perangkat yang lain. J2ME membawa Java ke dunia informasi, komunikasi, dan perangkat komputasi yang lebih kecil dibandingkan dengan computer desktop. J2ME biasa digunakan pada telepon selular, pager, PDA, dan sejenisnya.
Teknologi J2ME juga memiliki beberapa keterbatasan jika diaplikasikan pada ponsel. J2ME sangat bergantung pada device yang digunakan, bisa dari merk ponsel, maupun kemampuan ponsel, dan dukungan terhadap teknologi J2ME. MIsalnya, jika sebuah ponsel tidak memiliki kamera maka jelas J2ME pada ponsel tersebut tidak dapat mengakses kamera.

Apa sih Game Snake 3D itu?

Permainan Snake 3D adalah salah satu permainan sederhana dan populer yang dikenal masyarakat dan dimainkan pada telepon seluler. Disini objek ular mencari makanan berupa objek kubus. Hal ini, dipengaruhi oleh kecepatan ular tersebut dalam mencari makanan yang disediakan sesuai dengan vektor posisi makanan itu ditampilkan. Semakin banyak objek ular tersebut memakan objek makanan, maka objek ularakan semakin bertambah panjang. Saat objek ular memakan makanan, maka pemain akan mendapatkan point. Point itu akan semakin terus bertambah, apabila objek ular terus memakan makanan. Pertambahan point akan bertambah sebanyak 2 poin. Pada permainan Snake 3D ini, pemain dapat memilih tingkat kesulitan sesuai dengan keinginan. Tingkat kesulitan yang terdapat pada permainan ini antara lain: Tingkat Easy, Normal, dan Hard.Permainan akan berakhir (Game Over) jika objek ular tersebut keluar dari maze atau objek ular menabrak objek nya sendiri.

Terus, Apa aja sih yang diperlukan untuk membuat game ini??
§  pertama kali yang harus kita install yaitu JAVA itu sendiri,untuk memproses code yang akan kita gunakan. JAVA yang digunakan jdk 1.6. silahkan mendowload disini
§  Selanjutnya kita juga menginstall WTK. ini merupakan software emulator yang digunakan untuk menge test aplikasi mobile yang telah dibuat. Silahkan Download disini
§  Kita juga menginstall editor Notepad ++ . software ini berguna sebagai editor coding atau tempat mengetikkan code program. Silahkan Download disini.

Just Info
pada game ini kita membuat 6 class pada java, yaitu:
1. MIDletMain.java
2. SnakeBody.java
3. Snakecube3D.java
4. SnakeFood.java
5. Ground.java
6. GameLoop.java
Keenam class itu merupakan pembangun game ini.
Ø  MIDletMain.java merupakan kelas utama sebagai Midlet. Disini kita mendeklarasikan midletmain dan mendeklarasikan objek dan variabel yang digunakan. Kemudian kita membuat method untuk mengekekusi class utama aplikasi permainan atau menjalankan aplikasi ini. berikut code program untuk class MIDletMain.
import java.util.Timer;
import java.util.TimerTask;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;




public class MIDLetMain extends MIDlet implements CommandListener {


static MIDLetMain instance;
GameLoop displayable= new GameLoop();
Timer itimer= new Timer();
public MIDLetMain(){
this.instance=this;
}


public void startApp() {
Display.getDisplay(this).setCurrent(displayable);


}


public void pauseApp() {
}


public void destroyApp(boolean unconditional) {
}
public static void quitApp(){
instance.destroyApp(true);
instance.notifyDestroyed();
instance=null;
}


public void commandAction(Command command, Displayable displayable) {
}


}















Ø  SnakBody.java merupakan coding untuk membentuk tampilan badan snake. Snake disini membentuk gambar 3D. Disini juga di deklarasikan panjang badan snake, nilai yang diperoleh pemain, level dan kontrol pointer. Berikiut ini code untuk class SnakeBody.





public class SnakeBody {








private Snakecube3D[] myBody=new Snakecube3D[400] ;
private int[] colors=new int[]{0x880000,0xCC0000,0xFF0000,0xFF2F2F,0xFF4A4A,0xFF7979,0xFFA4A4};
private short len=5;
private short score;
private short value;
private short direction=4;
private float ycamera=30;
private float xcamera;
private float zcamera=30;
public static boolean GameOver=false;
public static boolean canChange=true;
public static boolean GamePause;




public SnakeBody() {
myBody[0]=new Snakecube3D((short)0,(int)(0xFFCC00));
// for() {
myBody[i]=new Snakecube3D(i,colors[i%7]);
}
}


public void setGamePause(boolean GamePause) {
this.GamePause = GamePause;
}


public boolean isGamePause() {
return GamePause;
}


public void setDirection(short dir) {
if(direction>=3&&dir<3) { direction = dir; canChange=false; } else if(direction<=2&&dir>2){
direction = dir;
canChange=false;
}


}




public Snakecube3D[] getMyBody() {
return myBody;
}
public void update(SnakeFood myfood) {


for(int i=len-1;i>0;i--) {
myBody[i].setVertix(myBody[i-1].getVert());
}




if(direction==1) {


myBody[0].decreaseZ();
zcamera-=5;
} else
if(direction==2) {
myBody[0].increaseZ();
zcamera+=5;
} else if(direction==3) {
myBody[0].increaseX();
xcamera+=4;


} else if(direction==4) {
myBody[0].decreaseX();
xcamera-=4;
}


GameOver=myBody[0].getCheckBound(direction);


myfood.update(myBody[0],direction);


checkAllBody();
if(myfood.checkEaten()) {


score+=value;
len++;
myBody[len-1]=new Snakecube3D((short)(len-1),colors[len%7]);
myBody[len-1].setIVbcube(myBody[len-2].getIVbcube());
myfood.generateFood();
myfood.setEaten(false);
}


canChange=true;
}
public void checkAllBody() {
//for() {
if(myBody[0].getCheckBodyCollision(direction,myBody[i],i)) {
GameOver=true;


return;
}
}
}
public short getScore() {
return score;
}




public float getXcamera() {
return xcamera;
}


public float getYcamera() {
return ycamera;
}


public float getZcamera() {
return zcamera;
}


public short getLen() {
return len;
}


public void setValue(short value) {
this.value = value;
}




}

Ø  Snakecube3D.java merupakan bagian yang  mendeklarasian warna yang terdapat pada kubus 3D nya. Dan membuat arah gerakan snake tersebut untuk mencari makanan. Arah gerakan snake tersebut ke arah kanan,kiri,atas dan bawah. berikut adalah code program dari class SnakeCube3D.



import javax.microedition.m3g.Appearance;
import javax.microedition.m3g.Fog;
import javax.microedition.m3g.IndexBuffer;
import javax.microedition.m3g.Material;
import javax.microedition.m3g.Transform;
import javax.microedition.m3g.TriangleStripArray;
import javax.microedition.m3g.VertexArray;
import javax.microedition.m3g.VertexBuffer;


public class Snakecube3D {
short[] vert={
0,0,0, 0,5,0, -5,0,0, -5,5,0,


0,0,-5, 0,5,-5, 0,0,0, 0,5,0 ,


0,5,0, 0,5,-5, -5,5,0, -5,5,-5 ,


-5,0,0, -5,5,0, -5,0,-5, -5,5,-5 ,


-5,0,-5, -5,5,-5, 0,0,-5, 0,5,-5 ,


};
byte[] norm = {
0, 0, 127, 0, 0, 127, 0, 0, 127, 0, 0, 127,
0, 127, 0, 0, 127, 0, 0, 127, 0, 0, 127, 0,
0, 127, 0, 0, 127, 0, 0, 127, 0, 0, 127, 0,
-127, 0, 0, -127, 0, 0, -127, 0, 0, -127, 0, 0,
0, 0,-127, 0, 0,-127, 0, 0,-127, 0, 0,-127,
};
private int [] stripLen={4,4,4,4,4};
private Appearance iAppearancecube;
private VertexBuffer iVbcube;
private VertexArray verticeArray;
private IndexBuffer iIbcube;
private VertexArray normArray;
private Material iMaterial;
private Transform transform;
private Fog fm;
private int color=0xFF0000;
public Snakecube3D() {
init();
}
public Snakecube3D(short index,int color) {
for() {
vert[i]=(short)(vert[i]+ 5*index);
}


this.color=color;
init();
}
public void init() {
transform = new Transform();
transform.postTranslate(0.0f,0.0f,0.0f);
verticeArray=new VertexArray(vert.length/3,3,2);
verticeArray.set(0,vert.length/3,vert);
normArray = new VertexArray(norm.length / 3, 3, 1);
normArray.set(0, norm.length/3, norm);
iVbcube=new VertexBuffer();
iVbcube.setPositions(verticeArray,1.0f,null);
iVbcube.setNormals(normArray);
iIbcube=new TriangleStripArray(0,stripLen);
iAppearancecube= new Appearance();
iMaterial=new Material();
iMaterial.setColor(Material.DIFFUSE,color);
iMaterial.setShininess(10.0f);




iAppearancecube.setMaterial(iMaterial);


}




public void increaseX() {


for() {
vert[i]=(short)(vert[i]+5);
}
newVertexarr();
}
public void decreaseX() {


for(s) {
vert[i]=(short)(vert[i]-5);
}
newVertexarr();
}
public void increaseZ() {


for() {
vert[i]=(short)(vert[i]+5);
}
newVertexarr();
}
public void decreaseZ() {


for() {
vert[i]=(short)(vert[i]-5);
}
newVertexarr();
}


public void newVertexarr() {


verticeArray=new VertexArray(vert.length/3,3,2);
verticeArray.set(0,vert.length/3,vert);
iVbcube=new VertexBuffer();
iVbcube.setPositions(verticeArray,1.0f,null);
iVbcube.setNormals(normArray);


}
public boolean getCheckBound(short dir) {


switch(dir) {
case 1: return vert[35]<=-50; case 2: return vert[26]>=50;
case 3:return vert[33]>=50;
case 4:return vert[24]<=-50; } return false; } public short getVertat(short index) { return vert[index]; } public boolean getCheckEat(short dir,short x,short z) { switch(dir) { case 1: case 3: return vert[33]==x&&vert[35]==z; case 2: return vert[27]==x&&vert[29]==z; case 4:return vert[24]==x&&vert[26]==z; } return false; } public void setVertix(short[] newver) { for() { vert[i]=newver[i]; } newVertexarr(); } public boolean getCheckBodyCollision(short dir,Snakecube3D bodypart,int i) { switch(dir) { case 1: case 4: return (vert[33]==bodypart.getVertat((short)33)&&vert[35]==bodypart.getVertat((short)35)); case 2: case 3:return (vert[24]==bodypart.getVertat((short)24)&&vert[26]==bodypart.getVertat((short)26)); } return false; } public void setIVbcube(VertexBuffer iVbcube) { this.iVbcube = iVbcube; } public void setIIbcube(IndexBuffer iIbcube) { this.iIbcube = iIbcube; } public short[] getVert() { return vert; } public VertexBuffer getIVbcube() { return iVbcube; } public Appearance getIAppearancecube() { return iAppearancecube; } public Transform getTransform() { return transform; } public IndexBuffer getIIbcube() { return iIbcube; } }


Ø   SnakeFood.java merupakan bagian pembuatan game yang digunakan untuk membuat makanan yang akan dimakan snake, makanan tersebut berbentuk kubus 3D. kita Deklarasikan vertex-vertex yang akan membentu kubus. berikut adalah code program dari class SnakeFood3D.





import java.io.IOException;
import java.util.Random;
import javax.microedition.lcdui.Image;
import javax.microedition.m3g.Appearance;
import javax.microedition.m3g.Fog;
import javax.microedition.m3g.Image2D;
import javax.microedition.m3g.IndexBuffer;
import javax.microedition.m3g.Material;
import javax.microedition.m3g.PolygonMode;
import javax.microedition.m3g.Texture2D;
import javax.microedition.m3g.Transform;
import javax.microedition.m3g.TriangleStripArray;
import javax.microedition.m3g.VertexArray;
import javax.microedition.m3g.VertexBuffer;




public class SnakeFood {
short[] vert={
0,0,0, 0,5,0, -5,0,0, -5,5,0,
0,0,-5, 0,5,-5, 0,0,0, 0,5,0 ,
0,5,0, 0,5,-5, -5,5,0, -5,5,-5 ,
-5,0,0, -5,5,0, -5,0,-5, -5,5,-5 ,
-5,0,-5, -5,5,-5, 0,0,-5, 0,5,-5 ,




};
short[] verttemp={
0,0,0, 0,5,0, -5,0,0, -5,5,0,
0,0,-5, 0,5,-5, 0,0,0, 0,5,0 ,
0,5,0, 0,5,-5, -5,5,0, -5,5,-5 ,
-5,0,0, -5,5,0, -5,0,-5, -5,5,-5 ,
-5,0,-5, -5,5,-5, 0,0,-5, 0,5,-5 ,




};
byte[] norm = {
0, 0, 127, 0, 0, 127, 0, 0, 127, 0, 0, 127,
0, 127, 0, 0, 127, 0, 0, 127, 0, 0, 127, 0,
0, 0, 127, 0, 0, 127, 0, 0, 127, 0, 0, 127,
-127, 0, 0, -127, 0, 0, -127, 0, 0, -127, 0, 0,
0, 0,-127, 0, 0,-127, 0, 0,-127, 0, 0,-127,
};
private boolean sign;
private short factor=5;
private short x;
private short z;


private int [] stripLen={4,4,4,4,4};
private Appearance iAppearancecube;
private VertexBuffer iVbcube;
private VertexArray verticeArray;
private IndexBuffer iIbcube;
private Transform transform;
private VertexArray normArray;
private Material iMaterial;
private Fog fm;


private Random myrand=new Random();
private boolean eaten;
public SnakeFood() {
transform = new Transform();
transform.postTranslate(0.0f,0.0f,0.0f);//No Transpostion
verticeArray=new VertexArray(vert.length/3,3,2);
verticeArray.set(0,vert.length/3,vert);
normArray = new VertexArray(norm.length / 3, 3, 1);
normArray.set(0, norm.length/3, norm);


iIbcube=new TriangleStripArray(0,stripLen);
iAppearancecube= new Appearance();
iMaterial=new Material();
iMaterial.setColor(Material.DIFFUSE,0x0000FF);


iMaterial.setShininess(100.0f);




iAppearancecube.setMaterial(iMaterial);
generateFood();


}


public IndexBuffer getIIbcube() {
return iIbcube;
}


public VertexBuffer getIVbcube() {
return iVbcube;
}


public Appearance getIAppearancecube() {
return iAppearancecube;
}


public Transform getTransform() {
return transform;
}
public void update(Snakecube3D head ,short dir) {


switch(dir) {
case 2:
case 4:eaten=head.getCheckEat(dir,vert[24],vert[26]);break;
case 1:
case 3:eaten=head.getCheckEat(dir,vert[33],vert[35]);break;
}


}


public void setEaten(boolean eaten) {
this.eaten = eaten;
}


public boolean checkEaten() {
return eaten;
}
public void generateFood() {




x=(short)((myrand.nextInt(19)*factor)-45);
z =(short)((myrand.nextInt(16)*factor)-40);






for() {
vert[i]=verttemp[i];
}


for() {
vert[i]+=x;
vert[i+2]+=z;


}


verticeArray=new VertexArray(vert.length/3,3,2);
verticeArray.set(0,vert.length/3,vert);
iVbcube=new VertexBuffer();


iVbcube.setPositions(verticeArray,1.0f,null);
iVbcube.setNormals(normArray);


}




}





Ø  Ground.java merupakan bagian yang digunakan untuk mendefinisikan vertex-vertex yang membentuk tekstur gambar 2D.berikut adalah code program dari class Ground.



import java.io.IOException;
import javax.microedition.lcdui.Image;
import javax.microedition.m3g.Appearance;
import javax.microedition.m3g.Fog;
import javax.microedition.m3g.Image2D;
import javax.microedition.m3g.IndexBuffer;
import javax.microedition.m3g.Material;
import javax.microedition.m3g.PolygonMode;
import javax.microedition.m3g.Texture2D;
import javax.microedition.m3g.Transform;
import javax.microedition.m3g.TriangleStripArray;
import javax.microedition.m3g.VertexArray;
import javax.microedition.m3g.VertexBuffer;


public class Ground {


short[] vert={
50,0,45, 50,0,-45, -50,0,45, -50,0,-45
};
byte[] norm = {


0, 0, 127, 0, 0, 127, 0, 0, 127, 0, 0, 127,


};
private int [] stripLen={4};
private Appearance iAppearancegd;
private Texture2D texture;
private Image2D image2D;
private VertexBuffer iVbgd;
private VertexArray verticeArray;
private IndexBuffer iIbgd;
private Transform transform;
private VertexArray normArray;
private Material iMaterial;
private Fog fm;
public Ground() {
transform = new Transform();
transform.postTranslate(0.0f,0.0f,0.0f);//No Transpostion
verticeArray=new VertexArray(vert.length/3,3,2);


verticeArray.set(0,vert.length/3,vert);
VertexArray normArray = new VertexArray(norm.length / 3, 3, 1);
normArray.set(0, norm.length/3, norm);
iVbgd=new VertexBuffer();
iVbgd.setPositions(verticeArray,1.0f,null);


iVbgd.setNormals(normArray);






iIbgd=new TriangleStripArray(0,stripLen);






iAppearancegd= new Appearance();
iMaterial=new Material();
iMaterial.setColor(Material.DIFFUSE,0x99CCFF);
iMaterial.setShininess( 100.0f);






fm=new Fog();
fm.setColor(0xffffff);
fm.setMode(Fog.LINEAR);
fm.setLinear(1,200);
fm.setDensity(0.5f);
iAppearancegd.setMaterial(iMaterial);
iAppearancegd.setFog(fm);


}


public short[] getVert() {
return vert;
}


public IndexBuffer getIIbgd() {
return iIbgd;
}


public Appearance getIAppearancegd() {
return iAppearancegd;
}


public VertexBuffer getIVbgd() {
return iVbgd;
}


public void setVert(short[] vert) {
this.vert = vert;
}
public int getLenght() {
return vert.length;
}


public Transform getTransform() {
return transform;
}




}



Ø  GameLoop.java berperan sebagai lapisan antarmuka aplikasi bagi pengguna dalam permainan Snake 3D. Kelas ini menangani tampilan grafis, menggunakan API low-level untuk menampilkan tampilan snake 3D nya, pointer pemain dengan animasi pergerakannya. API low-level juga digunakan untuk menangkap input penekanan tombol keyboard untuk mengendalikan permainan. API high-level berupa objek Command, digunakan sebagai akses keluar dari permainan yang sedang berlangsung.berikut adalah code program dari class GameLoop.





import javax.microedition.lcdui.Canvas;
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.m3g.Background;
import javax.microedition.m3g.Camera;
import javax.microedition.m3g.Graphics3D;
import javax.microedition.m3g.Light;
import javax.microedition.m3g.Transform;


public class GameLoop extends Canvas{


private Graphics3D iG3D;
private Camera iCamera;
private Light iLight;
private float iAngle=-45.0f;
private Background iBackground= new Background();
private Ground myg;
private SnakeBody mybody;
private Snakecube3D[] cubarr;
private SnakeFood skfood;
private boolean gameMode;
private Transform transform;
private boolean gameStarted;
private String[] choices=new String[]{"Easy","Normal","Hard"};
private short ch;
private myThread gameThread;


public GameLoop() {
transform = new Transform();


transform.postTranslate(0.0f,10.0f,0.0f);
transform.postRotate(-35.0f,1.0f,0.0f,0.0f);


setCommandListener(new CommandListener() {
public void commandAction(Command command, Displayable displayable) {
if(command.getCommandType()==command.EXIT){
if(!gameMode)
MIDLetMain.quitApp();
else {
mybody.GameOver=true;
}
}


}
});
try{
addCommand(new Command("Exit",Command.EXIT,1));
} catch(Exception e){
e.printStackTrace();
}
}






protected void paint(Graphics g) {
if(gameMode) {


if(mybody.GameOver) {


gameMode=false;


}
iG3D.bindTarget(g,true,Graphics3D.TRUE_COLOR | Graphics3D.DITHER);






Transform camtans = new Transform();


iG3D.resetLights();


iG3D.clear(iBackground);
iG3D.addLight(iLight,transform);




camtans.postTranslate(mybody.getXcamera(),mybody.getYcamera(),mybody.getZcamera());
camtans.postRotate(iAngle,1.0f,0.0f,0.0f);
iG3D.setCamera(iCamera,camtans);






iG3D.render(myg.getIVbgd(),myg.getIIbgd(),myg.getIAppearancegd(),myg.getTransform());


if(!mybody.isGamePause()&&gameStarted)
mybody.update(skfood);




for() {
iG3D.render(cubarr[i].getIVbcube(),cubarr[i].getIIbcube(),cubarr[i].getIAppearancecube(),cubarr[i].getTransform());
}
if(!skfood.checkEaten())
iG3D.render(skfood.getIVbcube(),skfood.getIIbcube(),skfood.getIAppearancecube(),skfood.getTransform());






iG3D.releaseTarget();
drawHeader(g);


if(!gameMode) {
gameStarted=false;
try {


Thread.sleep(1000);


gameThread.setGamemode(false);






gameThread=null;
} catch (InterruptedException ex) {


}
}




} else {
drawList(g);
}
}
public void drawList(Graphics g) {
g.fillRect(0,0,300,300);


g.setColor(0xFF0000);
g.fillRect(40,100+(ch*20),50,15);
g.setColor(0xFFFFFF);
for(int i=0;i0)
ch-=1;


} else if(action==DOWN) {

if(ch<2) ch+=1; } else if(action==FIRE) { { gameMode=true; gameStarted=false; SnakeBody.GameOver=false; SnakeBody.canChange=true; SnakeBody.GamePause=false; mybody=new SnakeBody(); skfood=new SnakeFood(); cubarr=mybody.getMyBody(); iG3D=Graphics3D.getInstance(); iCamera= new Camera(); iCamera.setPerspective(100.0f,(float)getWidth()/(float)getHeight(),1.0f,1500.0f); iLight=new Light(); iLight.setColor(0xFFFFFFFF); iLight.setIntensity(1.20f); myg=new Ground(); iBackground.setColor(0x000000); gameThread=new myThread((short)(230-(ch*70))); gameThread.start(); mybody.setValue((short)(2*(ch+1))); } } repaint(); } } class myThread extends Thread { private short sleeptime; private boolean gamemode; myThread(short time) { sleeptime=time; gamemode=true; } public void run() { while(gamemode) { try { repaint(); Thread.sleep(sleeptime); } catch (InterruptedException ex) { } } } public void setGamemode(boolean gamemode) { this.gamemode = gamemode; } } }



Berikutnya, Langkah apa nih yang mesti dilakukan?
            Pertama, kita membuka software Wireless ToolKit yang telah diinstal. Berikut tampilan awal Wireless ToolKit.


Kemudian kita klik New project, untuk membuat Project game Snake 3D. Selanjutnya ni yeh, kita masukkin nama Project dan Nama class MIDLet dari project tersebut. Seperti tampilan dibawah ini.

Kemudian Klik Create Project, maka akan masuk pada tampilan berikutnya.

Kemudian Klik OK saja. Maka akan tampil report, bahwa telah dibuat patch Project dengan nama MIDletMain. Dengan demikian, maka langkah selanjutnya kita menuju Patch Project tersebut untuk memasukkan code program game snake 3D ini. Berikut adalah report dan lokasi patch project pada komputer saya.


Kemudian , barulah kita mengetikkan code program yang telah kita bahas sebelumnya sebanyak 6 class yang kita buat. Untuk mengetikkan code tersebut, berikut cara mengetikkan code. Kita mengetikkan code program pada editor yang telah kita install, yaitu notepad++. Setelah kita ketikkan code program, kemudian kita simpan dengan nama sesuai dengan class. Berikut salah satu class yang telah dibuat. Class dibawah ini merupakan class utama dari class yang lainnya nama class ini yaitu MIDletMain.


Hal yang sama juga dilakukan untuk kelima class lainnya. Dan disimpan pada satu folder yang sama sesuai dengan patch project itu disimpan. Untuk lokasi code program ini disimpan yaitu sebagai berikut.
Setelah selesai kita mengetikkan dan menyimpan code program tersebut, maka langkah selanjutnya kita akan memproses code tersebut, apakah code program yang kita ketikkan tersebut masih terjadi kesalahan atau tidak? Proses ini biasa disebut kompile. Untuk mengkompile serta menjalankan code tersebut, kita harus membuka aplikasi WTK (Wireless ToolKit). Berikut cara memproses code program tersebut.
Buka WTKèkemudian pilih Open Project è pilih project MIDletMain è klik Open è Klik Built pada WTK  dan akan tampil sebagai berikut.

Jika tidak terjadi kesalahan code program, maka kita klik run dan akan tampil sebagai berikut:

    Tampilan diatas merupakan output dari program yang telah kita buat . Demikian, Langkah - langkah untuk membuat game Snake 3D pada J2ME. mohon maaf kalau banyak Salah kata atau kurang baik dalam penyampaiannya. Jika Anda mempunyai kritik atau ada saran untuk pengembangan project ini , saya terima dengan senang hati. Terima kasih . Wassalam.

Jumat, 25 Maret 2011

Pengenalan Komputasi Modern



Okee...Semester ini kita akan membahas tentang Pengantar Komputasi Modern. Sebelumnya , saya pribadi juga belum mengerti maksud dari materi yang ditugaskan ini, namun walaupun begitu, namanya tugas , ya mesti dikerjakan..hehee...

Setelah dicari dengan bantuan Mbah Google, ternyata Materi ini, sudah Banyak yang di posting..hmmm...
dan ternyata yang di postingkan itu hampir semua sama materiny,,,Waahhh...Mungkin intinya sama semua...
mungkin alangkah baiknya sebelum membahas terlebih jauh, kita harus tau dulu..Sebenenya Komputasi itu apa sihh??
hmmm.....ternyata setelah dicari Komputasi itu merupakan suatu cara untuk menemukan pemecahan masalah dari data dimasukkan dengan menggunakan suatu algoritma. Hal ini ialah apa yang disebut dengan teori komputasi, suatu sub-bidang dari ilmu komputer dan matematika. Selama ribuan tahun, perhitungan dan komputasi umumnya dilakukan dengan menggunakan pulpen dan kertas, atau kapur dan batu tulis, atau dikerjakan secara mental, kadang-kadang dengan bantuan suatu tabel. Namun sekarang, kebanyakan komputasi telah dilakukan dengan menggunakan komputer.
Dan Ternyata ....
Bidang ini berbeda dengan ilmu komputer (computer science), yang mengkaji komputasi, komputer dan pemrosesan informasi. Bidang ini juga berbeda dengan teori dan percobaan sebagai bentuk tradisional dari ilmu dan kerja keilmuan. Dalam ilmu alam, pendekatan ilmu komputasi dapat memberikan berbagai pemahaman baru, melalui penerapan model-model matematika dalam program komputer berdasarkan landasan teori yang telah berkembang, untuk menyelesaikan masalah-masalah nyata dalam ilmu tersebut.
Pada paruh pertama abad 20, banyak kebutuhan komputasi ilmiah bertemu dengan semakin canggih komputer analog, yang menggunakan mekanis atau listrik langsung model masalah sebagai dasar perhitungan. Namun, ini tidak dapat diprogram dan umumnya tidak memiliki fleksibilitas dan keakuratan komputer digital modern.
Alan Turing secara luas dianggap sebagai bapak ilmu komputer modern. pada tahun 1936 turing memberikan formalisasi berpengaruh konsep algoritma dan perhitungan dengan mesin turing. dari perannya dalam komputer modern, waktu turing majalah dalam penamaan salah satu dari 100 orang paling berpengaruh dari abad ke-20, menyatakan: "kenyataan tetap bahwa setiap orang yang keran di keyboard, membuka spreadsheet atau program pengolah kata, adalah bekerja pada inkarnasi dari mesin turing. "
penemu program komputer yang dikendalikan Konrad Zuse, yang membangun komputer kerja pertama pada tahun 1941 dan kemudian pada tahun 1955 komputer pertama berdasarkan penyimpan yang bersifat magnetis.
george stibitz secara internasional diakui sebagai ayah dari komputer digital modern. sementara bekerja di laboratorium bel di November 1937, stibitz menciptakan dan membangun sebuah relay berbasis kalkulator ia dijuluki sebagai "model k" (untuk "meja dapur", di mana dia telah berkumpul itu), yang adalah orang pertama yang menggunakan sirkuit biner untuk melakukan operasi aritmatika. kemudian model menambahkan kecanggihan yang lebih besar termasuk aritmatika dan kemampuan pemrograman kompleks.
Selanjutnya....
serangkaian mantap lebih kuat dan fleksibel perangkat komputasi yang dibangun di tahun 1930-an dan 1940-an, secara bertahap menambahkan fitur utama yang terlihat pada komputer modern. penggunaan digital elektronik (sebagian besar ditemukan oleh claude Shannon pada tahun 1937) dan lebih fleksibel kemampuan pemrograman langkah yang sangat penting, tetapi mendefinisikan satu titik di sepanjang jalan ini sebagai "komputer elektronik digital pertama" adalah prestasi terkemuka difficult.shannon 1940 meliputi:
·         Konrad Zuse's electromechanical "Z mesin". The Z3 (1941) adalah mesin kerja pertama menampilkan biner aritmatika, termasuk aritmatika floating point dan ukuran kemampuan pemrograman. Pada tahun 1998, Z3 itu terbukti Turing lengkap, sehingga menjadi operasional pertama di dunia komputer.
·         non-programmable Atanasoff-Berry Computer (1941) yang menggunakan tabung hampa berdasarkan perhitungan, angka biner, dan regeneratif kapasitor memori. Penggunaan memori regeneratif diperbolehkan untuk menjadi jauh lebih kompak maka rekan-rekan (yang kira-kira ukuran meja besar atau meja kerja), karena hasil menengah dapat disimpan dan kemudian makan kembali ke set yang sama unsur-unsur komputasi.
·        Rahasia komputer Colossus Inggris (1943), yang telah membatasi kemampuan pemrograman tetapi menunjukkan bahwa perangkat menggunakan ribuan tabung bisa cukup handal dan elektronik reprogrammable. Itu digunakan untuk melanggar kode perang Jerman.
·         The Harvard Mark I (1944), skala besar komputer elektromekanis kemampuan pemrograman terbatas.
·         Tentara AS Ballistic Research Laboratory ENIAC (1946), yang menggunakan aritmatika desimal dan kadang-kadang disebut tujuan umum pertama komputer elektronik (since Konrad Zuse's Z3 tahun 1941 digunakan elektromagnet bukan elektronik). Pada awalnya, bagaimanapun, ENIAC memiliki arsitektur yang tidak fleksibel yang pada dasarnya diperlukan untuk mengubah rewiring pemrograman.
Beberapa pengembang ENIAC, mengakui kesalahannya, datang dengan yang jauh lebih fleksibel dan desain elegan, yang kemudian dikenal sebagai "arsitektur program yang tersimpan" atau arsitektur von Neumann. Desain ini secara resmi pertama kali dideskripsikan oleh John von Neumann di koran Draft Pertama Laporan di EDVAC, didistribusikan pada tahun 1945. Sejumlah proyek untuk mengembangkan komputer berdasarkan arsitektur program yang disimpan dimulai sekitar waktu ini, yang pertama yang selesai di Britania Raya. Yang pertama harus diperlihatkan bekerja adalah Manchester Skala Kecil Experimental Machine (SSEM atau "Baby"), sementara EDSAC, selesai setahun setelah SSEM, praktis pertama pelaksanaan rancangan program yang tersimpan. Tak lama kemudian, mesin awalnya dijelaskan oleh von Neumann kertas-EDVAC-selesai tapi tidak melihat penuh waktu digunakan untuk tambahan dua tahun.
Hampir semua komputer modern mengimplementasikan beberapa bentuk dari arsitektur program yang tersimpan, sehingga sifat tunggal dengan mana kata "komputer" sekarang didefinisikan. Sementara teknologi yang digunakan pada komputer telah berubah secara dramatis sejak pertama elektronik, komputer tujuan umum dari tahun 1940-an, kebanyakan masih menggunakan arsitektur von Neumann. 
Mungkin baru itu yang bisa saya share,,nanti kita lanjutkan kembali...thx atas perhatiannya..

                          http://www.scribd.com/doc/24593215/SEJARAH-KOMPUTASI

Fans..

Google Translate

Jam

Date and Time


 

Blogger Templates