;ò ;Bc@s÷dZdZdkZdkZdkZdkZdkTdklZl Z l Z l Z dk l Z lZlZdkZdfd„ƒYZdfd„ƒYZd fd „ƒYZd e fd „ƒYZd fd„ƒYZdeefd„ƒYZdS(iN(s*(s load_images trace_errors char2surfsMyError(sCPSpritesCPGroupsCPinitsImgcBstZRS(N(s__name__s __module__(((s./lib/fallingletters.pysImg$ssSndcBstZRS(N(s__name__s __module__(((s./lib/fallingletters.pysSnd&ssMisccBstZRS(N(s__name__s __module__(((s./lib/fallingletters.pysMisc(ssLettercBs,tZd„Zd„Zd„Zd„ZRS(Nc Csžti|ƒ||_||_|df}||_ ||_ |ii ƒ|_ |d|i ƒf}d}|i|||d|ƒ|i|idtƒdS(Niiôs event_type(sCPSprites__init__sselfspicsimagescslettersxsstartsdelayswaitsget_rectsrects get_heightsendsloops set_movementsstepsconnect_callbackscallbacksKEYDOWN( sselfscspicsxsstepsdelaysendsstartsloop((s./lib/fallingletters.pys__init__,s      cCs |iSdS(N(sselfsletter(sself((s./lib/fallingletters.pys__str__9scGsX|io|id8_dSn4|i|_|iƒ}|djo|iƒndS(s&This is called by group.refresh methodiNiÿÿÿÿ(sselfswaitsdelaysmoveitsstatuss remove_sprite(sselfsargssstatus((s./lib/fallingletters.pys on_update<s    cGs~totGdG|dG|dGHny|diiƒ}Wntj o dSnX|t|ƒjo|i ƒdSndS(s This is called when the sprite class update method is called. Remember that you must 'connect' a callback first with a call to self.connect_callback, see the CPSprite reference for info on possibilities of connecting callbacks . sargs>iiNi( sDEBUGs__name__sargssunicodesupperscs ValueErrorsstrsselfs remove_sprite(sselfsargssc((s./lib/fallingletters.pyscallbackHs  (s__name__s __module__s__init__s__str__s on_updatescallback(((s./lib/fallingletters.pysLetter+s  sLevelcBstZd„ZRS(NcCs(d|_d|_d|_t|_dS(s5All these attributes will get their value at run timeiN(sselfs timersleepsdelaysstepsNones background(sself((s./lib/fallingletters.pys__init__Xs    (s__name__s __module__s__init__(((s./lib/fallingletters.pysLevelWssGamecBs_tZdZd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z RS( s^ Falling letters - part of childsplay.py, a suite of educational games for young children. c Cs|||_t_||_t_g}xÍdddfD]¼}tƒ}hdd<dd<dd<||_hdd<dd<dd<||_ hdd<dd<dd<||_ hdd <dd <dd <||_ |i |ƒq6W||_ddf|_ tttd d ƒƒ|_||_||_||_d|_d|_t|i|iƒt_|iƒdS(Ns0s1s2iiiiis scenery0.pngs scenery1.pngs scenery2.pngiAi[i(sscreensselfsImgsbackgrs gamelevelsslevelsLevelsls timersleepsdelayssteps backgroundsappends gameitemssmapschrsrangesletterss configdicsbasepathsbasedirslibdirsstopsscoresCPinitsMiscsactivess_setup( sselfsscreensbackgrs configdicsbasepathslibdirslevels gamelevelssl((s./lib/fallingletters.pys__init__bs* ((((      cCsy|iiƒWnnXdS(N(sselfstimersstop(sself((s./lib/fallingletters.pys__del__~scCs t|_dS(s Set all the stuff we needN(sNonesselfstimer(sself((s./lib/fallingletters.pys_setup„scCsptodG|iGHnddf\|_|_|io|iiƒntii ƒt_ t t i i|id|iƒdƒ}tii|ddfƒtii|ddfƒtiiƒg|_ti|iƒxf|iD][}t|ddddfƒ}tidd ƒ}|ii t!||||i"|i#ƒƒqåWt$i$|i%|i&ƒ|_|ii'ƒd S( sJTry to hit the falling letters on the keyboard before they hit the ground.s level objectisFallingLettersDatai8i{iii iäN((sDEBUGslevels__dict__sselfsscoresstopstimersImgsbackgrsconverts org_backgrs load_imagesosspathsjoinslibdirs backgroundsssscreensblitspygamesdisplaysupdatesletter_objectssrandomsshuffleslettersscs char2surfsimgsrandintsxsappendsLettersstepsdelaysTimers timersleeps drop_lettersstart(sselfslevelsitemsscsimgsssx((s./lib/fallingletters.pysstartˆs( '   ,cCsEy|iiƒ}Wntj o dSnXtii|ƒdSdS(sÙCalled by the timer, and responsible for the letter dropping. This will get a letter from the letter_objects list and place it in the Sprite actives group, and thereby it will be blitted on the screen.iiN(sselfsletter_objectsspopsobjs IndexErrorsMiscsactivessadd(sselfsobj((s./lib/fallingletters.pys drop_letterŸs cCsÈtdf\}|_x)|D]!}|itjo |}PqqWy2ti i |ƒ}|o|dd|_nWnt ƒGHt ‚nXti iƒ o|i o d|_n|i|ifSdS(Niiiÿÿÿÿ(sNonesitemsselfsscoreseventsseventstypesKEYDOWNsMiscsactivessrefreshsvs trace_errorsMyErrorsspritessletter_objectssstop(sselfseventsseventsitemsv((s./lib/fallingletters.pysloopªs    cCsdSdS(sxMust return the original, not translated, title of this game. It's needed by the high score class of childsplay.sFallinglettersN((sself((s./lib/fallingletters.pys__str__¾scCstdƒSdS(NsFallingletters(s_(sself((s./lib/fallingletters.pys helptitleÄscCs8tdƒtdƒdtdƒdtdƒg}|SdS(NsThe aim of the game:s4Type the falling letters before they hit the ground.s sDifficulty : 4-7 yearssNumber of levels : 3(s_stext(sselfstext((s./lib/fallingletters.pyshelpÇs0( s__name__s __module__s__doc__s__init__s__del__s_setupsstarts drop_lettersloops__str__s helptitleshelp(((s./lib/fallingletters.pysGame_s        (sRCFILEsDEBUGsosssyssrandomspygamespygame.constantssutilss load_images trace_errors char2surfsMyErrors SpriteUtilssCPSpritesCPGroupsCPinitsTimersImgsSndsMiscsLettersLevelsGame(s load_imagesCPGroupsSndsMyErrors char2surfsImgsCPinitsrandomsMiscsCPSpritessyssGamespygamesLetters trace_errorsDEBUGsLevelsossRCFILEsTimer((s./lib/fallingletters.pys?s  ,