package Ġfr . min em obs . pokemon cli čĊč Ċ import Ġfr . min em obs . pokemon cli . attack . Attack s č Ċ import Ġfr . min em obs . pokemon cli . entities . Player č Ċ import Ġfr . min em obs . pokemon cli . entities . Pokemon č Ċ import Ġfr . min em obs . pokemon cli . entities . P ok em ons č Ċ import Ġfr . min em obs . pokemon cli . entities . Trainer č Ċ import Ġfr . min em obs . pokemon cli . utils . Console č Ċ import Ġfr . min em obs . pokemon cli . utils . Console . Companion . color č Ċ import Ġkotlin . math . round ToInt č Ċ import Ġkotlin . random . Random čĊč Ċ fun Ġmain () Ġ{ čĊĠĠĠ Ġprintln ( color . RED Ġ+ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ____ ĠĠĠĠĠĠ Ġ_ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ____ Ġ Ġ__ ___ Ġ____ ĠĠ Ġ\ n " Ġ+ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"| Ġ Ġ_ Ġ\\ Ġ___ Ġ| Ġ| Ġ__ ___ Ġ_ Ġ__ Ġ___ ĠĠ Ġ___ Ġ Ġ_ Ġ__ ĠĠĠ Ġ| Ġ Ġ_ Ġ\\ | Ġ__ __| Ġ Ġ_ Ġ\\ Ġ Ġ\ n " Ġ+ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"| Ġ| _) Ġ/ Ġ_ Ġ\\ | Ġ| / Ġ/ Ġ_ Ġ\\ Ġ'_ Ġ` Ġ_ Ġ\\ Ġ/ Ġ_ Ġ\\ | Ġ'_ Ġ\\ ĠĠ Ġ| Ġ| _) Ġ| Ġ Ġ_ | Ġ| Ġ| Ġ| Ġ| Ġ\ n " Ġ+ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"| Ġ Ġ__ / Ġ(_) Ġ| ĠĠ Ġ< Ġ Ġ__ / Ġ| Ġ| Ġ| Ġ| Ġ| Ġ(_) Ġ| Ġ| Ġ| Ġ| Ġ Ġ| Ġ Ġ_ Ġ<| Ġ| ___ | Ġ|_| Ġ| Ġ\ n " Ġ+ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"| _| ĠĠ Ġ\\ ___ / | _| \\ _ \\ ___ | _| Ġ|_| Ġ|_| \\ ___ / | _| Ġ|_| Ġ Ġ|_| Ġ\ \_ \\ ____ _| ____ / Ġ Ġ\ n " Ġ+ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ\ n " Ġ+ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor . GREEN Ġ+ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ Ġ____ Ġ_ ĠĠĠĠ Ġ___ ĠĠĠ Ġ__ ___ Ġ____ Ġ___ Ġ__ ___ Ġ___ Ġ___ Ġ Ġ_ ĠĠ Ġ_ Ġ\ n " Ġ+ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ/ Ġ___ | Ġ| ĠĠ Ġ|_ Ġ_ | Ġ Ġ| Ġ__ __| Ġ Ġ_ Ġ\ \_ Ġ_ | _ ĠĠ Ġ_ | _ Ġ_ / Ġ_ Ġ\\ | Ġ\\ Ġ| Ġ|\ n " Ġ+ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"| Ġ| ĠĠ Ġ| Ġ| ĠĠĠ Ġ| Ġ| ĠĠ Ġ| Ġ Ġ_ | Ġ| Ġ| Ġ| Ġ| Ġ| Ġ Ġ| Ġ| Ġ Ġ| Ġ| Ġ| Ġ| Ġ| Ġ Ġ\\ | Ġ|\ n " Ġ+ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"| Ġ| ___ | Ġ| ___ Ġ| Ġ| ĠĠ Ġ| Ġ| ___ | Ġ|_| Ġ| Ġ| Ġ Ġ| Ġ| Ġ Ġ| Ġ| Ġ|_| Ġ| Ġ| \\ Ġ Ġ|\ n " Ġ+ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ\\ ____ | ____ _| ___ | Ġ Ġ| ____ _| ____ / ___ | Ġ|_| Ġ| ___ \\ ___ / | _| Ġ\ \_ |" Ġ+ Ġcolor . RESET ) čĊčĊĠĠĠ Ġ/* čĊĠĠĠ ĠPlayer Ġcreation čĊĠĠĠĠ Ġ*/ čĊčĊĠĠĠ Ġprintln ("") čĊĠĠĠ ĠConsole . println (" Hello Ġthere Ġ! ") čĊĠĠĠ ĠConsole . println (" Welcome Ġto Ġthe Ġworld Ġof ĠPok Ã© mon Ġ! ") čĊĠĠĠ ĠConsole . println (" People Ġcall Ġme Ġthe ĠPok Ã© mon ĠPROF Ġ! ") čĊĠĠĠ ĠConsole . println (" This Ġworld Ġis Ġin hab ited Ġby Ġcre atures Ġcalled ĠPok Ã© mon !") čĊĠĠĠ ĠConsole . println (" For Ġsome Ġpeople , ĠPok Ã© mon Ġare Ġp ets . ĠO thers Ġuse Ġthem Ġfor Ġf ights .") čĊĠĠĠ ĠConsole . println (" Others Ġuse Ġthem Ġfor Ġfight .") čĊĠĠĠ ĠConsole . println (" My self ĠâĢ¦ ") čĊĠĠĠ ĠConsole . println (" I Ġstudy ĠPok Ã© mon Ġas Ġa Ġprof ession .") čĊĠĠĠ ĠConsole . println (" First , Ġwhat Ġis Ġyour Ġname Ġ? ") čĊĠĠĠ Ġval Ġname : ĠString Ġ= Ġread Line () !! čĊĠĠĠ Ġval Ġplayer Ġ= ĠPlayer ( name , ĠArrayList (), Ġarray ListOf ()) čĊĠĠĠ ĠConsole . println (" Right ! ĠSo Ġyour Ġname Ġis Ġ$ name Ġ! ") čĊĠĠĠ ĠConsole . println (" This Ġis Ġmy Ġgrand - son . ĠHe 's Ġbeen Ġyour Ġri val Ġsince Ġyou Ġwere Ġa Ġb aby .") čĊĠĠĠ ĠConsole . println (" âĢ¦ ĠE rm , Ġwhat Ġis Ġhis Ġname Ġagain Ġ? ") čĊĠĠĠ Ġval Ġri val Name Ġ: ĠString Ġ= Ġread Line () !! čĊĠĠĠ Ġval Ġri val Ġ: ĠTr ainer Ġ= ĠPlayer ( rival Name , ĠArrayList (), Ġarray ListOf ()) čĊĠĠĠ ĠConsole . println (" That 's Ġright Ġ! ĠI Ġremember Ġnow Ġ! ") čĊĠĠĠ ĠConsole . println (" H is Ġname Ġis Ġ$ rival Name Ġ! ") čĊĠĠĠ ĠConsole . println ("$ name Ġ! ") čĊĠĠĠ ĠConsole . println (" Your Ġvery Ġown ĠPok Ã© mon Ġlegend Ġis Ġabout Ġto Ġun fold Ġ! ") čĊĠĠĠ ĠConsole . println (" A Ġworld Ġof Ġdream s Ġand Ġad vent ures Ġwith ĠPok Ã© mon Ġawait s Ġ! ĠLet 's Ġgo Ġ! ") čĊčĊĠĠĠ Ġ/* čĊĠĠĠ ĠRoute Ġ 0 1 čĊĠĠĠĠ Ġ*/ čĊčĊĠĠĠ Ġprintln ("\ n " Ġ+ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠ Ġ____ Ġ Ġ____ Ġ Ġ__ Ġ Ġ__ ________ ____ ĠĠ Ġ____ Ġ___ \ n " Ġ+ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġ/ Ġ__ Ġ\ \/ Ġ__ Ġ\ \/ Ġ/ Ġ/ Ġ/ _ Ġ Ġ__ / Ġ__ __/ Ġ Ġ/ Ġ__ Ġ< Ġ Ġ/\ n " Ġ+ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ Ġ/ Ġ/ _/ Ġ/ Ġ/ Ġ/ Ġ/ Ġ/ Ġ/ Ġ/ Ġ/ Ġ/ Ġ/ Ġ__ / ĠĠĠ Ġ/ Ġ/ Ġ/ Ġ/ Ġ/ Ġ\ n " Ġ+ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ/ Ġ_, Ġ_ / Ġ/ _/ Ġ/ Ġ/ _/ Ġ/ Ġ/ Ġ/ Ġ/ Ġ/ ___ ĠĠ Ġ/ Ġ/ _/ Ġ/ Ġ/ Ġ Ġ\ n " Ġ+ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"/ _/ Ġ|_| \\ ____ / \\ ____ / Ġ/ _/ Ġ/ ____ _/ ĠĠ Ġ\\ ____ /_ / ĠĠ Ġ") čĊĠĠĠ ĠConsole . println ("", Ġ 5 ) čĊĠĠĠ ĠConsole . print Ascii Box (" O AK ", Ġ" H ey ! ĠWait ! ĠDon 't Ġgo Ġout !") čĊĠĠĠ ĠConsole . print Ascii Box (" O AK ", Ġ" It 's Ġunsafe ! ĠW ild ĠPok Ã© mon Ġlive Ġin Ġt all Ġgr ass !") čĊĠĠĠ ĠConsole . print Ascii Box (" O AK "," You Ġneed Ġyour Ġown ĠPok Ã© mon Ġfor Ġyour Ġprotection .") čĊĠĠĠ ĠConsole . print Ascii Box (" O AK "," I Ġknow ! ĠHere , Ġcome Ġwith Ġme Ġ! ") čĊčĊĠĠĠ Ġ/* čĊĠĠĠ ĠProf essor 's Ġlabor atory čĊĠĠĠĠ Ġ*/ čĊčĊĠĠĠ Ġprintln ("\ n " Ġ+ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠ Ġ____ ĠĠĠĠĠĠĠĠĠĠĠĠ Ġ____ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ ĠĠĠĠĠĠĠĠĠ Ġ__ ĠĠĠĠĠ Ġ__ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ__ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ\ n " Ġ+ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġ/ Ġ__ Ġ\\ ________ _ Ġ Ġ/ Ġ__ /__ Ġ Ġ__ ________ ____ Ġ Ġ__ __( Ġ) _____ ĠĠ Ġ/ Ġ/ ___ Ġ_ / Ġ/ _ Ġ Ġ____ Ġ Ġ__ ____ ___ Ġ_ / Ġ/ _____ Ġ Ġ__ _____ Ġ Ġ__ \ n " Ġ+ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ Ġ/ Ġ/ _/ Ġ/ Ġ___ / Ġ__ Ġ\ \/ Ġ/ _/ Ġ_ Ġ\ \/ Ġ___ / Ġ___ / Ġ__ Ġ\ \/ Ġ___ /// Ġ___ / Ġ Ġ/ Ġ/ Ġ__ Ġ`/ Ġ__ Ġ\ \/ Ġ__ Ġ\ \/ Ġ___ / Ġ__ Ġ`/ Ġ__ / Ġ__ Ġ\ \/ Ġ___ / Ġ/ Ġ/ Ġ/\ n " Ġ+ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ/ Ġ__ __/ Ġ/ Ġ Ġ/ Ġ/ _/ Ġ/ Ġ__ / Ġ Ġ__ (__ Ġ Ġ| __ Ġ Ġ) Ġ/ _/ Ġ/ Ġ/ ĠĠĠ Ġ(__ Ġ Ġ) Ġ Ġ/ Ġ/ Ġ/ _/ Ġ/ Ġ/ _/ Ġ/ Ġ/ _/ Ġ/ Ġ/ Ġ Ġ/ Ġ/ _/ Ġ/ Ġ/ _/ Ġ/ _/ Ġ/ Ġ/ Ġ Ġ/ Ġ/ _/ Ġ/ Ġ\ n " Ġ+ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"/ _/ ĠĠ Ġ/ _/ ĠĠ Ġ\\ ____ /_ / Ġ Ġ\\ ___ / ____ / ____ / \\ ____ /_ / ĠĠĠ Ġ/ ____ / Ġ Ġ/ _/ \\ __, _/ _. ___ / \\ ____ /_ / ĠĠ Ġ\\ __, _/ \\ __/ \\ ____ /_ / ĠĠ Ġ\\ __, Ġ/ Ġ Ġ\ n " Ġ+ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/ ____ / ĠĠ Ġ") čĊĠĠĠ ĠConsole . println ("", Ġ 5 ) čĊĠĠĠ ĠConsole . println ("$ rival Name : ĠGr amp s ! ĠI 'm Ġfed Ġup Ġwith Ġwaiting !") čĊĠĠĠ ĠConsole . println (" O ak : Ġ$ rival Name ? ĠLet Ġme Ġthink ĠâĢ¦ ") čĊĠĠĠ ĠConsole . println (" Oh , Ġthat 's Ġright , ĠI Ġtold Ġyou Ġto Ġcome ! ĠJust Ġwait !") čĊĠĠĠ ĠConsole . println (" Here , Ġ$ name Ġ! ") čĊĠĠĠ ĠConsole . println (" There Ġare Ġ 3 Ġpok Ã© mon Ġhere !") čĊĠĠĠ ĠConsole . println (" H aha !") čĊĠĠĠ ĠConsole . println (" They Ġare Ġinside Ġthe Ġpok Ã© b alls .") čĊĠĠĠ ĠConsole . println (" When ĠI Ġwas Ġyoung , ĠI Ġwas Ġa Ġserious ĠPok Ã© mon Ġtrainer !") čĊĠĠĠ ĠConsole . println (" In Ġmy Ġold Ġage , ĠI Ġhave Ġonly Ġ 3 Ġleft , Ġbut Ġyou Ġcan Ġhave Ġone ! ĠChoose !") čĊĠĠĠ ĠConsole . println ("$ rival Name : ĠHey ! ĠGr amp s ! ĠWhat Ġabout Ġme ?") čĊĠĠĠ ĠConsole . println (" O ak : ĠBe Ġpatient ! Ġ$ rival Name , Ġyou Ġcan Ġhave Ġone Ġtoo !") čĊĠĠĠ Ġprintln ("( Which ĠPok Ã© mon Ġdo Ġyou Ġwant Ġto Ġchoose Ġ? ) Ġ\ n " Ġ+ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"( Bul bas aur Ġ[ 1 ], ĠChar mand er Ġ[ 2 ], ĠS quir tle Ġ[ 3 ]) ") čĊĠĠĠ Ġvar Ġpokemon Cho osen Ġ= Ġ 0 čĊĠĠĠ Ġwhile Ġ( pokemon Cho osen Ġ== Ġ 0 ){ čĊĠĠĠĠĠĠĠ Ġtry Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( val Ġvalue Ġ= Ġread Line () !!. toInt ()) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 , Ġ 2 , Ġ 3 Ġ-> Ġpokemon Cho osen Ġ= Ġvalue čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġprintln (" Please Ġwrite Ġa Ġnumber Ġbetween Ġ 1 Ġand Ġ 3 ") čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠNumber FormatException ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Please Ġwrite Ġa Ġnumber Ġbetween Ġ 1 Ġand Ġ 3 ") čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġwhen Ġ( pokemon Cho osen ) Ġ{ čĊĠĠĠĠĠĠĠĠ 1 Ġ-> Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayer . add Pokemon ( P ok em ons . B UL BAS A UR . get ()) čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠ 2 Ġ-> Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayer . add Pokemon ( P ok em ons . CHAR M AND ER . get ()) čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠ 3 Ġ-> Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayer . add Pokemon ( P ok em ons . SQ UI RT LE . get ()) čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊĠĠĠ ĠConsole . println ("$ name Ġreceived Ġa Ġ${ player . pok em ons [ 0 ]. getName ()} Ġ! ") čĊĠĠĠ ĠConsole . println (" Do Ġyou Ġwant Ġto Ġgive Ġa Ġnickname Ġto Ġ${ player . pok em ons [ 0 ]. getName ()} ?") čĊĠĠĠ Ġvar Ġgive Nick name Int Ġ= Ġ 0 čĊĠĠĠ Ġwhile Ġ( give Nick name Int Ġ== Ġ 0 ) Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġgive Nick name Ġ= Ġread Line () !! čĊĠĠĠĠĠĠĠ Ġwhen Ġ( give Nick name . lowercase ()) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" yes " Ġ-> Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgive Nick name Int Ġ= Ġ 1 čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Please Ġwrite Ġthe Ġnickname Ġof Ġyour Ġpok Ã© mon ") čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer . pok em ons [ 0 ]. setName ( readLine () !! ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" no " Ġ-> Ġgive Nick name Int Ġ= Ġ 1 čĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Please Ġwrite Ġ[ ${ color . GREEN } Yes ${ color . RESET }] Ġor Ġ[ ${ color . RED } No ${ color . RESET }] ") čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ ĠConsole . println ("$ rival Name : ĠI 'll Ġtake Ġthis Ġone , Ġthen !") čĊčĊĠĠĠ Ġwhen Ġ( pokemon Cho osen ) Ġ{ čĊĠĠĠĠĠĠĠĠ 1 Ġ-> Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġri val . add Pokemon ( P ok em ons . CHAR M AND ER . get ()) čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠ 2 Ġ-> Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġri val . add Pokemon ( P ok em ons . SQ UI RT LE . get ()) čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠ 3 Ġ-> Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġri val . add Pokemon ( P ok em ons . B UL BAS A UR . get ()) čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprintln ("$ rival Name Ġreceived Ġa Ġ${ rival . pok em ons [ 0 ]. getName ()} !") čĊĠĠĠ ĠConsole . println ("$ rival Name : ĠWait Ġ\ n $ name !") čĊĠĠĠ ĠConsole . println (" Let 's Ġcheck Ġout Ġour Ġpok Ã© mon !") čĊĠĠĠ ĠConsole . println (" Come Ġon , ĠI 'll Ġtake Ġyou Ġon !") čĊĠĠĠ Ġ/* čĊĠĠĠ ĠF ight čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġstart Battle ( rival , Ġplayer ) č Ċ } čĊč Ċ fun Ġstart Battle ( trainer : ĠTr ainer , Ġplayer : ĠPlayer ) Ġ{ čĊĠĠĠ Ġ// Start Ġfight čĊĠĠĠ Ġplayer . set In Fight ( true ) čĊĠĠĠ Ġprintln ("${ trainer . name ()} Ġwants Ġto Ġfight !") čĊĠĠĠ Ġwhile ( trainer . pok em ons . any Ġ{ Ġpokemon Ġ-> Ġ! pokemon . is Ko () Ġ} Ġ&& Ġplayer . pok em ons . any Ġ{ Ġpokemon Ġ-> Ġ! pokemon . is Ko () Ġ}) Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġtrainer Pokemon : ĠPokemon Ġ= Ġtrainer . pok em ons [ Random . nextInt ( trainer . pok em ons . filter Ġ{ Ġpokemon Ġ-> Ġ! pokemon . is Ko () Ġ}. size )] čĊĠĠĠĠĠĠĠ Ġbattle ( trainer Pokemon , Ġplayer . pok em ons [ 0 ], Ġtrainer , Ġplayer ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġif ( trainer . pok em ons . none Ġ{ Ġpokemon Ġ-> Ġ! pokemon . is Ko () Ġ}) Ġ{ čĊĠĠĠĠĠĠĠ Ġprintln (" You Ġwon Ġthe Ġfight !") čĊĠĠĠ Ġ} else Ġif ( player . pok em ons . none Ġ{ Ġpokemon Ġ-> Ġ! pokemon . is Ko () Ġ}) Ġ{ čĊĠĠĠĠĠĠĠ Ġprintln ("${ trainer . name ()} Ġwon Ġthe Ġfight !") čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ/* var Ġspe e dest Pokemon Ġ: ĠPokemon Ġ= Ġtrainer Pokemon čĊĠĠĠ Ġvar Ġslow est Pokemon : ĠPokemon Ġ= Ġplayer . pok em ons [ 0 ] čĊĠĠĠ Ġif ( trainer Pokemon . get Speed () Ġ== Ġplayer . pok em ons [ 0 ]. get Speed ()) Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġrnd Ġ= ĠRandom . nextInt ( 2 ) čĊĠĠĠĠĠĠĠ Ġif ( rnd Ġ== Ġ 0 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġspe e dest Pokemon Ġ= Ġplayer . pok em ons [ 0 ] čĊĠĠĠĠĠĠĠĠĠĠĠ Ġslow est Pokemon Ġ= Ġtrainer Pokemon čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} else Ġif Ġ( trainer Pokemon . get Speed () Ġ< Ġplayer . pok em ons [ 0 ]. get Speed ()) Ġ{ čĊĠĠĠĠĠĠĠ Ġspe e dest Pokemon Ġ= Ġplayer . pok em ons [ 0 ] čĊĠĠĠĠĠĠĠ Ġslow est Pokemon Ġ= Ġtrainer Pokemon čĊĠĠĠ Ġ} čĊĠĠĠ Ġif ( spe e dest Pokemon Ġ== Ġtrainer Pokemon ) Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġrnd Attack Ġ= Ġspe e dest Pokemon . get ListOf Attack s ()[ Random . nextInt ( spe e dest Pokemon . get ListOf Attack s (). size )] čĊĠĠĠĠĠĠĠ Ġrnd Attack . on Use ( slow est Pokemon , Ġspe e dest Pokemon , Ġtrainer ) čĊĠĠĠ Ġ}*/ čĊčĊčĊĠĠĠ Ġplayer . set In Fight ( false ) č Ċ } čĊč Ċ private Ġfun Ġbattle ( trainer P ok : ĠPokemon , Ġplayer P ok Ġ: ĠPokemon , Ġtrainer : ĠTr ainer , Ġplayer : ĠPlayer ) Ġ{ čĊĠĠĠ Ġwhile Ġ(! trainer P ok . is Ko () Ġ&& Ġ! player P ok . is Ko ()) Ġ{ čĊĠĠĠĠĠĠĠ Ġvar Ġspeed iest Pokemon Ġ: ĠPokemon Ġ= Ġtrainer P ok čĊĠĠĠĠĠĠĠ Ġvar Ġslow est Pokemon : ĠPokemon Ġ= Ġplayer P ok čĊĠĠĠĠĠĠĠ Ġif ( trainer P ok . get Speed () Ġ== Ġplayer P ok . get Speed ()) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( Math . random (). round ToInt () Ġ== Ġ 0 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspeed iest Pokemon Ġ= Ġplayer P ok čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġslow est Pokemon Ġ= Ġtrainer P ok čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} else Ġif Ġ( trainer P ok . get Speed () Ġ< Ġplayer P ok . get Speed ()) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġspeed iest Pokemon Ġ= Ġplayer P ok čĊĠĠĠĠĠĠĠĠĠĠĠ Ġslow est Pokemon Ġ= Ġtrainer P ok čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġprintln (" Choose Ġan Ġattack ") čĊĠĠĠĠĠĠĠ Ġvar Ġselected Attack Ġ: ĠAtt acks ? Ġ= Ġnull čĊĠĠĠĠĠĠĠ Ġwhile Ġ( selected Attack Ġ== Ġnull ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselected Attack AsString Ġ= Ġread Line () !!. uppercase () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Attack Ġ= ĠAtt acks . valueOf ( selected Attack AsString ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} catch ( e : ĠIllegalArgumentException ){ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Please Ġchoose Ġa Ġvalid Ġattack ") čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġif ( speed iest Pokemon Ġ== Ġtrainer P ok ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrnd Attack Ġ= Ġrnd Attack ( speed iest Pokemon ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġslow est Pokemon . damage ( speed iest Pokemon , Ġrnd Attack , Ġtrainer ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("${ speed iest Pokemon . getName ()} Ġuse Ġ${ rnd Attack . attack Name } Ġon Ġ${ speed iest Pokemon . getName () }") čĊĠĠĠĠĠĠĠĠĠĠĠ Ġspeed iest Pokemon . damage ( slow est Pokemon , Ġselected Attack , Ġplayer ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("${ slow est Pokemon . getName ()} Ġuse Ġ${ selected Attack . attack Name } Ġon Ġ${ speed iest Pokemon . getName () }") čĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġslow est Pokemon . damage ( speed iest Pokemon , Ġselected Attack , Ġplayer ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("${ speed iest Pokemon . getName ()} Ġuse Ġ${ selected Attack . attack Name } Ġon Ġ${ slow est Pokemon . getName () }") čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrnd Attack s Ġ= Ġrnd Attack ( speed iest Pokemon ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġspeed iest Pokemon . damage ( slow est Pokemon , Ġrnd Attack s , Ġtrainer ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("${ slow est Pokemon . getName ()} Ġuse Ġ${ rnd Attack s . attack Name } Ġon Ġ${ speed iest Pokemon . getName () }") čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} č Ċ } čĊč Ċ private Ġfun Ġrnd Attack ( pokemon : ĠPokemon ): ĠAtt acks Ġ{ čĊĠĠĠ Ġreturn Ġpokemon . get ListOf Attack s ()[ Random . nextInt ( pokemon . get ListOf Attack s (). size )] č Ċ }