;ò ;Bc@sïdZdkZdkZdkZdkZdkTdklZdkl Z l Z l Z l Z dk lZlZdfd„ƒYZdfd „ƒYZd fd „ƒYZd fd „ƒYZdefd„ƒYZdeefd„ƒYZdS(iN(s*(sDATADIR(s load_images load_sounds font2surfsMyError(sCPinitsCPSpritesImgcBstZRS(N(s__name__s __module__(((s./lib/numbers.pysImg!ssSndcBstZRS(N(s__name__s __module__(((s./lib/numbers.pysSnd#ssBallooncBstZd„Zd„ZRS(NcCsV||_||_||_ti|_|iiƒ|_|ii |ƒ||_ dS(N( spayloadsselfsendsstartsImgsballoonsimagesget_rectsrectsmove_ipsup(sselfspayloadsstartsendsup((s./lib/numbers.pys__init__'s    cCs‚|iid|idjoF|ii|_|ii|iƒ|ii|_ti i ƒdSn|iid|i ƒdSdS(Nii( sselfsrectstopleftsendspayloadsmove_ipssurfacesimagesSndsboomsplaysup(sself((s./lib/numbers.pysupdate0s (s__name__s __module__s__init__supdate(((s./lib/numbers.pysBalloon&s sPayloadcBstZd„ZRS(NcCs4t||||ƒ\|_}|iiƒ|_ dS(N( s font2surfswordssizesfcolsttfsselfssurfacesspamsget_rectsrect(sselfswordssizesfcolsttfsspam((s./lib/numbers.pys__init__=s(s__name__s __module__s__init__(((s./lib/numbers.pysPayload<ssTokencBstZd„Zd„ZRS(NcCs‘ti|ƒ||_||_hdd<dd<dd<dd<||_|iiƒ|_|ii|ƒt i ddddƒ|_ dS( Nsxs*s/s+s-ii iô( sCPSprites__init__sselfsstartsimagesopersget_rectsrectsmove_ipspygamesRects playfield(sselfsimagesopersstart((s./lib/numbers.pys__init__Bs   1cCsPtiiƒ}|ii|ddfƒo|\|i_|i_ ndSdS(Nii( spygamesmousesget_posspossselfs playfieldscontainssrectscenterxscentery(sselfspos((s./lib/numbers.pysupdateKs(s__name__s __module__s__init__supdate(((s./lib/numbers.pysTokenAs sGamecBs•tZdZd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z d „Z d „Z d „Zd „Zd„Zd„ZRS(sZ Numbers.py - part of childsplay.py, a suite of educational games for young children. cCsY|t_|t_ttitiƒ|iƒt_||_ti i ƒ|_ ti i |_||_||_t|_tddƒ|_tdƒ|_d|_d|_tii|iddƒ}t|dƒt_tii|iddƒ}t|ƒt _!tiit"dƒ}t|ƒt _#tiit"dƒ}t|ƒt _$|i%ƒdS( Niiis NumbersDatas balloon.pngsshot.wavs wahoo.wavs bummer.wav(&sscreensImgsbackgrsCPinitsconvertsbackorgsrcdicsselfspygamestimesClocksclockseventsgetseventgetsbasepathsbasedirslibdirsNonesttfsranges gamelevelss gameitemssscoresstopsosspathsjoinsfiles load_imagesballoons load_soundsSndsboomsDATADIRswahoosbummers_setup(sselfsscreensbackgrsrcdicsbasepathslibdirsfile((s./lib/numbers.pys__init__Xs.        cCsåd}g|_h|_d|_xªddddgD]–}d}dd d f}t||||i ƒ\}}t |||d fƒ}||it|iƒ<|d7}|iitii|i|iƒƒq4Wtii|iƒdS( Ni,is+sxs-s/idiôi ii (soffsetsselfs tokensrectss tokensdicstoken_activatesitemssizesfcols font2surfsttfsimsspamsTokensobjstuplesrectsappendsImgsscreensblitsimagespygamesdisplaysupdate(sselfsobjsspamsitemsimsoffsetsfcolssize((s./lib/numbers.pys_setupss    )cCsttt|ƒƒSdS(N(stuplesmapsstrsseq(sselfsseq((s./lib/numbers.pys_make_tuple_str†scCsttt|ƒƒSdS(N(slistsmapsstrsseq(sselfsseq((s./lib/numbers.pys_make_list_str‰scCskti}|td|dƒƒ}|td|dƒƒ}||}|i |d|d|fƒ}|SdS(Nis+s=( srandomschoicesrandsrangesisasbscsselfs_make_list_strsanswer(sselfsisasrandscsbsanswer((s./lib/numbers.pys_addŒs   cCskti}|td|dƒƒ}|t||dƒƒ}||}|i |d|d|fƒ}|SdS(Nis-s=( srandomschoicesrandsrangesisbsascsselfs_make_list_strsanswer(sselfsisasrandscsbsanswer((s./lib/numbers.pys_min”s   cCskti}|td|dƒƒ}|td|dƒƒ}||}|i |d|d|fƒ}|SdS(Nisxs=( srandomschoicesrandsrangesisasbscsselfs_make_list_strsanswer(sselfsisasrandscsbsanswer((s./lib/numbers.pys_mulœs   cCs_|i|ƒ}t|dƒ}t|dƒ}||}|i|d|d|fƒ}|SdS(Niiÿÿÿÿs/s=( sselfs_mulsisssintsasbscs_make_list_strsanswer(sselfsisascsbsssanswer((s./lib/numbers.pys_div¤s  c Csµg|_g|_tiitiddfddddfƒ|iƒtt i |i |i |i |ifƒ|dfƒ|_d}x'|iD]}|dddd fjo||_d }nd d d f} t|d| |iƒ} |d joc| i}|i|dƒ|_ti|dƒ}|itiddfƒ|t_| i t_!nt i t"ddƒƒ}t$| |df|df|ƒ}|d}|ii&|ƒq‘WdS(s When the balloons pop get a operator with the left button. Put it at the questionmark and hit the left button again. That's all for now.ii iôii(s+s-sxs/s?iâi²iidiÈiþÿÿÿiúÿÿÿiÿÿÿÿN('sselfs dirty_rectss objs_to_movesImgsbackgrsblitsbackorgs_setupsapplysrandomschoices_adds_mins_divs_mulslssomsoffsetsisoperatorsfcolsPayloadsttfspayloadsrectsrsmoveshitzonespygamesSurfacessshitzone_backgrssurfacesquestionsrangesupsBalloonsbalsappend( sselfslsspamsisupsssrsoffsetsbalsfcolspayload((s./lib/numbers.pysstart¬s2  + :      ! cCsštitiiƒddfƒ}xm|iD]b}|i|ƒoLt i i t i ddddfƒ|i i|it|ƒƒd|_q,q,WdSdS(Niii iôi(spygamesRectsmousesget_posspossselfs tokensrectssrecscontainssImgsbackgrsblitsscreens objs_to_movesappends tokensdicstuplestoken_activate(sselfspossrec((s./lib/numbers.pys_select_activateÐs" "cCsdSdS(sxMust return the original, not translated, title of this game. It's needed by the high score class of childsplay.sNumbersN((sself((s./lib/numbers.pys__str__ÚscCsdSdS(NsNumbers((sself((s./lib/numbers.pys helptitleàsc CsVtdƒtdƒtdƒdtdƒdtdƒdtdƒtdƒg }|SdS( NsThe aim of the game:sDTry to find the arithmetic operator in simple mathematics exercises.sFor example: 2 ? 2 = 4 --> +s sDifficulty : 6-7 years.sNumber of levels : 3sEThe exercises can be somewhat difficult, but the aim is to understands2the relation between the numbers not the solution.(s_stxt(sselfstxt((s./lib/numbers.pyshelpãsN cCsd|_xt|D]l}|itjo |igjo|iƒq|itjoti i ƒddjo|i ƒqqWg}x‹|iD]€}|iitiiti|i|iƒƒ|iƒ}|iitii|i|iƒƒ|djo|i|ƒqqWtii|iƒ|o%x"|D]}|ii|ƒq5Wn|igjo d|_ng|_|i|ifSdS(Nii(sselfsscoreseventsseventstypesMOUSEBUTTONDOWNs objs_to_moves_select_activatespygamesmouses get_presseds_select_droppeds obj_removesobjs dirty_rectssappendsImgsscreensblitsbackgrsrectsupdatesflagsimagesdisplaysitemsremovesstop(sselfseventssevents obj_removesitemsflagsobj((s./lib/numbers.pysloopñs0  * + %   cCs|i odSntitiiƒddfƒ}|ii|ƒo3|i i ƒ}d|i d|i |i df}t|ƒ}t|ƒt|i dƒjo…tiiti|i|iƒ}tii|i|iƒ}tii||fƒd|_tiiƒd|_ti i!dƒq{tiiti"|iƒ}tii|ƒti#iƒd|_|i$ƒndS( Nis%s%s%siiiÿÿÿÿiiÐiûÿÿÿ(%sselfstoken_activatespygamesRectsmousesget_possposshitzonescontainss objs_to_movespopsobjssomsopersanswersevalsintsImgsscreensblitsbackorgsrsimagesrectsrrsdisplaysupdatesstopsSndswahoosplaysscorestimeswaitsquestionsbummers remove_sprite(sselfsobjsrrspossrsanswer((s./lib/numbers.pys_select_dropped s( "$  !     (s__name__s __module__s__doc__s__init__s_setups_make_tuple_strs_make_list_strs_adds_mins_muls_divsstarts_select_activates__str__s helptitleshelpsloops_select_dropped(((s./lib/numbers.pysGameSs          $    (sRCFILEsosssyssrandomspygamespygame.constantss CPConstantssDATADIRsutilss load_images load_sounds font2surfsMyErrors SpriteUtilssCPinitsCPSpritesImgsSndsBalloonsPayloadsTokensGame(s load_imagesCPinitsSndsMyErrorsImgsGamesBalloonsrandoms font2surfsCPSpritesPayloadssyssDATADIRsTokenspygames load_soundsossRCFILE((s./lib/numbers.pys?s