Posted by
gie
| Posted in
tugas
Anggota :
1. Yugi Safari Nurhakim (50408890)
2. Handi (50408410) Manual Book
3. Vany Kaharu (50408846) UML
Aplikasi game mencari kata ini berisi kata-kata yang sederhana dan kata-katanya dapat dicari secara vertikal, horizontal maupun diagonal. Selain itu, kata-kata yang dicari menggunakan bahasa Indonesia. Aplikasi game mencari kata ini dibuat agar melatih ketepatan dan kecepatan berpikir para pengguna dalam hal mencari kata.
Saya hanya akan menjelaskan mengenai source code, untuk uml dijelaskan oleh Vany Kaharu, sedangkan cara bermain dijelaskan oleh Handi.
Penjelasan singkat source code :
File Game Thread.java
Thread merupakan sebuah pengontrol aliran program.
void go() {
if(!myAlreadyStarted) {
myAlreadyStarted = true;
start();
} else {
}
}
Bagian ini menandakan untuk memulai game mencari kata. Jika myAlreadyStarted bernilai salah, maka yang dijalankan penyataan yang berada didalam kondisi If yaitu myAlreadyStarted ialah true, sehingga start() dipanggil.
public void run() {
while(true) {
myMainCanvas.advance();}
}
Program ini merupakan perintah untuk me running game mencari kata. Ketika bagian ini bernilai true, maka method run memanggil method advance yang ada pada maincanvas.
File mainCanvas.java
public mainCanvas (wordSearch midlet) {
myDisplay = Display.getDisplay(midlet);
myWordSearch = midlet;
myInitialized=false;
go=false;
notBuffered=false;
}
Bagian ini merupakan constructor dari mainCanvas yang memanggil midlet wordSearch.
void start() {
myDisplay.setCurrent(this);
repaint();
}
Dalam void start ini, kita menginginkan untuk memulai permainan sehingga kita butuhkan screen kosong untuk menjalankan paint() kembali dengan perintah repaint().
public void paint(Graphics g) {
Graphics saved=null;
Bagian ini merupakan suatu method yang dapat diimplementasikan pada class Canvas, sehingga pada class Canvas, paint ini harus dibuat. Pada paint ini, penulis definisikan variabel yang digunakan.
FONT = g.getFont();
letWidth=FONT.charWidth ('w')+1;
boardXOffset=((letWidth) * 4)-4;
letHeight=FONT.getHeight();
CORNER_X = g.getClipX();
CORNER_Y = g.getClipY();
DISP_WIDTH = g.getClipWidth();
DISP_HEIGHT = g.getClipHeight();
boardLength=DISP_HEIGHT;
if (notBuffered==true) {
imgDoubleBuffer=Image.createImage (DISP_WIDTH,DISP_HEIGHT);
doubleBuffer=imgDoubleBuffer.getGraphics ();
}
setWords();
for (p=0;p<150;p++) boardLetSel[p]=false;
lettersSel=0;
int wordsToRead[] = new int [14];
for (p=0;p<="" span="" {="">
wordsToRead[p]=getRandomInt (111);
Bagian ini digunakan untuk menentukan lebar dan tinggi dari kotak untuk kata yang ditampilkan. Kemudian digunakan untuk menampilkan kata yang harus dicari secara acak sebanyak 111 dari kata yang telah ditentukan pada kelas mainCanvas.
for (p=0;p<="">
wordsRead[p]=words[wordsToRead[p]];
for (t=0;t
lettersPerWord[p]=words[wordsToRead[p]].length();
xx = lettersPerWord.toString();
}
boolean killer=false;
do {
killer=false;
for (p=0;p<150;p++) board[p]= ( (char) (getRandomInt(25)+97));
for (p=0;p<150;p++) boardColor[p]=false;
directionAddition=0;
for (p=0;p<10;p++) {
int k=0;
foundPlace=false;
while (foundPlace==false) {
wordDirection[p]=getRandomInt (7);
if (wordDirection[p]==2) wordDirection[p]=3;
wordPlace[p] = getRandomInt (130);
if (wordDirection[p]==0 && (int) (wordPlace[p]/13)-lettersPerWord[p]>=0) foundPlace=true; //up
if (wordDirection[p]==1 && (int) (wordPlace[p]/13)+lettersPerWord[p]<=11) foundPlace=true; //down
if (wordDirection[p]==2 && wordPlace[p]%13-lettersPerWord[p]>=0) foundPlace=true; // left
Program ini menjelaskan apakah kata yang pengguna input sesuai dengan kata yang tersedia pada program yang ada pada kelas mainCanvas. Kemudian untuk susunan katanya bisa dicari secara horizontal, vertikal, dan diagonal.
if (killer==false) {
startTime = System.currentTimeMillis() - gameDuration;
status ="0";time2 =0;
for (t=0;t<="">
if (wordDirection[p]==0) directionAddition = -13;
if (wordDirection[p]==1) directionAddition = +13;
if (wordDirection[p]==2) directionAddition = -1;
if (wordDirection[p]==3) directionAddition = +1;
if (wordDirection[p]==4) directionAddition = -14;
if (wordDirection[p]==5) directionAddition = -12;
if (wordDirection[p]==6) directionAddition = +12;
if (wordDirection[p]==7) directionAddition = +14;
board[wordPlace[p]+(t*directionAddition)]=(char) Cwords[p] [t];
boardColor[wordPlace[p]+(t*directionAddition)] = true;
Program ini menjelaskan jika kata yang dicari sudah ditemukan maka kata yang ditemukan tersebut warnanya berubah. Selain itu terdapat juga pendeklarasian variabel yang nantinya digunakan untuk menghitung waktu dan score.
if(time2>0){
if (wordFound[p]==true){ g.setColor(0x000000);
ab = word.length();
vv = vv +ab;
status = String.valueOf(vv);
}
else {g.setColor(0x00000000); }} //warna teks goal
long time = (System.currentTimeMillis() - startTime) / 1000;
time2 = 200-time;
....................................
String x,xxx,yy,yyy;
x = "Timer";
yy="0";
xxx = "Score";
if(time2>0){
yy = String.valueOf(time2);
}
g.drawString (x,2,2,g.TOP|g.LEFT);
g.drawString (yy,2,15,g.TOP|g.LEFT);
g.drawString (xxx,2,40,g.TOP|g.LEFT);
g.drawString (status,2,53,g.TOP|g.LEFT);
}
Program ini menjelaskan jika kata yang dicari sudah ditemukan dengan catatan waktu belum 0 atau habis, maka nilai score adalah akumulasi dari semua kata yang ditemukan, dengan nilai ditentukan berdasarkan banyaknya huruf pada setiap kata.
public void keyPressed (int keyCode) {
int p,t,directionAddition;
directionAddition=0;
if (go==true) {
if(keyCode==-3 || keyCode==KEY_NUM4) {
squareX-=1;
if (squareX<0) squareX=0;
//handle left
}
if(keyCode==-4 || keyCode==KEY_NUM6) {
squareX+=1;
if (squareX>12) squareX=12;
//handle right
Program di atas digunakan untuk berpindah posisi dengan menggunakan tombol angka pada ponsel. Tombol 2 untuk ke atas, tombol 4 untuk bergeser ke kiri, tombol 5 untuk enter, tombol 6 untuk bergeser ke kanan, dan tombol 8 untuk bergeser ke bawah.
public void setWords () {
words[ 0]="mobil";
words[ 1]="motor";
words[ 2]="sepeda";
words[ 3]="pesawat";
words[ 4]="perahu";
words[ 5]="mangga";
Program ini digunakan untuk menentukan kata-kata yang tersedia pada aplikasi game mencari kata yang terdapat pada method setWords.
File wordSearch.java
public class wordSearch extends MIDlet implements CommandListener {
Random myRandom;
private Command myExitCommand = new Command("Exit", Command.EXIT, 99);
private Command mySolveCommand = new Command("Solve", Command.SCREEN, 1);
private Command myLevel1Command = new Command("Level 1", Command.SCREEN, 1);
private Command myLevel2Command = new Command("Level 2", Command.SCREEN, 2);
private Command myLevel3Command = new Command("Level 3", Command.SCREEN, 3);
Pendefinisian untuk class wordSearch.java ber-extends MIDlet. CommandListener digunakan agar dapat menangani command events untuk Exit, Solve, Level 1, level 2, dan Level 3. Pada bagian akhir program akan diberikan commandAction untuk implementasi dari commandListener.
public void startApp() throws MIDletStateChangeException {
myGameThread = new GameThread(myCanvas);
myCanvas.start();
myGameThread.go();
}
Program ini menjelaskan bahwa aplikasi game mencari kata ini dimulai dengan menampilkan kelas GameThread.
public void commandAction(Command c, Displayable s) {
int p,t;
if(c == mySolveCommand) {
myCanvas.removeCommand(mySolveCommand);
myCanvas.addCommand(myLevel1Command);
myCanvas.addCommand(myLevel2Command);
myCanvas.addCommand(myLevel3Command);
if (myCanvas.wordDirection[p]==0) directionAddition = -13;
} else if(c == myLevel1Command) {
myCanvas.removeCommand(myLevel1Command);
myCanvas.removeCommand(myLevel2Command); myCanvas.removeCommand(myLevel3Command);myCanvas.addCommand(mySolveCommand);
myCanvas.level=5;
myCanvas.myInitialized=false;
} else if(c == myLevel2Command) {
myCanvas.removeCommand(myLevel1Command);
myCanvas.removeCommand(myLevel2Command);
myCanvas.removeCommand(myLevel3Command);
myCanvas.level=8;
Program diatas digunakan untuk konstruktor dari CommandListener yang merupakan implement dari kelas wordSearch. Jika pengguna memilih command Solve maka akan ditambahkan command level 1, level 2, dan level 3 serta semua kata yang dicari akan ditemukan. Jika pengguna memilih command level 1 maka command level 1, command level 2 dan command level 3 terhapus dan diganti dengan command solve. Kata yang harus dicari pada level 1 sebanyak lima kata. Jika pengguna memilih command level 2 maka command level 1, command level 2 dan command level 3 terhapus dan diganti dengan command solve. Kata yang harus dicari pada level 2 sebanyak delapan kata. Jika pengguna memilih command level 3 maka command level 1, command level 2 dan command level 3 terhapus dan diganti dengan command solve. Kata yang harus dicari pada level 3 sebanyak sepuluh kata.
else if(c == myExitCommand) {
try {
destroyApp(false);
notifyDestroyed();
} catch (MIDletStateChangeException ex) {
} }
else if (c==myGoCommand) {
mainCanvas.go=true;
myCanvas.removeCommand(myGoCommand);
myCanvas.addCommand(myLevel1Command);
myCanvas.addCommand(myLevel2Command);
myCanvas.addCommand(myLevel3Command);
}
}
Program ini digunakan untuk apabila pengguna memilih command Exit maka pengguna akan keluar dari aplikasi game mencari kata. Jika pengguna memilih command Go maka pengguna akan ditampilkan kelas mainCanvas dan ditambahkan command level 1, level 2, dan level 3.
Aplikasi game mencari kata ini berisi kata-kata yang sederhana dan kata-katanya dapat dicari secara vertikal, horizontal maupun diagonal. Selain itu, kata-kata yang dicari menggunakan bahasa Indonesia. Aplikasi game mencari kata ini dibuat agar melatih ketepatan dan kecepatan berpikir para pengguna dalam hal mencari kata.
Penjelasan singkat source code :
File Game Thread.java
Thread merupakan sebuah pengontrol aliran program.
void go() {
if(!myAlreadyStarted) {
myAlreadyStarted = true;
start();
} else {
}
}
Bagian ini menandakan untuk memulai game mencari kata. Jika myAlreadyStarted bernilai salah, maka yang dijalankan penyataan yang berada didalam kondisi If yaitu myAlreadyStarted ialah true, sehingga start() dipanggil.
public void run() {
while(true) {
myMainCanvas.advance();}
}
Program ini merupakan perintah untuk me running game mencari kata. Ketika bagian ini bernilai true, maka method run memanggil method advance yang ada pada maincanvas.
File mainCanvas.java
public mainCanvas (wordSearch midlet) {
myDisplay = Display.getDisplay(midlet);
myWordSearch = midlet;
myInitialized=false;
go=false;
notBuffered=false;
}
Bagian ini merupakan constructor dari mainCanvas yang memanggil midlet wordSearch.
void start() {
myDisplay.setCurrent(this);
repaint();
}
Dalam void start ini, kita menginginkan untuk memulai permainan sehingga kita butuhkan screen kosong untuk menjalankan paint() kembali dengan perintah repaint().
public void paint(Graphics g) {
Graphics saved=null;
Bagian ini merupakan suatu method yang dapat diimplementasikan pada class Canvas, sehingga pada class Canvas, paint ini harus dibuat. Pada paint ini, penulis definisikan variabel yang digunakan.
FONT = g.getFont();
letWidth=FONT.charWidth ('w')+1;
boardXOffset=((letWidth) * 4)-4;
letHeight=FONT.getHeight();
CORNER_X = g.getClipX();
CORNER_Y = g.getClipY();
DISP_WIDTH = g.getClipWidth();
DISP_HEIGHT = g.getClipHeight();
boardLength=DISP_HEIGHT;
if (notBuffered==true) {
imgDoubleBuffer=Image.createImage (DISP_WIDTH,DISP_HEIGHT);
doubleBuffer=imgDoubleBuffer.getGraphics ();
}
setWords();
for (p=0;p<150;p++) boardLetSel[p]=false;
lettersSel=0;
int wordsToRead[] = new int [14];
for (p=0;p<="" span="" {="">
wordsToRead[p]=getRandomInt (111);
Bagian ini digunakan untuk menentukan lebar dan tinggi dari kotak untuk kata yang ditampilkan. Kemudian digunakan untuk menampilkan kata yang harus dicari secara acak sebanyak 111 dari kata yang telah ditentukan pada kelas mainCanvas.
for (p=0;p<="">
wordsRead[p]=words[wordsToRead[p]];
for (t=0;t
lettersPerWord[p]=words[wordsToRead[p]].length();
xx = lettersPerWord.toString();
}
boolean killer=false;
do {
killer=false;
for (p=0;p<150;p++) board[p]= ( (char) (getRandomInt(25)+97));
for (p=0;p<150;p++) boardColor[p]=false;
directionAddition=0;
for (p=0;p<10;p++) {
int k=0;
foundPlace=false;
while (foundPlace==false) {
wordDirection[p]=getRandomInt (7);
if (wordDirection[p]==2) wordDirection[p]=3;
wordPlace[p] = getRandomInt (130);
if (wordDirection[p]==0 && (int) (wordPlace[p]/13)-lettersPerWord[p]>=0) foundPlace=true; //up
if (wordDirection[p]==1 && (int) (wordPlace[p]/13)+lettersPerWord[p]<=11) foundPlace=true; //down
if (wordDirection[p]==2 && wordPlace[p]%13-lettersPerWord[p]>=0) foundPlace=true; // left
Program ini menjelaskan apakah kata yang pengguna input sesuai dengan kata yang tersedia pada program yang ada pada kelas mainCanvas. Kemudian untuk susunan katanya bisa dicari secara horizontal, vertikal, dan diagonal.
if (killer==false) {
startTime = System.currentTimeMillis() - gameDuration;
status ="0";time2 =0;
for (t=0;t<="">
if (wordDirection[p]==0) directionAddition = -13;
if (wordDirection[p]==1) directionAddition = +13;
if (wordDirection[p]==2) directionAddition = -1;
if (wordDirection[p]==3) directionAddition = +1;
if (wordDirection[p]==4) directionAddition = -14;
if (wordDirection[p]==5) directionAddition = -12;
if (wordDirection[p]==6) directionAddition = +12;
if (wordDirection[p]==7) directionAddition = +14;
board[wordPlace[p]+(t*directionAddition)]=(char) Cwords[p] [t];
boardColor[wordPlace[p]+(t*directionAddition)] = true;
Program ini menjelaskan jika kata yang dicari sudah ditemukan maka kata yang ditemukan tersebut warnanya berubah. Selain itu terdapat juga pendeklarasian variabel yang nantinya digunakan untuk menghitung waktu dan score.
if(time2>0){
if (wordFound[p]==true){ g.setColor(0x000000);
ab = word.length();
vv = vv +ab;
status = String.valueOf(vv);
}
else {g.setColor(0x00000000); }} //warna teks goal
long time = (System.currentTimeMillis() - startTime) / 1000;
time2 = 200-time;
....................................
String x,xxx,yy,yyy;
x = "Timer";
yy="0";
xxx = "Score";
if(time2>0){
yy = String.valueOf(time2);
}
g.drawString (x,2,2,g.TOP|g.LEFT);
g.drawString (yy,2,15,g.TOP|g.LEFT);
g.drawString (xxx,2,40,g.TOP|g.LEFT);
g.drawString (status,2,53,g.TOP|g.LEFT);
}
Program ini menjelaskan jika kata yang dicari sudah ditemukan dengan catatan waktu belum 0 atau habis, maka nilai score adalah akumulasi dari semua kata yang ditemukan, dengan nilai ditentukan berdasarkan banyaknya huruf pada setiap kata.
public void keyPressed (int keyCode) {
int p,t,directionAddition;
directionAddition=0;
if (go==true) {
if(keyCode==-3 || keyCode==KEY_NUM4) {
squareX-=1;
if (squareX<0) squareX=0;
//handle left
}
if(keyCode==-4 || keyCode==KEY_NUM6) {
squareX+=1;
if (squareX>12) squareX=12;
//handle right
Program di atas digunakan untuk berpindah posisi dengan menggunakan tombol angka pada ponsel. Tombol 2 untuk ke atas, tombol 4 untuk bergeser ke kiri, tombol 5 untuk enter, tombol 6 untuk bergeser ke kanan, dan tombol 8 untuk bergeser ke bawah.
public void setWords () {
words[ 0]="mobil";
words[ 1]="motor";
words[ 2]="sepeda";
words[ 3]="pesawat";
words[ 4]="perahu";
words[ 5]="mangga";
Program ini digunakan untuk menentukan kata-kata yang tersedia pada aplikasi game mencari kata yang terdapat pada method setWords.
File wordSearch.java
public class wordSearch extends MIDlet implements CommandListener {
Random myRandom;
private Command myExitCommand = new Command("Exit", Command.EXIT, 99);
private Command mySolveCommand = new Command("Solve", Command.SCREEN, 1);
private Command myLevel1Command = new Command("Level 1", Command.SCREEN, 1);
private Command myLevel2Command = new Command("Level 2", Command.SCREEN, 2);
private Command myLevel3Command = new Command("Level 3", Command.SCREEN, 3);
Pendefinisian untuk class wordSearch.java ber-extends MIDlet. CommandListener digunakan agar dapat menangani command events untuk Exit, Solve, Level 1, level 2, dan Level 3. Pada bagian akhir program akan diberikan commandAction untuk implementasi dari commandListener.
public void startApp() throws MIDletStateChangeException {
myGameThread = new GameThread(myCanvas);
myCanvas.start();
myGameThread.go();
}
Program ini menjelaskan bahwa aplikasi game mencari kata ini dimulai dengan menampilkan kelas GameThread.
public void commandAction(Command c, Displayable s) {
int p,t;
if(c == mySolveCommand) {
myCanvas.removeCommand(mySolveCommand);
myCanvas.addCommand(myLevel1Command);
myCanvas.addCommand(myLevel2Command);
myCanvas.addCommand(myLevel3Command);
if (myCanvas.wordDirection[p]==0) directionAddition = -13;
} else if(c == myLevel1Command) {
myCanvas.removeCommand(myLevel1Command);
myCanvas.removeCommand(myLevel2Command); myCanvas.removeCommand(myLevel3Command);myCanvas.addCommand(mySolveCommand);
myCanvas.level=5;
myCanvas.myInitialized=false;
} else if(c == myLevel2Command) {
myCanvas.removeCommand(myLevel1Command);
myCanvas.removeCommand(myLevel2Command);
myCanvas.removeCommand(myLevel3Command);
myCanvas.level=8;
Program diatas digunakan untuk konstruktor dari CommandListener yang merupakan implement dari kelas wordSearch. Jika pengguna memilih command Solve maka akan ditambahkan command level 1, level 2, dan level 3 serta semua kata yang dicari akan ditemukan. Jika pengguna memilih command level 1 maka command level 1, command level 2 dan command level 3 terhapus dan diganti dengan command solve. Kata yang harus dicari pada level 1 sebanyak lima kata. Jika pengguna memilih command level 2 maka command level 1, command level 2 dan command level 3 terhapus dan diganti dengan command solve. Kata yang harus dicari pada level 2 sebanyak delapan kata. Jika pengguna memilih command level 3 maka command level 1, command level 2 dan command level 3 terhapus dan diganti dengan command solve. Kata yang harus dicari pada level 3 sebanyak sepuluh kata.
else if(c == myExitCommand) {
try {
destroyApp(false);
notifyDestroyed();
} catch (MIDletStateChangeException ex) {
} }
else if (c==myGoCommand) {
mainCanvas.go=true;
myCanvas.removeCommand(myGoCommand);
myCanvas.addCommand(myLevel1Command);
myCanvas.addCommand(myLevel2Command);
myCanvas.addCommand(myLevel3Command);
}
}
Program ini digunakan untuk apabila pengguna memilih command Exit maka pengguna akan keluar dari aplikasi game mencari kata. Jika pengguna memilih command Go maka pengguna akan ditampilkan kelas mainCanvas dan ditambahkan command level 1, level 2, dan level 3.
0 Responses to "GAME MENCARI KATA"
Leave a Reply