Kamis, 25 Februari 2010

Teknologi Game 3D

Posted by Febrianty Lumban Gaol 0 comments

Teknologi Game 3D

Cara membuat game 3D

Teknik-teknik pembuatan game 3D sederhana seperti game labyrinth. Game labyrinth adalah game untuk mencari jalan keluar.

Pembahasan game tidak bisa lepas dari matematika dan fisika. Untuk itu maka dalam mengikuti tutorial ini, saya sarankan anda untuk mengingat kembali pelajaran tentang matematika dasar, trigonometry, rumus-rumus segitiga, vektor, dan matrix. Perhitungan matematika yang ada disini hanya merupakan perhitungan matematika dasar, dimana masih banyak cara yang lain yang sebenarnya lebih cepat, namun lebih sulit dipahami.

Struktur game labyrinth :

Game labyrinth terdiri dari dua komponen utama, yaitu pemain dan tembok. Untuk mempermudah pembuatan game, tembok diganti dengan kubus yang disusun-susun secara berjejer-jejer membentuk tembok, jalan, tikungan dan lain sebagainya. Struktur ini adalah struktur yang paling banyak dipakai karena kemudahannya.
Karena game ini adalah game 3d, maka pemain utama tidak diperlihatkan. Permainan mengambil sudut pandang dari orang pertama. Apa yang tampak dilayar adalah apa yang tampak dari “mata” pemain utama. Pemain utama biasanya diberi istilah kamera, karena prosesnya memang mirip dengan kamera.

Dalam gambar diatas ada istilah FOV (Field of View) atau area pandangan. Semua yang berada di area FOV akan tampak oleh pemain utama/kamera dan akan tampak pula di layar.
FOV dari atas akan tampak seperti trapesium, walau bentuk sebenarnya dari FOV adalah mirip limas yang dipotong di ujungnya, dikenal juga dengan istilah frustum.


Situs Game 3D

http://www.miniclip.com/games/en/3d.php













http://www.albinoblacksheep.com/games/missilegame3d












http://www.gamefilesland.com/game/3d.html



3D Game Software

1st Light 3D Solar System Simulator

3D BrickBlaster Unlimited

3D Checkers Unlimited

3D Pong CurveBall

3D Slot Car Racing Game

3D Buggy Tug

Bomb3D

3DRT PingPong

Crossing 3D

3D Word Slider

3D Yathzee Unlimited

3D Blocks 2004

Atomic 3D Shooter

Solitairex 3D

Chess3D

D3D Chess

Cloner 3D

iPuissance 4D

Deluxe Ski Jump 3D

Dino Lake 3D

DROD 3D

3D The Mill Unlimited

3D REVERSE Unlimited

3D CHINESE CHECKERS

3D BACKGAMMON UNLIMITED


http://www.johns-company.com/index.php?lang=id&cat=563&month=2009-08&id=96240



Sabtu, 06 Februari 2010

Belajar J2ME

Posted by Febrianty Lumban Gaol 0 comments
LISTING PROGRAM
import java.util.*;
import java.io.IOException;
import javax.microedition.io.*;
import javax.microedition.lcdui.*;
import javax.wireless.messaging.*;
import javax.microedition.midlet.*;

/**
* @author MasWawa
* @see http://www.maswawa.web.id
*/
public class smsKu extends MIDlet implements CommandListener, Runnable,
MessageListener {

Display display;
Form form;
List menuList; //list untuk menu awal
Command exitCom, replyCom, backCom, clrCom, sendCom; //macem macem command yg digunakan
TextBox textSmsMasuk, textSmsKeluar; //tempat untuk text sms yg masuk dan yg mau dikirim
TextField textNo; //untuk tempat memasukan no tujuan
String port, isiSmsKeluar; //port dan isi sms
Thread thread;
String[] connections;
boolean done;
MessageConnection smsconn;
Message msg;

public smsKu() {
display = Display.getDisplay(this);
form = new Form("sms-an Yuk");
exitCom = new Command("keluar", Command.EXIT, 1);
replyCom = new Command("balas", Command.SCREEN, 1);
backCom = new Command("Kembali", Command.BACK, 3);
clrCom = new Command("Hapus Tulisan", Command.OK, 2);
sendCom = new Command("Kirim", Command.OK, 1);
menuList = new List("Menu sms Ku", List.IMPLICIT);
port = "4321"; //port yang aku gunakan, silakan ganti sesuai keinginan masing masing
textSmsMasuk = new TextBox(null, null, 500, TextField.ANY);
textSmsKeluar = new TextBox("Silakan Menulis Sms", null,
500, TextField.ANY);
textNo = new TextField("Masukan Nomor Tujuan", "",
15, TextField.PHONENUMBER);
}

public void startApp() {
bukaKoneksi(); //disini membuka koneksi untuk siap menerima sms masuk
menu(); // bikin tampilan menu awal
}

public void pauseApp() {
}

public void destroyApp(boolean unconditional) {

//sebelum aplikasinya keluar ato mati koneksi ditutup dulu
done = true;
thread = null;
if (smsconn != null) {
try {
smsconn.close();
} catch (IOException e) {
}
}

//disini mati deh aplikasi kita
notifyDestroyed();
}

public void menu() { //membuat menu awal untuk sementara ini baru ada 3 menu dulu
menuList.append("Tulis Sms", null);//1. menu tulis sms baru
menuList.append("about", null); //2. menu about (gak penting sih sebenarnya)
menuList.append("Keluar", null); //3. menu untuk keluar aplikasi
menuList.addCommand(exitCom); //add command keluar
menuList.setCommandListener(this);
display.setCurrent(menuList);
}

public void tulisSms() { //membuat textbox untuk menulis sms baru
textSmsKeluar.addCommand(sendCom); //add command untuk kirim
textSmsKeluar.addCommand(clrCom); // add command untuk clear text
textSmsKeluar.addCommand(backCom); //add command untuk kembali kemenu awal
textSmsKeluar.setCommandListener(this);
display.setCurrent(textSmsKeluar);
}

public void masukNo() { //disini untuk memasukan nomor tujuan yang mau dikirimi sms
form.setTitle("Sms Siap dikirim"); //udah taukan yang ini?
form.append(textNo); //menambahkan textField untuk nomor tujuan
form.addCommand(backCom); //menambahkan command untuk kembali ke menu awal
form.addCommand(sendCom); //menambahkan command untuk mengirim
form.setCommandListener(this);
display.setCurrent(form);
}

public void kirim() { //disini sms yang udah ditulis dikirim dengan perintah dibawah ini
new Thread(new Runnable() {
//perhatiin ya
public void run() {
try {
String isiSms = isiSmsKeluar;
String noTujuan = textNo.getString();
String address = "sms://" + noTujuan + ":" + port;
MessageConnection smsConnKir = null;
Message isiSmsNya = null;
smsConnKir = (MessageConnection) Connector.open(address);
TextMessage txtmessage =
(TextMessage) smsConnKir.newMessage(MessageConnection.TEXT_MESSAGE);
txtmessage.setAddress(address);
txtmessage.setPayloadText(isiSms);
isiSmsNya = txtmessage;
smsConnKir.send(isiSmsNya);

} catch (Throwable t) {
t.printStackTrace();
}
}
}).start();
}

public void terima(String isi, String no, Date tgl) { //ini untuk tempat membaca sms yang masuk
String nonya = fixNomer(no);
textSmsMasuk = new TextBox("Sms dari:" + nonya + " " + tgl, isi,
isi.length(), TextField.ANY);
textSmsMasuk.addCommand(replyCom);
textSmsMasuk.addCommand(exitCom);
textSmsMasuk.setCommandListener(this);
display.setCurrent(textSmsMasuk);
}

public void bukaKoneksi() { //membuka koneksi agar bisa menerima sms yg masuk
String smsConnection = "sms://:" + port;
done = true;
thread = null;

try {
smsconn = (MessageConnection) Connector.open(smsConnection);
smsconn.setMessageListener(this);
} catch (IOException ioe) {
ioe.printStackTrace();
}

connections = PushRegistry.listConnections(true);

done = false;
thread = new Thread(this);
thread.start();
}

public void tutupKoneksi() { //untuk menutup koneksi sms
try {
smsconn.close();
} catch (IOException e) {
}
}

public String fixNomer(String no) {
//dari format no gini "sms://+6285XXXX" jadi "+6285XXX" gitu fungsinya disini itu

String hs = null;
hs = no.substring(6, no.length());
return hs;
}

public void commandAction(Command c, Displayable d) {
if (c == exitCom) {
destroyApp(true);
}
if (d == menuList) {
if (menuList.isSelected(0)) {
tulisSms();
} else if (menuList.isSelected(1)) {
Alert about = new Alert("About", "Aplikasi SMS buatan sendiri",
null, AlertType.INFO);
display.setCurrent(about);
} else if (menuList.isSelected(2)) {
destroyApp(true);
}
}
if (d == textSmsKeluar) {
if (c == sendCom) {
form.deleteAll();
masukNo();
} else if (c == clrCom) {
textSmsKeluar.setString("");
} else if (c == backCom) {
display.setCurrent(menuList);
}
}
if (d == textSmsMasuk) {
if (c == exitCom) {
display.setCurrent(menuList);
} else if (c == replyCom) {
tulisSms();
}
}
if (d == form) {
if (c == backCom) {
form.deleteAll();
display.setCurrent(textSmsKeluar);
} else if (c == sendCom) {
isiSmsKeluar = textSmsKeluar.getString();
textSmsKeluar.setString("");
kirim();
}
}
}

public void run() { //untuk menerima sms yang masuk
try {
msg = smsconn.receive();
String senderAddress = msg.getAddress();
Date waktuSms = msg.getTimestamp();
if (msg instanceof TextMessage) {
String isiSmsMasuk = ((TextMessage) msg).getPayloadText();
terima(isiSmsMasuk, senderAddress, waktuSms);//ini memasukan sms yg diterima ke textbox
}
tutupKoneksi();
bukaKoneksi();
} catch (IOException e) {
}
}

public void notifyIncomingMessage(MessageConnection conn) {
if (thread == null) {
done = false;
thread = new Thread(this);
thread.start();
}
}
}

OUTPUT PROGRAM









































































































 

You Smile I Smile ^(o.o)^ Copyright © 2010 Design by Ipietoon Blogger Template Graphic from Enakei | web hosting