/** Ċ Ġ* ĠCopyright Ġ 2 0 1 7 ĠS av vas ĠD alk its is Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ* Ċ Ġ* Ġ' Game ĠFrame ' Ġis Ġa Ġregistered Ġtrade mark Ġof ĠLED SEQ Ċ Ġ*/ Ċ package Ġcom . sav vas d alk its is . game frame . feature . workspace . element . tools . model Ċ Ċ import Ġcom . sav vas d alk its is . game frame . feature . workspace . element . grid . model . Color Grid Ċ import Ġcom . sav vas d alk its is . game frame . feature . workspace . element . grid . model . Grid Ċ Ċ /** Ċ Ġ* ĠModified Ġfrom Ġhttp :// stackoverflow . com / questions / 1 5 4 7 4 1 2 2 / is - there - a - mid point - ellipse - algorithm Ċ Ġ*/ Ċ open Ġclass ĠO val Tool Ġ: ĠScr atch Tool () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġdraw On Scratch ( scratch : ĠGrid , Ġstart Column : ĠInt , Ġstart Row : ĠInt , Ġcolumn : ĠInt , Ġrow : ĠInt , Ġcolor : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrx Ġ= ĠMath . abs ( start Column Ġ- Ġcolumn ) Ġ/ Ġ 2 f ĊĠĠĠĠĠĠĠ Ġval Ġry Ġ= ĠMath . abs ( start Row Ġ- Ġrow ) Ġ/ Ġ 2 f ĊĠĠĠĠĠĠĠ Ġval Ġcx Ġ= ĠMath . min ( start Column , Ġcolumn ) Ġ+ Ġrx ĊĠĠĠĠĠĠĠ Ġval Ġcy Ġ= ĠMath . min ( start Row , Ġrow ) Ġ+ Ġry ĊĊĠĠĠĠĠĠĠ Ġval Ġa 2 Ġ= Ġrx Ġ* Ġrx ĊĠĠĠĠĠĠĠ Ġval Ġb 2 Ġ= Ġry Ġ* Ġry ĊĠĠĠĠĠĠĠ Ġval Ġtwo A 2 Ġ= Ġ 2 Ġ* Ġa 2 ĊĠĠĠĠĠĠĠ Ġval Ġtwo B 2 Ġ= Ġ 2 Ġ* Ġb 2 ĊĠĠĠĠĠĠĠ Ġvar Ġp : ĠFloat ĊĠĠĠĠĠĠĠ Ġvar Ġx Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġvar Ġy Ġ= Ġry ĊĠĠĠĠĠĠĠ Ġvar Ġpx Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġvar Ġpy Ġ= Ġtwo A 2 Ġ* Ġy ĊĊĠĠĠĠĠĠĠ Ġplot ( cx , Ġcy , Ġx , Ġy , Ġscratch , Ġcolor ) ĊĊĠĠĠĠĠĠĠ Ġp Ġ= ĠMath . round ( b 2 Ġ- Ġa 2 Ġ* Ġry Ġ+ Ġ 0 . 2 5 Ġ* Ġa 2 ). toFloat () ĊĠĠĠĠĠĠĠ Ġwhile Ġ( px Ġ< Ġpy ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpx Ġ+= Ġtwo B 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( p Ġ< Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp Ġ+= Ġb 2 Ġ+ Ġpx ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy -- ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpy Ġ-= Ġtwo A 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp Ġ+= Ġb 2 Ġ+ Ġpx Ġ- Ġpy ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplot ( cx , Ġcy , Ġx , Ġy , Ġscratch , Ġcolor ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġp Ġ= ĠMath . round ( b 2 . toDouble () Ġ* Ġ( x Ġ+ Ġ 0 . 5 ) Ġ* Ġ( x Ġ+ Ġ 0 . 5 ) Ġ+ Ġa 2 Ġ* Ġ( y Ġ- Ġ 1 ) Ġ* Ġ( y Ġ- Ġ 1 ) Ġ- Ġa 2 Ġ* Ġb 2 ). toFloat () ĊĠĠĠĠĠĠĠ Ġwhile Ġ( y Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy -- ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpy Ġ-= Ġtwo A 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( p Ġ> Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp Ġ+= Ġa 2 Ġ- Ġpy ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpx Ġ+= Ġtwo B 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp Ġ+= Ġa 2 Ġ- Ġpy Ġ+ Ġpx ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplot ( cx , Ġcy , Ġx , Ġy , Ġscratch , Ġcolor ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġplot ( xc : ĠFloat , Ġy c : ĠFloat , Ġx : ĠFloat , Ġy : ĠFloat , Ġscratch : ĠGrid , Ġcolor : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdraw ( xc Ġ+ Ġx , Ġy c Ġ+ Ġy , Ġscratch , Ġcolor ) ĊĠĠĠĠĠĠĠ Ġdraw ( xc Ġ- Ġx , Ġy c Ġ+ Ġy , Ġscratch , Ġcolor ) ĊĠĠĠĠĠĠĠ Ġdraw ( xc Ġ+ Ġx , Ġy c Ġ- Ġy , Ġscratch , Ġcolor ) ĊĠĠĠĠĠĠĠ Ġdraw ( xc Ġ- Ġx , Ġy c Ġ- Ġy , Ġscratch , Ġcolor ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdraw ( x : ĠFloat , Ġy : ĠFloat , Ġscratch : ĠGrid , Ġcolor : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġc Ġ= Ġx . toInt () ĊĠĠĠĠĠĠĠ Ġval Ġr Ġ= Ġy . toInt () ĊĠĠĠĠĠĠĠ Ġif Ġ(! Color Grid . is OutOfBounds ( c , Ġr )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscratch . setColor ( color , Ġc , Ġr ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ