package Ġfr act al Ċ Ċ import Ġjava . awt .* Ċ import Ġjava . awt . event . ActionEvent Ċ import Ġjava . awt . event . ActionListener Ċ import Ġjava . awt . image . Buffered Image Ċ import Ġjavax . swing . J Frame Ċ import Ġjavax . swing . JPanel Ċ import Ġjavax . swing . Timer Ċ import Ġjavax . swing . Window Constants Ċ Ċ /* Ċ Ġ* ĠCreated Ġwith Ġpass ion Ġand Ġlove ĠĊ Ġ* ĠĠĠ Ġfor Ġproject ĠNumber ph ile Fr act al Ċ Ġ* ĠĠĠĠĠĠĠ Ġby ĠJ atz uk Ġon Ġ 1 2 - Feb - 1 9 Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ____ _* Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*_ ***** _* Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* _( O ) _( O )_ * Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ** ____ V ____ ** Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ** ________ _** Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ** ________ _** Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ________ _* Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*** ___ *** Ċ Ġ*/ Ċ Ċ class ĠCanvas Ġ: ĠJPanel (), ĠActionListener Ġ{ ĊĠĠĠ Ġprivate Ġval Ġbuffered Image Ġ= ĠBufferedImage ( WIDTH , ĠHEIGHT , ĠBufferedImage . TYPE _ INT _ RGB ) ĊĠĠĠ Ġprivate Ġval Ġprevious Ġ= ĠPoint () ĊĠĠĠ Ġprivate Ġval Ġtrace point Ġ= ĠPoint () ĊĠĠĠ Ġprivate Ġval Ġtimer Ġ= ĠTimer ( DELAY , Ġthis ) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġbackground Ġ= ĠColor . BLACK ĊĠĠĠĠĠĠĠ Ġis Focus able Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġpreferred Size Ġ= ĠDimension ( 8 0 0 , Ġ 7 0 0 ) ĊĠĠĠĠĠĠĠ Ġcreate Vertex es () ĊĠĠĠĠĠĠĠ Ġtimer . start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Vertex es () Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( buffered Image . graphics Ġas ĠGraphics 2 D ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfill O val ( A . x , ĠA . y , ĠTH ICK NESS , ĠTH ICK NESS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfill O val ( B . x , ĠB . y , ĠTH ICK NESS , ĠTH ICK NESS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfill O val ( C . x , ĠC . y , ĠTH ICK NESS , ĠTH ICK NESS ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw String (" A ", ĠA . x Ġ- Ġ( TH ICK NESS Ġ* Ġ 5 ), ĠA . y Ġ+ ĠTH ICK NESS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw String (" B ", ĠB . x , ĠB . y Ġ- Ġ 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw String (" C ", ĠC . x Ġ- ĠTH ICK NESS , ĠC . y Ġ- Ġ 1 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġnext Direction () Ġ= Ġwhen Ġ(( Math . random () Ġ* Ġ 3 ). toInt ()) Ġ{ ĊĠĠĠĠĠĠĠĠ 0 Ġ-> ĠDirection . A ĊĠĠĠĠĠĠĠĠ 1 Ġ-> ĠDirection . B ĊĠĠĠĠĠĠĠĠ 2 Ġ-> ĠDirection . C ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpaint ( g : ĠGraphics ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . paint ( g ) ĊĠĠĠĠĠĠĠ Ġg . drawImage ( buffered Image , Ġ 0 , Ġ 0 , Ġthis ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" NAME _ SH ADO WING ") ĊĠĠĠ Ġoverride Ġfun Ġpaint Component ( g : ĠGraphics ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . paint Component ( g ) ĊĠĠĠĠĠĠĠ Ġval Ġg Ġ= Ġbuffered Image . graphics Ġas ĠGraphics 2 D ĊĠĠĠĠĠĠĠ Ġg . set Rendering Hint ( Rendering Hints . KEY _ ANTI ALIAS ING , ĠRendering Hints . VALUE _ ANTI ALIAS _ ON ) ĊĠĠĠĠĠĠĠ Ġg . color Ġ= ĠColor . GREEN ĊĠĠĠĠĠĠĠ Ġwith ( next Direction ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrace point . x Ġ= Ġ( point . x Ġ- Ġprevious . x ) Ġ/ Ġ 2 Ġ+ Ġprevious . x ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrace point . y Ġ= Ġ( point . y Ġ- Ġprevious . y ) Ġ/ Ġ 2 Ġ+ Ġprevious . y ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġg . fill O val ( trace point . x , Ġtrace point . y , ĠTH ICK NESS , ĠTH ICK NESS ) ĊĠĠĠĠĠĠĠ Ġprevious . x Ġ= Ġtrace point . x ĊĠĠĠĠĠĠĠ Ġprevious . y Ġ= Ġtrace point . y ĊĠĠĠĠĠĠĠ Ġiterations -- ĊĠĠĠĠĠĠĠ Ġ( parent . parent . parent Ġas ĠJ Frame ). title Ġ= Ġ"$ TITLE Ġ${ ITER ATIONS Ġ- Ġiterations }" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠactionPerformed ( e : ĠAction Event ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġrep aint () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġenum Ġclass ĠDirection ( val Ġpoint : ĠPoint ) Ġ{ ĠA ( Canvas . A ), ĠB ( Canvas . B ), ĠC ( Canvas . C ); Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTITLE Ġ= Ġ" Number ph ile Ġfr act al Ġproblem , Ġiteration : Ġ" ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠWIDTH Ġ= Ġ 8 0 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠHEIGHT Ġ= Ġ 7 0 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTH ICK NESS Ġ= Ġ 5 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDEL AY Ġ= Ġ 1 0 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠI TER ATIONS Ġ= Ġ 1 0 _ 0 0 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠA Ġ= ĠPoint ( WIDTH Ġ/ Ġ 2 , ĠTH ICK NESS ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠB Ġ= ĠPoint ( 0 , ĠHEIGHT Ġ- ĠTH ICK NESS ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠC Ġ= ĠPoint ( WIDTH Ġ- ĠTH ICK NESS , ĠHEIGHT Ġ- ĠTH ICK NESS ) ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġiterations Ġ= ĠI TER ATIONS ĊĠĠĠ Ġ} Ċ } Ċ Ċ object ĠFrame Ġ: ĠJ Frame () Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġcontent Pane Ġ= ĠCanvas () ĊĠĠĠĠĠĠĠ Ġpack () ĊĠĠĠĠĠĠĠ Ġis Resizable Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġset Location Relative To ( null ) ĊĠĠĠĠĠĠĠ Ġdefault Close Operation Ġ= ĠWindow Constants . EXIT _ ON _ CLOSE ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġmain () Ġ{ ĊĠĠĠ ĠEvent Queue . invoke Later Ġ{ ĠFrame . isVisible Ġ= Ġtrue Ġ} Ċ } Ċ