Anda di halaman 1dari 16

LAPORAN TUGAS BESAR KECERDASAN BUATAN

Implementasi Algoritma F !!" Pa#a Game Angr" Bir#s$

Nama Kelompo%& D'EA BU(UNG PILIANG 1A2ALUDIN SANUR AND( SUR(O PRA(OGO )*+,-*.-/0 )*3,-*45/0 )*3,-*6..0

LABORATORIU2 PE2ROGRA2AN PROGRA2 STUDI TEKNIK INFOR2ATIKA FAKULTAS TEKNIK UNI7ERSITAS 2U'A22ADI(A' 2ALANG 4*.6

I8 TU1UAN
Mahasiswa mampu : 1. Mahasiswa mampu untuk membuat AI pada game Angry Birds 2. Mahasiswa mampu mengimplementasikan algoritma fuzzy pada game Angry Birds

II8 ALAT (ANG DIGUNAKAN


Peralatan yang digunakan : 1. Browser oogle !hrome 2. Perangkat P! yang terinstall "a#a $. %ditor "a#a

III8 DASAR TEORI


Angr" Bir#s Angry Birds adalah #ideo game yang mulanya pada aplikasi iPad & iPhone' namun kini telah dirilis di berbagai media. Inggris pun tertarik dengan permainan ini. *alam Angry Birds' pemain mengendalikan sekawanan burung warna+warni yang berusaha untuk mengambil telur yang di(uri oleh sekelompok babi hi)au )ahat. Pada setiap tingkat' babi+babi yang dilindungi oleh struktur yang terbuat dari berbagai bahan seperti es' kayu' dan batu. ,u)uan dari permainan ini adalah untuk menghilangkan semua babi di tiap tingkat permainan. Menggunakan katapel' pemain melun(urkan burung dengan maksud untuk memukul babi se(ara langsung atau merusak struktur yang melindunginya' runtuhnya strutkur dapat membunuh babi. *alam berbagai tahap permainan' benda tambahan seperti bahan peledak dan krat batu ditemukan di beberapa tingkat' dan dapat digunakan bersama dengan burung+ burung untuk menghan(urkan babi yang sulit di)angkau. Ada beberapa )enis burung yang digunakan dalam permainan. Pada tingkat awal' burung merah adalah satu+satunya yang tersedia. -etiap tahap permainan' )enis burung akan bertambah' beberapa )enis burung lebih efektif terhadap bahan tertentu atau memiliki kemampuan khusus yang diaktifkan setelah burung dilun(urkan. -ebagai (ontoh' seekor burung biru ke(il dapat memisah men)adi tiga burung ke(il' burung biru es dapat membuat sasarannya membeku' burung kuning yang dapat ame ini (ukup membuat ketagihan pemakainya sehingga telah diunduh lebih dari 1 Miliar pengguna. Bahkan pe)abat

menambah ke(epatan dan daya rusak' burung hitam yang bisa meledak' dan burung putih yang bisa men)atuhkan bom telur' burung hi)au yang bisa men)adi bumerang' burung merah atau hi)au berukuran besar yang bisa menghan(urkan lebih banyak struktur'burung orange yang bisa memperbesar diri' dan burung ungu bisa menembak tepat sasaran. Babi )uga mun(ul dalam ukuran yang berbeda. Babi ke(il relatif lemah dan mudah dihan(urkan baik oleh tembakan langsung atau dengan puing+puing dari bangunan yang rusak' babi lebih besar mampu mempertahankan diri dari banyak kerusakan. "uga' beberapa babi mengenakan helm ba)a' membuat mereka lebih tahan terhadap kerusakan struktur' sedangkan babi dengan mahkota paling banyak bisa menahan kerusakan. -etiap tingkat dimulai dengan )umlah' )enis' dan keterlibatan burung yang telah ditentukan. "ika semua babi bisa dikalahkan pada saat burung terakhir digunakan' tingkat selesai dan tingkat berikutnya terbuka. Poin diperoleh untuk setiap babi yang dikalahkan serta dari setiap kerusakan atau kehan(uran struktur' serta poin bonus yang akan diberikan untuk setiap burung yang tidak dipakai. -etelah menyelesaikan setiap tingkat' pemain menerima satu' dua' atau tiga bintang' tergantung pada nilai yang diterima. Pemain dapat kembali berusaha membuka tingkat sebanyak yang mereka inginkan agar berhasil menyelesaikan atau untuk mendapatkan poin tambahan dan & atau bintang+bintang tambahan.

Arti9i:ial Intelligen:e ./e(erdasan buatan 0artifi(al intelligen(e1 merupakan kawasan penelitian' aplikasi dan instruksi yang terkait dengan pemrograman komputer untuk melakukan sesuatu hal yang dalam pandangan manusia adalah 2 (erdas. 0 3. A. -imon 14561. *alam Encyclopedia Britannica diterangkan bahwa /e(erdasan Buatan 0AI1 merupakan (abang dari ilmu komputer yang dalam merepresentasi pengetahuan lebih banyak menggunakan bentuk simbol+simbol daripada bilangan dan memproses informasi berdasarkan metode heuristi( atau dengan berdasarkan se)umlah aturan. Artifi(ial Intelligen(e 0AI1 atau ke(erdasan buatan merupakan (abang dari ilmu komputer yang berhubungan dengan tingkah laku (erdas. /e(erdasan buatan dapat memungkinkan komputer untuk 7berpikir7. /e(erdasan Buatan dapat menirukan proses bela)ar manusia sehingga informasi baru dapat diserap dan digunakan sebagai a(uan di masa+masa yang akan datang. ,eknik yang digunakan dalam /e(erdasan Buatan memungkinkan dibuatnya sebuah program yang setiap bagiannya mengandung langkah+

langkah independen dan dapat diidentifikasi dengan baik untuk dapat meme(ahkan sebuah atau se)umlah persoalan yang dihadapi nantinya. /e(erdasan buatan dapat membantu kita untuk menyelesaikan kesulitan permasalahan nyata. 1. -e)arah Artifi(ial Intelligen(e ,ahun 1489 Alan ,uring mengusulkan tes 0,uring ,est1 untuk mengetahui mesin dikatakan (erdas. ,ahun 148: AI dimun(ulkan oleh Profesor dari Massa(husetts Institu of ,e(hnology bernama "ohn M(!arthy pada *artmouth !onferen(e yang dihadiri oleh peneliti AI. -elan)utnya se)ak saat itu bermun(ulan program AI diantaranya : + Logic Theorist diperkenalkan pada *artmouth !onferen(e membuktikan 2teorema matematika. + Sad Sam diprogram oleh ;obert / <indsay 14:9 mengetahui kalimat+kalimat sederhana yang ditulis dalam bahasa inggris dan memberi )awaban dari fakta+fakta yang didengar dari per(akapan. Eliza diprogram oleh "oseph =eizenbaum 14:6 melakukan terapi terhadap pasien dengan memberikan beberapa pertanyaan. -e)arah AI dari tahun ke tahun: + + + + + + + %ra /omputer %lektronik 014>11 Masa Persiapan AI 014>$+14811 Masa Perkembangan AI 01482+14:41 Perkembangan AI melambat 014:4+146>1 -istem Berbasi Pengetahuan 0146>+14641 AI men)adi sebuah industri 01459+14551 /embalinya "-, 01455+sekarang1 teorema

2. AI 0/e(erdasan buatan1 dalam game. -alah satu unsur yang berperan penting dalam sebuah game adalah /e(erdasan buatan. *engan /e(erdasan buatan' elemen+elemen dalam game dapat berperilaku sealami mungkin layaknya manusia. Pada dasarnya AI game terdiri dari dua kategori yaitu Deterministic dan ?ondeterministi(. Deterministic merupakan simple algoritma' dimana sebuah

nonplayer pada komputer game bergerak sesuai dengan koordinat yang bergerak maupun berperilaku sesuai koordinat dan respon yang telah diatur sedemikian rupa' seakan+akan sebuah nonplayer dapat bergerak sesuai kemaunannya sendiri' tetapi mudah ditebak apa yang akan dilakukan selan)utnya. -edangkan nondeterministic adalah kebalikan dari deterministi(. Pergerakan nonderterministic tidak dapat diprediksi oleh pemain dan menggunakan algoritma yang lebih kompleks. -ehingga membuat game semakin menarik dan tidak men)adi membosankan. $. *efinisi Fuzzy logic Fuzzy logic memungkinkan nilai keanggotaan antara 9 dan 1' tingkat keabuan dan )uga hitam dan putih dan dalam bentuk linguistik' konsep tidak pasti seperti .sedikit.' .lumayan. dan .sangat. 0*r. <otfi @adeh 14:81. Fuzzy logic merupakan peningkatan dari logika Boolean yang berhadapan dengan suatu konsep kebenaran tidak penuh 0hanya sebagian1' dimana peran logika klasik menyatakan bahwa segala hal dapat diekspresikan dalam istilah binary 09 atau 1' hitam atau putih' ya atau tidak1. Fuzzy logic menggantikan kebenaran Boolean dengan tingkat kebenaran. Fuzzy logic digunakan untuk mener)emahkan suatu besaran yang diekspresikan dengan pelan' agak (epat' (epat dan sangat (epat. ,anpa disadari' Fuzzy logic banyak digunakan dalam kehidupan sehari+hari' karena logika ini mengadopsi pemahaman serta penilain otak manusia terhadapa sesuatu hal tertentu. *alam kehidupan sehari+hari manusia banyak dihadapi dengan situasi pertimbangan yang tidak pasti )awabannya ya atau tidak. 3al seperti inilah adalah salah satu (ontoh sederhana Fuzzy logic dalam kehidupan sehari+hari. Alasan digunakannya Fuzzy logic : Ada beberapa alasan mengapa orang menggunakan Fuzzy logic' antara lain : 1. /onsep logika fuzzy mudah dimengerti. /onsep matematis yang mendasari penalaran fuzzy sangat sederhana dan mudah dimengerti. 2. $. >. 8. Fuzzy logic sangat fleksibel. Fuzzy logic memiliki toleransi terhadap data+data yang tidak tepat. Fuzzy logic mampu memodelkan fungsi+fungsi nonlinear yang sangat kompleks. Fuzzy logic dapat membangun dan mengaplikasikan pengalaman+pengalaman para pakar se(ara langsung tanpa harus melalui proses pelatihan.

:. 6.

Fuzzy logic dapat beker)a sama dengan teknik+teknik kendali se(ara kon#ensional. Fuzzy logic didasarkan pada bahasa alami.

I78 'ASIL PRAKTIKU2


Antuk menggunakan AI ini kita membutuhkan posisi B dan C dari burung. Posisi B yaitu )arak antara burung dan target0babi1 sedangkan posisi C diperoleh dari fungsi getYCoordinate dari kelas Trajectory lanner! Berdasarkan posisi tersebut' kita dapat mengetahui apa sa)a yang akan dilalui burung. /emudian dihitung bobot dari apa sa)a yang akan dilewati oleh burung sebelum mengenai target0babi1. *engan bobot sebagai berikut: Bobot /ayu D 2 Bobot %s D 1'8 Bobot ,?, D > Bobot Batu D $9 SCREENS'OT

Eutput yang di blok diatas' menun)ukkan ada 2 strategi. -trategi tersebut didapat dari fungsi estimateLaunch oint dari kelas Trajectory lanner. -trategi yang pertama akan menabrak 2 kayu' sedangkan strategi yang kedua menabrak 1 kayu. -ehingga AI akan menggunakan strategi kedua dikarenakan mempunyai bobot0kayu1 lebih sedikit dibanding strategi pertama.

SOURCE CODE import )a#a.awt.PointF import )a#a.awt.;e(tangleF import )a#a.awt.image.BufferedImageF import )a#a.util.Array<istF import )a#a.util.<istF import )a#a.util.;andomF import ab.demo.other.A(tion;obotF import ab.demo.other.%n#F import ab.demo.other.-hotF import ab.demo.util.-tateAtilF import ab.planner.,ra)e(toryPlannerF import ab.#ision. ame-tate%Gtra(tor. ame-tateF import ab.#ision.HisionF import )a#a.util.<inked<istF import )a#a.util.,reeMapF publi( (lass Eur?ai#eAgent$ implements ;unnable I pri#ate int fo(usJGF pri#ate int fo(usJyF pri#ate A(tion;obot arF publi( int (urrent<e#el D 1F ,ra)e(toryPlanner tpF pri#ate boolean first-hotF pri#ate Point pre#,argetF <istK;e(tangleL redJbirdsF <istK;e(tangleL blueJbirdsF <istK;e(tangleL yellowJbirdsF <istK;e(tangleL pigsF <istK;e(tangleL wallJi(eF <istK;e(tangleL wallJwoodF <istK;e(tangleL wallJtntF <istK;e(tangleL wallJstoneF && a standalone implementation of the ?ai#e Agent publi( Eur?ai#eAgent$01 I ar D new A(tion;obot01F tp D new ,ra)e(toryPlanner01F pre#,arget D nullF first-hot D trueF && +++ go to the Poa(hed %ggs episode le#el sele(tion page +++ A(tion;obot. oMromMainMenu,o<e#el-ele(tion01F N

publi( int get!urrentJle#el01 I return (urrent<e#elF N publi( #oid set!urrentJle#el0int (urrentJle#el1 I this.(urrent<e#el D (urrentJle#elF N && run the (lient publi( #oid run01 I ar.load<e#el0(urrent<e#el1F while 0true1 I ame-tate state D sol#e01F if 0state DD ame-tate.=E?1 I try I ,hread.sleep0$9991F N (at(h 0Interrupted%G(eption e1 I e.print-ta(k,ra(e01F N int s(ore D +2F while 0s(ore OD -tateAtil.(he(k!urrent-(ore0ar.proGy11 I try I ,hread.sleep08991F N (at(h 0Interrupted%G(eption e1 I && ,E*E Auto+generated (at(h blo(k e.print-ta(k,ra(e01F N s(ore D -tateAtil.(he(k!urrent-(ore0ar.proGy1F N -ystem.out.println0PQQQQQQ ,he game s(ore is P R s(ore R PQQQQQQQQP1F ar.load<e#el0RR(urrent<e#el1F && make a new tra)e(tory planner whene#er a new le#el is entered tp D new ,ra)e(toryPlanner01F && first shot on this le#el' try high shot first first-hot D trueF N else if 0state DD ame-tate.<E-,1 I -ystem.out.println0PrestartP1F ar.restart<e#el01F N else if 0state DD ame-tate.<%H%<J-%<%!,IE?1 I -ystem.out .println0PuneGpe(ted le#el sele(tion page' go to the lasts (urrent le#el : P R (urrent<e#el1F ar.load<e#el0(urrent<e#el1F N else if 0state DD ame-tate.MAI?JM%?A1 I -ystem.out .println0PuneGpe(ted main menu page' go to the lasts (urrent le#el : P R (urrent<e#el1F

A(tion;obot. oMromMainMenu,o<e#el-ele(tion01F ar.load<e#el0(urrent<e#el1F N else if 0state DD ame-tate.%PI-E*%JM%?A1 I -ystem.out .println0PuneGpe(ted episode menu page' go to the lasts (urrent le#el : P R (urrent<e#el1F A(tion;obot. oMromMainMenu,o<e#el-ele(tion01F ar.load<e#el0(urrent<e#el1F N N N pri#ate double distan(e0Point p1' Point p21 I return Math .sSrt00double1 00p1.G + p2.G1 T 0p1.G + p2.G1 R 0p1.y + p2.y1 T 0p1.y + p2.y111F N publi( ame-tate sol#e01I && (apture Image BufferedImage s(reenshot D A(tion;obot.do-(reen-hot01F && pro(ess image Hision #ision D new Hision0s(reenshot1F ;e(tangle sling D #ision.find-lingshot01F while 0sling DD null UU ar.(he(k-tate01 DD ame-tate.P<ACI? 1 I -ystem.out.println0Pno slingshot dete(ted. Please remo#e pop up or zoom outP1F ar.fully@oom01F s(reenshot D A(tion;obot.do-(reen-hot01F #ision D new Hision0s(reenshot1F sling D #ision.find-lingshot01F N redJbirds D #ision.find;edBirds01F blueJbirds D #ision.findBlueBirds01F yellowJbirds D #ision.findCellowBirds01F pigs D #ision.findPigs01F wallJi(e D #ision.findI(e01F wallJwood D #ision.find=ood01F wallJtnt D #ision.find,?,s01F wallJstone D #ision.find-tones01F int birdJ(ount D 9F birdJ(ount D redJbirds.size01 R blueJbirds.size01 R yellowJbirds.size01F

-ystem.out.println0P...found P R pigs.size01 R P pigs and P R birdJ(ount R P birdsP1F -ystem.out.println0Pwall wood DPRwallJwood.size01R P wallJi(e DPRwallJi(e.size01R P wall tnt DPRwallJtnt.size01R P wallJstoneDPRwallJstone.size011F ame-tate state D ar.(he(k-tate01F && if there is a sling' then play' otherwise )ust skip. if 0sling OD null1 I ar.fully@oom01F if 0Opigs.is%mpty011 I && Initialise a shot list Array<istK-hotL shots D new Array<istK-hotL01F Point releasePointF I && random pi(k up a pig ;andom r D new ;andom01F int indeG D r.neGtInt0pigs.size011F ;e(tangle pig D pigs.get0indeG1F Point Jtpt D new Point00int1 pig.get!enterB01'0int1 pig.get!enterC011F -ystem.out.println0Pthe target point is P R Jtpt1F && if the target is #ery (lose to before' randomly (hoose a && point near it if 0pre#,arget OD null UU distan(e0pre#,arget' Jtpt1 K 191 I double Jangle D r.neGt*ouble01 T Math.PI T 2F Jtpt.G D Jtpt.G R 0int1 0Math.(os0Jangle1 T 191F Jtpt.y D Jtpt.y R 0int1 0Math.sin0Jangle1 T 191F -ystem.out.println0P;andomly (hanging to P R Jtpt1F N pre#,arget D new Point0Jtpt.G' Jtpt.y1F && estimate the tra)e(tory Array<istKPointL pts D tp.estimate<aun(hPoint0sling' Jtpt1F

if0pts.size01 L 11I &&(he(k weight for 9 ,reeMap tp9 D get=eight0sling' pts.get091' pig1F ,reeMap tp1 D get=eight0sling' pts.get011' pig1F

double weightJwood D 2.9F double weightJi(e D 1.8F double weightJtnt D >.9F double weightJstone D $9F double weightJtotalJ9 D 9F double weightJtotalJ1 D 9F &&tp 9 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD DDDDD weightJtotalJ9 D 0 0<inked<ist1 tp9.get0PwoodP1 1.size01 T weightJwoodF weightJtotalJ9 RD 0 0<inked<ist1 tp9.get0Pi(eP1 1.size01 T weightJi(eF weightJtotalJ9 RD 0 0<inked<ist1 tp9.get0PtntP1 1.size01 T weightJtntF weightJtotalJ9 RD 0 0<inked<ist1 tp9.get0PstoneP1 1.size01 T weightJstoneF -ystem.out.println0P tra)e(tory 9 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDP1F -ystem.out.println0P supposed to hit wood D PR 0 0<inked<ist1 tp9.get0PwoodP1 1.size01RP i(e D PR0 0<inked<ist1 tp9.get0Pi(eP1 1.size01RP tnt D PR0 0<inked<ist1 tp9.get0PtntP1 1.size01RP stone D PR 0 0<inked<ist1 tp9.get0PstoneP1 1.size011F -ystem.out.println0P total weight tra)e(tory 9 D PRweightJtotalJ91F &&tp 1 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD DDDDD weightJtotalJ1 D 0 0<inked<ist1 tp1.get0PwoodP1 1.size01 T weightJwoodF weightJtotalJ1 RD 0 0<inked<ist1 tp1.get0Pi(eP1 1.size01 T weightJi(eF weightJtotalJ1 RD 0 0<inked<ist1 tp1.get0PtntP1 1.size01 T weightJtntF weightJtotalJ1 RD 0 0<inked<ist1 tp1.get0PstoneP1 1.size01 T weightJstoneF -ystem.out.println0P tra)e(tory 1 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDP1F -ystem.out.println0P supposed to hit wood D PR 0 0<inked<ist1 tp1.get0PwoodP1 1.size01RP i(e D PR0 0<inked<ist1 tp1.get0Pi(eP1 1.size01RP tnt D PR0 0<inked<ist1 tp1.get0PtntP1 1.size01RP stone D PR 0 0<inked<ist1 tp1.get0PstoneP1 1.size011F -ystem.out.println0P total weight tra)e(tory 1 D PRweightJtotalJ11F if0weightJtotalJ9 KD weightJtotalJ11I releasePoint D pts.get091F

-ystem.out.println0Puse plan 9P1F NelseI releasePoint D pts.get011F -ystem.out.println0Puse plan 1P1F N

NelseI releasePoint D pts.get091F -ystem.out.println0Pnot (al(ulate weight' only one optionP1F N Point refPoint D tp.get;eferen(ePoint0sling1F &T et the (enter of the a(ti#e bird T& fo(usJG D 0int1 00%n#.getMo(uslist01.(ontains/ey0(urrent<e#el11 V %n#.getMo(uslist01 .get0(urrent<e#el1.getB01 : refPoint.G1F fo(usJy D 0int1 00%n#.getMo(uslist01 .(ontains/ey0(urrent<e#el11 V %n#.getMo(uslist01 .get0(urrent<e#el1.getC01 : refPoint.y1F

&&(ode goes here

-ystem.out.println0P-hootOOP1F if 0releasePoint OD null1 I double releaseAngle D tp.get;eleaseAngle0sling' releasePoint1F -ystem.out.println0P ,he release angle is : P R Math.to*egrees0releaseAngle11F int base D 9F if 0releaseAngle L Math.PI & >1 base D 1>99F else base D 889F int tapJtime D 0int1 0base R Math.random01 T 18991F

shots.add0new -hot0fo(usJG' fo(usJy' 0int1 releasePoint .getB01 + fo(usJG' 0int1 releasePoint.getC01 + fo(usJy' 9' tapJtime11F N else -ystem.err.println0PEut of /nowledgeP1F N && (he(k whether the slingshot is (hanged. the (hange of the && slingshot indi(ates a (hange in the s(ale. I ar.fully@oom01F s(reenshot D A(tion;obot.do-(reen-hot01F #ision D new Hision0s(reenshot1F ;e(tangle Jsling D #ision.find-lingshot01F if 0sling.eSuals0Jsling11 I state D ar.shoot=ith-tateInfo;eturned0shots1F && update parameters after a shot is made if 0state DD ame-tate.P<ACI? 1 I s(reenshot D A(tion;obot.do-(reen-hot01F #ision D new Hision0s(reenshot1F <istKPointL tra) D #ision.find,ra)Points01F tp.ad)ust,ra)e(tory0tra)' sling' releasePoint1F first-hot D falseF N N else -ystem.out.println0Ps(ale is (hanged' (an not eGe(ute the shot' will re+segement the imageP1F N N N return stateF N pri#ate ,reeMap get=eight0;e(tangle sling' Point releasePoint' ;e(tangle pig1 I <inked<ist hitJwood D new <inked<ist01F <inked<ist hitJi(e D new <inked<ist01F <inked<ist hitJtnt D new <inked<ist01F <inked<ist hitJstone D new <inked<ist01F for0int rangeD9F rangeKpig.GF rangeRR1I int (urrentB D rangeRfo(usJGF

int (urrentC D tp.getC!oordinate0sling' new Point00int1releasePoint.getB01' 0int1releasePoint.getC011' (urrentB1F &&(he(k if hit wood wall for0int iJwoodD9F iJwoodKwallJwood.size01F iJwoodRR1I int minB D wallJwood.get0iJwood1.GF int maGB D minB R wallJwood.get0iJwood1.widthF int minC D wallJwood.get0iJwood1.yF int maGC D minC R wallJwood.get0iJwood1.heightF if0 0(urrentBLminB UU (urrentBKmaGB1UU 0(urrentCLminC UU (urrentCKmaGC1 1I if0OhitJwood.(ontains0wallJwood.get0iJwood111I hitJwood.add0wallJwood.get0iJwood11F N N N &&(he(k if hit wall i(e for0int iJi(eD9F iJi(eKwallJi(e.size01F iJi(eRR1I int minB D wallJi(e.get0iJi(e1.GF int maGB D minB R wallJi(e.get0iJi(e1.widthF int minC D wallJi(e.get0iJi(e1.yF int maGC D minC R wallJi(e.get0iJi(e1.heightF if0 0(urrentBLminB UU (urrentBKmaGB1UU 0(urrentCLminC UU (urrentCKmaGC1 1I if0OhitJi(e.(ontains0wallJi(e.get0iJi(e111I hitJi(e.add0wallJi(e.get0iJi(e11F N N N &&(he(k if hit tnt for0int iJtntD9F iJtntKwallJtnt.size01F iJtntRR1I int minB D wallJtnt.get0iJtnt1.GF int maGB D minB R wallJtnt.get0iJtnt1.widthF int minC D wallJtnt.get0iJtnt1.yF int maGC D minC R wallJtnt.get0iJtnt1.heightF if0 0(urrentBLminB UU (urrentBKmaGB1UU 0(urrentCLminC UU (urrentCKmaGC1 1I if0OhitJtnt.(ontains0wallJtnt.get0iJtnt111I hitJtnt.add0wallJtnt.get0iJtnt11F N N N &&(he(k if hit stone for0int iJstoneD9F iJstoneKwallJstone.size01F iJstoneRR1I

int minB D wallJstone.get0iJstone1.GF int maGB D minB R wallJstone.get0iJstone1.widthF int minC D wallJstone.get0iJstone1.yF int maGC D minC R wallJstone.get0iJstone1.heightF if0 0(urrentBLminB UU (urrentBKmaGB1UU 0(urrentCLminC UU (urrentCKmaGC1 1I if0OhitJstone.(ontains0wallJstone.get0iJstone111I hitJstone.add0wallJstone.get0iJstone11F N N N N ,reeMapK-tring' <inked<istL result D new ,reeMapK-tring' <inked<istL01F

result.put0PwoodP' hitJwood1F result.put0Pi(eP' hitJi(e1F result.put0PtntP' hitJtnt1F result.put0PstoneP' hitJstone1F return resultF N publi( stati( #oid main0-tring argsWX1 I Eur?ai#eAgent$ na D new Eur?ai#eAgent$01F if 0args.length L 91 na.(urrent<e#el D Integer.parseInt0argsW9X1F na.run01F N N

78 KESI2PULAN

Anda mungkin juga menyukai