LAMPIRAN A : LISTING PROGRAM 1. WordScramble.as package { import flash.display.MovieClip; import flash.media.Sound; import flash.events.MouseEvent; import flash.net.URLLoader; import flash.net.URLRequest; import flash.text.TextFormat; import flash.utils.Timer; import flash.events.*; import fl.controls.TextArea; import fl.controls.TextInput; import fl.controls.Button; import fl.controls.Label; import fl.events.ComponentEvent; import flash.system.fscommand;
public class WordScramble extends MovieClip {
private static const kamus:String = "kamus.txt"; private static const panjang_kata:Number = 3; private static const huruf_menurun:Number = 4; private static const huruf_mendatar:Number = 4; private static const uk_tombol:Number = 50; private static const waktu:Number = 121;
private static const nilai:Array = [null,0,0,2,3,5,6,8,9]
private var loader:URLLoader; private var alfabet:Array; private var kata:Array;
private var kata_ketemu:Array; private var masukan:TextInput; private var tombol:Array;
private var kata_tebakan:String; private var status_kata:Label; private var tombol_terakhir:Button; private var tambah_tombol:Button; private var hapus_tombol:Button; private var tombol_kembali:Button; private var hasil_nilai:TextArea; private var daftar_kata:Array; private var status_waktu:Label; private var t:Timer;
public function WordScramble() { stop();
kata_tebakan = new String(); kata_ketemu = new Array(); }
private function Kamus() { LoadKamus(kamus); }
private function LoadKamus(path:String):void { loader = new URLLoader();
loader.addEventListener(Event.COMPLETE,LoadKamus2); loader.load(new URLRequest(path));
}
private function LoadKamus2(e:Event):void {
var isi_kamus:String = String(e.target.data);
kata = isi_kamus.split(String.fromCharCode(13,10)); trace("Kamus" + kamus.length); Tampilan(); Papan(30,50,huruf_mendatar,huruf_menurun,uk_tombol); MulaiWaktu(waktu); }
private function Tampilan(){
var kata:Object = new TextFormat(); kata.font = "Georgia";
kata.size = 16;
kata.color = 0xFFFF00; status_kata = new Label(); status_kata.autoSize = "left"; status_kata.move(440,20);
status_kata.setStyle("textFormat",kata); status_kata.text = "";
addChild(status_kata);
tambah_tombol = new Button(); tambah_tombol.move(290,50); tambah_tombol.setSize(175 / 2, 30); tambah_tombol.setStyle("textFormat",kata); tambah_tombol.label = "Tambah"; tambah_tombol.addEventListener(MouseEvent.CLICK,TambahKata); addChild(tambah_tombol);
hapus_tombol = new Button(); hapus_tombol.move(290,100); hapus_tombol.setSize(175 / 2, 30); hapus_tombol.setStyle("textFormat",kata); hapus_tombol.label = "Hapus"; hapus_tombol.addEventListener(MouseEvent.CLICK,HapusKata); addChild(hapus_tombol);
hasil_nilai = new TextArea(); hasil_nilai.x = 440;
hasil_nilai.y = 50;
hasil_nilai.setSize(175,255); hasil_nilai.editable = false; addChild(hasil_nilai);
status_waktu = new Label(); status_waktu.move(30,255); status_waktu.setSize(200,50);
status_waktu.setStyle("textFormat",kata); status_waktu.text = " ";
}
private function
Papan(startX:Number,startY:Number,total_baris:Number,total_kolom:Numb er,uk_tombol:Number):void {
var kata:Object = new TextFormat(); kata.font = "Cooper Black";
kata.size = 18;
kata.color = 0xFFFF00; tombol = new Array(); var kolom:uint;
var baris:uint;
for(baris = 0; baris < total_baris; baris++) {
for(kolom = 0; kolom < total_kolom; kolom++) {
var b:Button = new Button(); b.x = startX + (kolom*uk_tombol); b.y = startY + (baris*uk_tombol); b.addEventListener(MouseEvent.CLICK, HurufTerpilih); b.label = HurufAcak(); trace("huruf " + b.label); b.setSize(uk_tombol,uk_tombol); b.setStyle("textFormat",kata); b.name = "buttonRow"+baris+"Col"+kolom; addChild(b); tombol.push(b); } } }
private function HurufAcak():String { alfabet =
["A","B","C","D","E","F","G","H","I","J","K","L","M",
"N","O","P","QU","R","S","T","U","V","W","X","Y","Z"]; var frek:int =(Math.random()*99);
if(0<=frek && frek<=7){trace(frek);return alfabet[0].toString();}
if(frek==8){trace(frek);return alfabet[1].toString();}
if(frek >= 9 && frek<=11){trace(frek);return alfabet[2].toString();}
if(frek >= 12 && frek<=15){trace(frek);return alfabet[3].toString();}
if(frek >= 16 && frek<=27){trace(frek);return alfabet[4].toString();}
if(frek>=28 && frek<=29){trace(frek);return alfabet[5].toString();}
if(frek>=30 && frek<=31){trace(frek);return alfabet[6].toString();}
if(frek >=32 && frek<=37){trace(frek);return alfabet[7].toString();}
if(frek >=38 && frek<=44){trace(frek);return alfabet[8].toString();}
if(frek==45){trace(frek);return alfabet[9].toString();}
if(frek==46){trace(frek);return alfabet[10].toString();}
if(frek >= 47 && frek<=50){trace(frek);return alfabet[11].toString();}
if(frek >= 51 && frek<=52){trace(frek);return alfabet[12].toString();}
if(frek >= 53 && frek<=58){trace(frek);return alfabet[13].toString();}
if(frek >= 59 && frek<=65){trace(frek);return alfabet[14].toString();}
if(frek >= 66 && frek<=67){trace(frek);return alfabet[15].toString();}
if(frek==68){trace(frek);return alfabet[16].toString();}
if(frek >=69 && frek<=74){trace(frek);return alfabet[17].toString();}
if(frek >=75 && frek<=80){trace(frek);return alfabet[18].toString();}
if(frek >= 81 && frek<=89){trace(frek);return alfabet[19].toString();}
if(frek >= 90 && frek<=92){trace(frek);return alfabet[20].toString();}
if(frek==93){trace(frek);return alfabet[21].toString();}
if(frek >=94 && frek<=95){trace(frek);return alfabet[22].toString();}
if(frek==96){trace(frek);return alfabet[23].toString();}
if(frek>=97 && frek<=98){trace(frek);return alfabet[24].toString();}
if(frek==99){trace(frek);return alfabet[25].toString();}
return alfabet.toString(); }
private function HurufTerpilih(e:MouseEvent):void { var b:Button = Button(e.target);
trace("Pilihan: " + b.label); if(!tombol_terakhir) { KataBaru(b.label); } else if(Ketetanggaan(b,tombol_terakhir)) { TambahTebakan(b.label); } else { KataBaru(b.label); } tombol_terakhir = b; b.enabled = false; }
private function TambahTebakan(huruf:String):void { kata_tebakan += huruf;
status_kata.text = kata_tebakan; trace("Tambahan: " + kata_tebakan); }
private function KataBaru(huruf:String):void { trace("Mulai kata baru");
var i:uint;
for(i = 0; i<tombol.length; i++) { tombol[i].enabled = true; } kata_tebakan = huruf; status_kata.text = huruf; } private function Ketetanggaan(tombol_sebelum:Button,tombol_sesudah:Button):Boolean { var baris_sesudah:Number = Number(tombol_sesudah.name.charAt(tombol_sesudah.name.indexOf("Row") + 3)); var kolom_sesudah:Number = Number(tombol_sesudah.name.charAt(tombol_sesudah.name.indexOf("Col") + 3)); var baris_sebelum:Number = Number(tombol_sebelum.name.charAt(tombol_sebelum.name.indexOf("Row") + 3)); var kolom_sebelum:Number = Number(tombol_sebelum.name.charAt(tombol_sebelum.name.indexOf("Col") + 3));
return ((Math.abs(baris_sebelum - baris_sesudah) <= 1) &&
(Math.abs(kolom_sebelum - kolom_sesudah) <= 1));
}
private function TambahKata(e:MouseEvent):void { if(kata_tebakan.length < panjang_kata) {
KataBaru("");
status_kata.text = "Minimal " + panjang_kata + " huruf!"; } else if(!SudahKetemu(kata_tebakan)) { var indeks_kata:Number = CariKata(kata_tebakan.toLowerCase()); if(indeks_kata > -1) { kata_ketemu.push(kata_tebakan); KataBaru(""); Nilai();
status_kata.text = "Kata baru ditemukan!"
} else {
KataBaru("");
status_kata.text = "Kata tidak ada dalam kamus!"
} }
else {
KataBaru("");
status_kata.text = "Kata sudah dimasukkan." }
}
private function HapusKata(e:MouseEvent):void { KataBaru("");
}
private function SudahKetemu(a:String):Boolean { var i:uint;
for(i = 0; i<kata_ketemu.length; i++) { if(a == kata_ketemu[i]) return true; }
return false; }
private function CariKata(huruf:String):Number { var i:uint = 0
for(i=0; i<kata.length; i++) { var Kata:String = kata[i]; if(huruf == kata[i]) { return i; } } return -1; }
private function Nilai():void { var daftar_kata = new Array(); var nilai_total:Number = 0; var i:uint;
for(i=0; i<kata_ketemu.length; i++) { var Kata:String = kata_ketemu[i]; nilai_total += nilai[Kata.length]; daftar_kata += Kata + "\n";
}
hasil_nilai.text = "Total Nilai: " + nilai_total + "\n" + "\n" + "Daftar Kata: " + "\n" + daftar_kata;
}
private function MulaiWaktu(total_waktu:Number):void { t = new Timer(1000, total_waktu);
t.addEventListener(TimerEvent.TIMER,hitung_waktu);
t.addEventListener(TimerEvent.TIMER_COMPLETE,waktu_habis); t.start();
}
private function hitung_waktu(e:TimerEvent):void { var waktu_sisa:Number = waktu -
e.target.currentCount;
status_waktu.text = "Sisa waktu: " + String(waktu_sisa);
}
private function waktu_habis(e:TimerEvent):void { status_waktu.text = "Waktu habis!";
var i:uint;
for(i=0; i<tombol.length; i++) { tombol[i].enabled = false; }
tambah_tombol.enabled = false; hapus_tombol.enabled = false;
var kata:Object = new TextFormat(); kata.font = "Georgia";
kata.size = 16;
tombol_kembali = new Button(); tombol_kembali.move(290,150); tombol_kembali.setSize(175 / 2, 30); tombol_kembali.setStyle("textFormat",kata); tombol_kembali.label = "Kembali"; tombol_kembali.addEventListener(MouseEvent.CLICK,Kembali); addChild(tombol_kembali); status_kata.text = ""; }
private function Kembali(e:MouseEvent):void { var i:uint;
for(i=0; i<tombol.length; i++) { tombol[i].enabled = false; removeChild(tombol[i]); tombol[i]=null; } removeChild(status_kata); removeChild(tambah_tombol); removeChild(hapus_tombol); removeChild(hasil_nilai); removeChild(status_waktu); removeChild(tombol_kembali); kata_ketemu=[]; gotoAndStop(5); } } }