X9oI#AF?}X ( @ (//(  0/80@0?/8 0( ?G@POWOXOP?H0@/7@O_``h_hPX 0(P_oppxow_g@O/8'' 7p`o?G/7 0??H/8`/o?GOX@H0?/pOW?H/8 7OP?G/7( P0@PX@O0@ 0O @H/@' 00@@P0?'_OP@H( 7/7' ^^^^^^^^^^^^^^^^^^^^^^^^^^TeeBBBBeTT^^^^^^^eBDJ33333JJDBeZ^^^^TD33==#####==3JDBT^^^^eJ=###=3DeZ^^TB3# #=3JBZ^^T3#  #=JBT^^J# Sll #=JBZ^T# %,68??86,/@A*< ##45('.6787-9%:;*<=#$+&,--.,/01)2 3 $%&&'%($!)* ##  !"#     ??d~9X@spr_personnage  x-@D P!!A  P UX^вl齙kZsi?|ي.('n3iy' H/D^0;GhFowFk__QeXM3a5MD4Y8cVds ip2ɰ& +j,X4Y8#2'0u#WP P- ]Χ ^ spr_bloque  |xs5a3 b(fdH@G&8pVoIH`0{ -T\ 0v0G ɃmpaSp\ */QZƽ6UJ{1cS>*b*1;ݠj*s/o !߬KT|CZVa6\a ~[I0KN ?WE*xC -<בaxF.ٔpc_FQTO-`o\3co/ 4 czu\1@9&s]xb0/9CR@lL2c@1gqC І lԟn+[!bgh 'o~zspr_grande_rampe@? x]n0-zG葸5B=L0 // Si le vitesse Verticale n'est pas gale a 0 (abs transeforme en positif quand le nombre est ngatif) { repeat(abs(ma_vitesse_V)) // Rpte le dplacement autant de fois que la vitesse Verticale { if place_free(x,y+sign(ma_vitesse_V)) // Si il n'y a pas d'objet qui bloque le passage { y+=sign(ma_vitesse_V); } // Ajoute 1 ou -1 selon le signe de ma_vitesse_V else // Si un objet empeche le mouvement { ma_vitesse_V=0;break; } // Stop la vitesse, arrte la boucle "repeat( )" } } /////////////////////////////////////////// // Produit les dplacement Horizontales // ///////////////////////////////////////// if abs(ma_vitesse_H)>0 // Si le vitesse horizontale n'est pas gale a 0 (abs transeforme en positif) { // Crer la friction : if ma_vitesse_H>0 // positif (dplacement ver la droite) {ma_vitesse_H-=ma_friction=0.5; if ma_vitesse_H<0 {ma_vitesse_H=0;} } // Soustrait pour arriver a 0 if ma_vitesse_H<0 // ngatif (dplacement ver la gauche) {ma_vitesse_H+=ma_friction=0.5; if ma_vitesse_H>0 {ma_vitesse_H=0;} } // Ajoute pour arriver a 0 repeat(abs(ma_vitesse_H)) // Rpte le dplacement autant de fois que la vitesse Horitonale { if place_free(x+sign(ma_vitesse_H),y) // Si il n'y a pas d'objet qui bloque le passage { x+=sign(ma_vitesse_H); } // Ajoute 1 ou -1 selon le signe de ma_vitesse_H else // Si un objet empeche le mouvement { ma_vitesse_H=0;break; } // Stop la vitesse, arrte la boucle "repeat( )" } } scr_joueur_create2/* Dfinit toute les vaariable nsscaire pour la phisique */ ma_gravite=0.5; // La gravite du joueur ma_friction=0.5; // La friction du joueur // + friction = s'arrte plus nettement ma_vitesse_H=0; // Vitesse horizontale du personnage. ma_vitesse_V=0; // Vitesse verticale du personnage. ma_hauteur_de_rampe=4; // La hauteur maximal que l'on peut monter // sans sauter, en se dplacant ver a gauche ou la dorite scr_joueur_step2 // Besoin pour fair ragir l'objet courant. // (non il cour pas, je veut dir l'objet qui apelle le script) ////////////////////////////////////// // Tous d'abord, gnre la gravite // ////////////////////////////////////// ma_vitesse_V+=ma_gravite; // Augemente constament la vitesse Verticale. //////////////////////////////////////// // Produit les dplacement Verticales // //////////////////////////////////////// if abs(ma_vitesse_V)>0 // Si le vitesse Verticale n'est pas gale a 0 (abs transeforme en positif quand le nombre est ngatif) { repeat(abs(ma_vitesse_V)) // Rpte le dplacement autant de fois que la vitesse Verticale { if place_free(x,y+sign(ma_vitesse_V)) // Si il n'y a pas d'objet qui bloque le passage { y+=sign(ma_vitesse_V); } // Ajoute 1 ou -1 selon le signe de ma_vitesse_V else // Si un objet empeche le mouvement { ma_vitesse_V=0;break; } // Stop la vitesse, arrte la boucle "repeat( )" } } /////////////////////////////////////////// // Produit les dplacement Horizontales // ///////////////////////////////////////// if abs(ma_vitesse_H)>0 // Si le vitesse horizontale n'est pas gale a 0 (abs transeforme en positif) { // Crer la friction : if ma_vitesse_H>0 // positif (dplacement ver la droite) {ma_vitesse_H-=ma_friction=0.5; if ma_vitesse_H<0 {ma_vitesse_H=0;} } // Soustrait pour arriver a 0 if ma_vitesse_H<0 // ngatif (dplacement ver la gauche) {ma_vitesse_H+=ma_friction=0.5; if ma_vitesse_H>0 {ma_vitesse_H=0;} } // Ajoute pour arriver a 0 repeat(abs(ma_vitesse_H)) // Rpte le dplacement autant de fois que la vitesse Horitonale { i=0; repeat(ma_hauteur_de_rampe) { if place_free(x+sign(ma_vitesse_H),y-i) // Si il n'y a pas d'objet qui bloque le passage { x+=sign(ma_vitesse_H);y-=i;break; } // Ajoute 1 ou -1 selon le signe de ma_vitesse_H else { // Si un objet empeche le mouvement if i=ma_hauteur_de_rampe // Si on est au maximum de la hauteur de la rampe {ma_vitesse_H=0;break; } // Stop la vitesse, arrte la boucle "repeat( )" } i+=1; } } }  obj_bloque  obj_joueur Yaction_execute_script 00000000Baction_show_info00000000Yaction_execute_script 10000000'c ma_vitesse_H4000000%c ma_vitesse_H-4000000&[ if !place_free(x,y+1) // Si on a quelque chose sous ces pieds { ma_vitesse_V=-10; // Ajoute une valeur a la vitesse verticale // pour produir un saut }0000000 [room_goto(room1);0000000obj_joueur+rampe Yaction_execute_script 20000000Yaction_execute_script 30000000'c ma_vitesse_H4000000%c ma_vitesse_H-4000000&[ if !place_free(x,y+1) // Si on a quelque chose sous ces pieds { ma_vitesse_V=-10; // Ajoute une valeur a la vitesse verticale // pour produir un saut }0000000 [room_goto(room0);0000000 obj_rampe1  obj_rampe2 obj_grande_rampe room0        7@` `@```````` `@```````` `@````@` `````†``Æ`@Ć` ņ`ƆȆ Ɇ@ʆ`ˆ̆͆ΆφІ ц@҆ӆԆ`Նֆ ׆؆ن چppۆPp܆p݆pކroom1        [` `@```````` `@```````` `@````@` `````†``Æ`@Ć` ņ`ƆȆ Ɇ@ʆ`ˆ̆͆ΆφІ ц@҆ֆ ׆؆نppۆPp܆p݆pކp߆@ 0P@@@@0@@0@ @@@@PPP@0000        PP )IH  XGame InformationX{\rtf1\ansi\ansicpg1252\deff0\deflang1036{\fonttbl{\f0\fnil\fcharset0 Arial;}{\f1\fnil\fcharset0 Courier New;}{\f2\fnil Arial;}} {\colortbl ;\red255\green255\blue255;\red255\green0\blue0;\red0\green0\blue255;\red0\green0\blue0;} \viewkind4\uc1\pard\cf1\ul\b\fs28 TUTORIAL \par \ulnone JEUX DE PLATEFORME \par \par \cf2\b0\fs24 Appuyer su \ul\b entrer\ulnone\b0 pour changer de room \par (room0 = simple room1 = avec des rampes)\cf1\b\fs28 \par \par I . La gravit\'e9e \par \par \par \b0\fs24 La gravit\'e9e ne d\'e9pent que d'une variable : \par \cf3 ma_gravite\cf1 \par Mais il faut imp\'e9rativement quelle soit appliquer constament. \par D\'e9tails : \par La variable \cf3 ma_vitesse_V\cf1 d\'e9finit la vitesse Verticale du personnage. \par N\'e9gatif, elle ferat monter le personnage. \par Positif, elle le ferat d\'e9sendre. \par Donc enfaite , la vairable \cf3 ma_gravite\cf1 n'interagit pas avec la vitesse du perosnnage \par Enfaite elle modifie la valeur de \cf3 ma_vitesse_V\cf1 pour fair d\'e9sendre le personnage. \par On l'applique comme ceci : \par \f1\fs20 ma_vitesse_V+=ma_gravite;\f0\fs24 \par Selon \cf3 ma_vitesse_V\cf1 , si vous entrer en collision avec un bloque verticalement \par (il doit etre plac\'e9 soi au dessus de vous soit au dessous) \par Donc la gravit\'e9e doit \'eatre appliquer constament. \par \cf4\f2 \par \cf1\b\f0\fs28 II . Le mouvement \par \par \par \b0\fs24 Les mouvement du perosnnage (d\'e9finit donc par\cf3 ma_vitesse_V\cf1 et \cf3 ma_vitesse_H\cf1 ) \par sont produit gr\'e2ce a une boucle : \par \b repeat\b0 (\b X\b0 ) \par Enfaite, pour que le mouvement soit pr\'e9cis on doit v\'e9rifi\'e9 les collisions tous les pixel. \par Et si il y a une collision on arr\'eate im\'e9diatement la boucle qui est donc inutil (avec un \b break\b0 ). \par Si l'on ne v\'e9rifie pas tous les pixel, cela utiliserat moin de ressources \par (pas une tr\'e8s grande diff\'e9rence tous de m\'eame) mais serat impr\'e9cie \par (par exemple, le personnage pourat se trouver a 10pixel du sol et ne plus bouger, \par si sa vitesse Verticale et de 10). \par \par \par \par \par \par \cf4\f2 \par } Spritesspr_personnage spr_bloquespr_grande_rampe spr_rampe1 spr_rampe2Sounds BackgroundsPathsScriptsnormalescr_joueur_createscr_joueur_stepnormale +rampesscr_joueur_create2scr_joueur_step2 Fonts Time LinesObjects obj_joueurobj_joueur+rampe obj_bloque obj_rampe1 obj_rampe2obj_grande_rampeRoomsroom0room1 Game Information Global Game Settings