QCc@sddkZddkTddkTdefdYZdd"dYZdefdYZd d#d YZd efd YZd Zdd$dYZ dd%dYZ de fdYZ de fdYZ defdYZ dd&dYZdefdYZdZdZdZdd Ze iZe iZe iZe iZe iZe iZe iZe iZeZeZe d!joeZ!e!i"ndS('iN(t*tWorldcBskeZdZdZdZdZdZdZdZdZ dZ d Z d Z RS( cCs8ti|t|_g|_t|tt|_dS(N( tGuit__init__tTruetexiststanimalst Interpretert top_globalst top_localstinter(tself((s+/home/downey/public_html/cm05/code/World.pyR s   cCst|_ti|dS(N(tFalseRRtquit(R ((s+/home/downey/public_html/cm05/code/World.pyR s cCs|ii|dS(N(Rtappend(R tanimal((s+/home/downey/public_html/cm05/code/World.pytregisterscCs|ii|dS(N(Rtremove(R R((s+/home/downey/public_html/cm05/code/World.pyt unregisterscCs;x|iD]}|iq Wg|_|iiddS(Ntall(Rtundrawtcanvastdelete(R R((s+/home/downey/public_html/cm05/code/World.pytclears   cCs"x|iD]}|iq WdS(N(Rtstep(R R((s+/home/downey/public_html/cm05/code/World.pyR s cCsMd|_x=|io2|io(|i|iti|iq WdS(Ni(trunningRRtupdatettimetsleeptdelay(R ((s+/home/downey/public_html/cm05/code/World.pytrun$s    cCs d|_dS(Ni(R(R ((s+/home/downey/public_html/cm05/code/World.pytstop+scCst||idS(N(tmapR(R tcallable((s+/home/downey/public_html/cm05/code/World.pyt map_animals.scCs,|iidt}|ii|ddS(Ng?s(tte_codetgettENDR trun_code(R tsource((s+/home/downey/public_html/cm05/code/World.pytrun_text1scCs>|ii}t|}|i}|ii||dS(N(ten_fileR$tfiletreadR R&(R tfilenametfpR'((s+/home/downey/public_html/cm05/code/World.pytrun_file5s  ( t__name__t __module__RR RRRRRRR"R(R.(((s+/home/downey/public_html/cm05/code/World.pyRs          RcBs/eZeedZdZdZRS(cCs,||_||_||_||ids   cGst|i|dS(N(tThreadR&(R targs((s+/home/downey/public_html/cm05/code/World.pytrun_code_threadDscBsJe||d}y||i|iUWnej o|iinXdS(Ntexec(tcompileR2R3tKeyboardInterruptR1R (R R'R,tcode((s+/home/downey/public_html/cm05/code/World.pyR&Gs (R/R0R2R3RR6R&(((s+/home/downey/public_html/cm05/code/World.pyR<s t TurtleWorldcBs,eZdZdZdZdZRS(cCs$ti|d|_|idS(Ng?(RRRtsetup(R ((s+/home/downey/public_html/cm05/code/World.pyRRs  c Csd|_d|_|it|id|id|idd|_|i|itdtdd|i|itd d d |i |itd d d |ii |itd d d |i |i|idt |itd dd |i |itd ddddt dd|_|i|itd dd |i|itdddd|_|iitd|iitddS(Nitwidththeighttbgtwhitetfilltexpandittexts Make Turtletcommands Print canvastQuitsRun filesturtle_code.pyis run this codei i(sworld.clear() sbob = Turtle(world) (tca_widtht ca_heighttfrtLEFTtcaRtendfrtBOTHtbut make_turtletdumpR tXR.tenR)tBOTTOMR(tteR#tinsertR%(R ((s+/home/downey/public_html/cm05/code/World.pyR<Ws*        cCs|i|itddd|i|itddd|i|itddd|i|itddd|i|idS(NRCtRunRDtStoptSteptClear(RHRMRIRRRRRK(R ((s+/home/downey/public_html/cm05/code/World.pyt setup_runws  cCst|}t|}dS(N(tTurtlet TurtleControl(R tturtletcontrol((s+/home/downey/public_html/cm05/code/World.pyRNs (R/R0RR<RYRN(((s+/home/downey/public_html/cm05/code/World.pyR;Ps  R[cBs5eZdZdZdZdZdZRS(cCs||_|idS(N(R\R<(R R\((s+/home/downey/public_html/cm05/code/World.pyRs c Cs|ii}|idddt|idd|idtdd|itdd d |i|i tdtddd d dd |_ |itddd |ii |itddd |ii |i |idtdd|itddd |ii|itddd |iid}|id|ddtdt|_|iiddx3|D]+}|i|i|d t|i|qoW|i |i dS(NtbditreliefRCsTurtle ControlRARBis fd RDR=it10tlttrttputpdtredtorangetyellowtgreentbluetvioletitpady(sredRfRgRhsblueRj(R\R1RHtSUNKENtlaRPRMRItfdRQten_rRaRbRKRcRdtmbtpacktmitCallabletcolor(R twtcolorsRt((s+/home/downey/public_html/cm05/code/World.pyR<s( * %) cCs'|iid||ii|dS(NRC(RptconfigR\t set_color(R Rt((s+/home/downey/public_html/cm05/code/World.pyRtscCs)t|ii}|ii|dS(N(tintRoR$R\Rn(R tr((s+/home/downey/public_html/cm05/code/World.pyRnscCs)t|ii}|ii|dS(N(Ryten_thetaR$R\tturn(R ttheta((s+/home/downey/public_html/cm05/code/World.pyR|s(R/R0RR<RtRnR|(((s+/home/downey/public_html/cm05/code/World.pyR[s     t TurmiteWorldcBsYeZdZdZdZdZdZdZdZdZ dZ RS( cCsRti|d|_d|_d|_d|_h|_|i|idS(Ngii( RRRRFRGtcsizetcellsR<tmainloop(R ((s+/home/downey/public_html/cm05/code/World.pyRs       cCs |it|id|id|idd|_|iittdd|i |itdt dd |i|i td d d |i |i td d d |i |i |i|i td dd |i|i td dd |i|i td dd |i|i td dd |i|i |i td dd |i|itdddd|_|iitd|iitd|iitd|iitd|iitd|iitdddg}ddg}dS(NR=R>R?R@iiRARBiRCs Make TurmiteRDRERURVRWRXs run this codeii(st1 = Turmite(world) st2 = Turmite(world) st3 = Turmite(world) st2.lt() st3.rt() s world.run() i(RHRIRJRFRGRt add_transformtSwirlTransformtpiRKRLRMt make_turmiteR RRRRRRR(RSR#RTR%(R tlowthigh((s+/home/downey/public_html/cm05/code/World.pyR<s4        cCsXx|iD]}|iq Wx!|iiD]}|iq.Wg|_h|_dS(N(RRRtvalues(R Rtcell((s+/home/downey/public_html/cm05/code/World.pyRs  cCsd|_ti|dS(Ni(RRR (R ((s+/home/downey/public_html/cm05/code/World.pyR s cCs(|iiddg|i|iggS(Ni(ttranst invert_listRFRG(R ((s+/home/downey/public_html/cm05/code/World.pyt get_boundssc Cs||g}|d|g}|d|dg}||dg}g}||||gD])}||d|i|d|igqW~} | S(Nii(R( R txtytp1tp2tp3tp4t_[1]tptbounds((s+/home/downey/public_html/cm05/code/World.pyt cell_boundss  IcCs|\}}xut|d|dD]\}g}xMt|d|dD]4}|i||}t|||i||fR?R@t transformsitt.ii itdashi(ii (ii (RRRFRGRRtthreadRHRIRJRtCanvasTransformRRKRR RR( R RRtxmintxmaxtymintymaxRR((s+/home/downey/public_html/cm05/code/World.pyRs(         6c Cs&|itdtdd|it|itddd|i|itddd|i|itddd|i|i|idt dd|i tdd |i td d dt dddd |_ |i tdd |i|i d|_|i d|_|idS(NRARBiRCRURDRVREsend timeR=iR`tsecondssx(t) = sy(t) = (RHRIRLtTOPRMt run_threadRR RKRPRmRQten_endtentryten_xoftten_yoft(R ((s+/home/downey/public_html/cm05/code/World.pyt control_panels  * c Cs^|idtdd|itd||itdddtdddd}|i|S(NRARBiRCR=is t(RHRPRmRIRQRK(R tlabelR((s+/home/downey/public_html/cm05/code/World.pyRs ' cCsX|iod|_|iin|ii}t|}t|i||_dS(Ni(RRtjoinRR$RyR4R(R tend((s+/home/downey/public_html/cm05/code/World.pyRs    i cCsd|_ti}d}x|io|io||jouxQ|iD]F}|i|}|i|}d|||fGH|i||qIWtidti|}qWdS(Niist = %.1f x = %.1f y = %.1fg?(RRRRtxofttyoftRR(R Rt start_timetttamoebaRR((s+/home/downey/public_html/cm05/code/World.pyR(s  $  cCst|iiS(N(tevalRR$(R R((s+/home/downey/public_html/cm05/code/World.pyR5scCst|iiS(N(RRR$(R R((s+/home/downey/public_html/cm05/code/World.pyR8s( R/R0RRRRRRR(((s+/home/downey/public_html/cm05/code/World.pyRs    tAmoebacBsVeZdddZdZdZdZdZdZdZ dZ RS( cCs[||_|p|i|_|p|i|_d|_d|_d|_|i|dS(Ng?Rjs medium orchid(R1RRtsizetcolor1tcolor2R(R R1RR((s+/home/downey/public_html/cm05/code/World.pyR>s    cCs|S(N((R R((s+/home/downey/public_html/cm05/code/World.pyRGscCs|S(N((R R((s+/home/downey/public_html/cm05/code/World.pyRJscCs4y|iii|iWntj onXdS(N(R1RRRR(R ((s+/home/downey/public_html/cm05/code/World.pyRMscCs|i|i||dS(N(RR(R RR((s+/home/downey/public_html/cm05/code/World.pyRSs cCstddd}dt||_d}|i||||i}|iii|d|d||iii|d|id|i d|i|i||||id }|iii|d|i d|id|idS( NiihisAmoeba%dtlavenderRARRi( RRRt poly_coordsRR1RRRR(R RRtthetastslimetcoords((s+/home/downey/public_html/cm05/code/World.pyRWsc Cswg}|D]}||tid|q ~}g}t||D]%\} }||i||| |qE~} | S(Ni(trandomtuniformtzipR( R RRRRRR}trst_[2]RzR((s+/home/downey/public_html/cm05/code/World.pyRes1BcCs@|td}t|}t|}||||||gS(Ni(RRR(R RRRzR}RRR((s+/home/downey/public_html/cm05/code/World.pyRjs  N( R/R0RRRRRRRRR(((s+/home/downey/public_html/cm05/code/World.pyR<s      t GuiAmoebacBseZdZdZRS(cCs|ii|S(N(R1R(R R((s+/home/downey/public_html/cm05/code/World.pyRsscCs|ii|S(N(R1R(R R((s+/home/downey/public_html/cm05/code/World.pyRvs(R/R0RR(((s+/home/downey/public_html/cm05/code/World.pyRqs cCs2g}t||D]\}}|||q~S(N(R(RRRRR((s+/home/downey/public_html/cm05/code/World.pytvadd}scCs#g}|D]}|||q ~S(N((RRRR((s+/home/downey/public_html/cm05/code/World.pytvscalescCstt||dS(Ng?(RR(RR((s+/home/downey/public_html/cm05/code/World.pyRsicCs |t|;}|||| S(N(tlen(tvtn((s+/home/downey/public_html/cm05/code/World.pyRst__main__((((((#RtmathRRRR;R[R~RRRRZRRRRRRRRRnRRaRbRcRdRRxR2RR3R R/R1R(((s+/home/downey/public_html/cm05/code/World.pyss@   440` "$GCU5