muchas gracias Javier saludos sebass ----- Original Message ----- From: "Javier Arce A." <[EMAIL PROTECTED]> To: "flashmaestro List Member" <[EMAIL PROTECTED]> Sent: Thursday, July 04, 2002 6:24 PM Subject: [flashmaestro] I Juegos
> Sebastian: > > Te mando un tutorial. Esta sencillon, pero espero que > te sirva... > > Hasta Luego > > > > _________________________________________________________ > Do You Yahoo!? > La emoci�n e intensidad del deporte en Yahoo! Deportes. http://deportes.yahoo.com.mx ---------------------------------------------------------------------------- ---- > {\rtf1\ansi\ansicpg1252\uc1 \deff0\deflang1033\deflangfe3082{\fonttbl{\f0\froman\fcharset0\fprq2{\*\pano se 02020603050405020304}Times New Roman;}{\f16\froman\fcharset238\fprq2 Times New Roman CE;}{\f17\froman\fcharset204\fprq2 Times New Roman Cyr;} > {\f19\froman\fcharset161\fprq2 Times New Roman Greek;}{\f20\froman\fcharset162\fprq2 Times New Roman Tur;}{\f21\froman\fcharset186\fprq2 Times New Roman Baltic;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\b lue255; > \red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\gre en255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blu e128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red12 8\green128\blue0; > \red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\nowidctlpar \widctlpar\adjustright \fs20\lang3082\cgrid \snext0 Normal;}{\s1\keepn\nowidctlpar\widctlpar\adjustright \b\fs20\lang3082\cgrid \sbasedon0 \snext0 heading 1;}{ > \s2\keepn\nowidctlpar\widctlpar\adjustright \b\fs36\lang3082\cgrid \sbasedon0 \snext0 heading 2;}{\*\cs10 \additive Default Paragraph Font;}{\s15\nowidctlpar\widctlpar\adjustright \b\fs20\lang3082\cgrid \sbasedon0 \snext15 Body Text;}{\*\cs16 \additive > \ul\cf2 \sbasedon10 Hyperlink;}}{\info{\title //Variables Globales}{\author Francisco Arce Anguiano}{\operator Francisco Arce Anguiano}{\creatim\yr2002\mo6\dy6\hr20\min7}{\revtim\yr2002\mo6\dy6\hr20\min 7}{\version2}{\edmins1}{\nofpages4}{\nofwords922} > {\nofchars5260}{\*\company Familia Arce Vieyra}{\nofcharsws6459}{\vern73}}\paperw12242\paperh15842\margl1701\margr17 01\margt1418\margb1418 \deftab708\widowctrl\ftnbj\aenddoc\hyphhotz425\formshade\viewkind1\viewscale 100\pgbrdrhead\pgbrdrfoot \fet0\sectd > \psz1\linex0\headery709\footery709\colsx709\endnhere\sectdefaultcl {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}} > {\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5\p ndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang > {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain \s2\keepn\nowidctlpar\widctlpar\outlinelevel1\adjustright > \b\fs36\lang3082\cgrid {Juego de memoria con Action Scripts > \par }\pard\plain \nowidctlpar\widctlpar\adjustright \fs20\lang3082\cgrid {Con pocas lineas haga un juego muy divertido. > \par > \par }\pard\plain \s15\nowidctlpar\widctlpar\adjustright \b\fs20\lang3082\cgrid {Es un juego muy sencillo. Consiste en pares de cartas, barajeadas y puestas boca abajo. El jugador debe de voltear dos cartas a la vez y encontrar los > pares. Una vez encontradas dos cartas con el mismo valor, se retiran. Cosas de ni\'f1os, \'bfverdad? > \par }\pard\plain \nowidctlpar\widctlpar\adjustright \fs20\lang3082\cgrid { > \par > \par Para simplificar, utilizaremos un solo MovieClip con los valores de cada carta por frame. Esta es la manera m\'e1s sencilla de manipularlas, ya que de lo contrario, deber\'edamos tener un MovieClip por cada carta, lo cual resulta poco eficiente > y carga la memoria. El primer frame ser\'e1 la carta volteada. > \par > \par Asimismo, podemos tener un contador de \ldblquote clicks\rdblquote efectuados a falta de marcador (a menor n\'famero de clicks, mejor memoria), y un contador de pares encontrados, para identificar el fin del juego. Usted puede poner las im\'e1 > genes que desee en las cartas. Para simplificar, nos rompimos la cabeza, y les pusimos n\'fameros (usted puede ponerle las fotos de sus novias (os), o las fotos del equipo de f\'fatbol que prefiera). > \par > \par }{\b Las funciones: > \par }{ > \par Para hacer este jueguito, necesitamos tres partes: 1) Rutina de inicio que baraje las cartas, 2) Rutina que detecte los clicks sobre las cartas y 3) Rutinas que tome decisiones. > \par > \par Pero antes, hablemos de las variables globales. Una llevar\'e1 el contador de las veces que hacemos click, lo cual medir\'e1 que tan buenos somos. Entre menos clicks, uno tiene mejor memori > a. El otro es un contador de pares para identificar cuando se termina la jugada. Las dem\'e1s variables las explicaremos en cada rutina, y puede jugar con ellas para variar el juego. > \par > \par }\pard\plain \s1\keepn\nowidctlpar\widctlpar\outlinelevel0\adjustright \b\fs20\lang3082\cgrid {Variables globales > \par }\pard\plain \nowidctlpar\widctlpar\adjustright \fs20\lang3082\cgrid { > \par //Variables Globales > \par clicks = 0; > \par contadorPares = 0 ; > \par //Constantes > \par PARES = 18; > \par CARTAS = PARES * 2; > \par LON_CARTA = 60; > \par MARGEN_IZQ = 200; > \par MARGEN_ARR = 50; > \par COLUMNAS = 6; > \par > \par }{\b Funci\'f3n de inicio: > \par }{ > \par Esta consiste en tres partes: 1) Crear los arreglos, 2) Barajearlos, 3) Desplegar boca abajo las cartas (respecto al arreglo barajeado, por supuesto). Todas estas funciones se pueden hacer de muchas maneras. Aqu\'ed proponemos las siguientes: > \par > \par //Crea el vector con las 36 cartas > \par var ListaOrdenada = new Array(); > \par for(var i=1;i<=PARES;i++) \{ > \par \tab ListaOrdenada.push(i,i); > \par \} > \par > \par La variable PARES la manejamos en may\'fasculas para indicar que nunca cambia y que es un par\'e1metro general. Observe que estamos alimentando al arreglo con dos d\'edgitos. Al final del ciclo, deber\'e1 > quedar una arreglo similar a 1,1,2,2,3,3,4,4,5,5,... etc. > \par > \par Para cambiarlo al azar tambi\'e9n hay muchas formas. La m\'e1s sencilla es crear otro arreglo vac\'edo, y a medida que lo vayamos llenando, borramos un elemento del original: > \par > \par //Barajea Arreglo > \par var ListaCartas = new Array(); > \par while (ListaOrdenada.length > 0) \{ > \par \tab r = int(Math.random()*ListaOrdenada.length); > \par \tab ListaCartas.push(ListaOrdenada[r]); > \par \tab ListaOrdenada.splice(r,1); > \par \} > \par > \par Observe que primero escogemos al azar el elemento del arreglo original, luego \ldblquote empujamos\rdblquote el valor de este al nuevo arreglo, y luego borramos el nodo original. Obtendremos una lista similar a 3,6,2,5,3,7,9,1,4,2,6,7, etc. > \par > \par Finalmente necesitamos desplegar las cartas en el escenario: > \par > \par //Crea las cartas, ordena en pantalla y les asigna numero > \par x = 0; > \par y = 0; > \par for(var i=0; i<CARTAS; i++) \{ > \par \tab attachMovie("Card","Card"+i,i); > \par \tab _root["Card"+i].numero = ListaCartas[i]; > \par \tab _root["Card"+i]._x = x * LON_CARTA + MARGEN_IZQ; > \par \tab _root["Card"+i]._y = y * LON_CARTA + MARGEN_ARR; > \par \tab //Aumenta por renglones > \par \tab x++; > \par \tab if (x > COLUMNAS - 1) \{ > \par \tab \tab x = 0; > \par \tab \tab y++; > \par \tab \} > \par \} > \par > \par }{\b Funciones de decisiones: > \par }{ > \par Como puede observar, necesitamos dos variables de pivote para desplegar las cartas (x e y), y que estamos almacenando una variable en la carta, con la cual verificaremos los pares, sin importar si las cartas tiene como imagen a un avi\'f3 > n , a la reina Victoria o a Pen\'e9lope Cruz. > \par > \par Bueno, en este punto ya podemos comenzar a jugar. La idea es que cuando hagamos click en una carta, esta carta se voltee, si le damos otra vez click, nuevamente se voltee, si hay una segunda carta, verificar si tiene el mismo valor, y de ser as\'ed > , eliminar el par... uf, f\'e1cil, \'bfverdad? > \par > \par Aqu\'ed, la voz cantante la tienen las variables \ldblquote primeraCarta\rdblquote , \ldblquote segundaCarta\rdblquote y \ldblquote clip\rdblquote . (Aunque, como usted ya sabe, hay muchas maneras de matar las pulgas). La estructura necesaria pudr\'ed > a quedar de la siguiente manera: > \par > \par Si se hizo click enla misma carta > \par }\pard \fi708\nowidctlpar\widctlpar\adjustright {Voltea Carta > \par }\pard \nowidctlpar\widctlpar\adjustright {SiNo > \par }\pard \fi708\nowidctlpar\widctlpar\adjustright {Si no hay otras cartas volteadas > \par }\pard \fi708\li708\nowidctlpar\widctlpar\adjustright {Voltea la primera > \par }\pard \nowidctlpar\widctlpar\adjustright {\tab Si ya hay una carta volteada > \par }\pard \fi708\li708\nowidctlpar\widctlpar\adjustright {Voltea la segunda carta > \par }\pard \nowidctlpar\widctlpar\adjustright {\tab \tab Si La primer carta y la segunda coinciden > \par }\pard \fi708\li1416\nowidctlpar\widctlpar\adjustright {Remueve las carta e inicializa variables > \par }\pard \nowidctlpar\widctlpar\adjustright {\tab \tab Fin > \par \tab Fin > \par \tab > \par Fin > \par > \par Una validaci\'f3n previa es necesaria par saber si hay dos cartas ya boca arriba. Si este es el caso, abr\'eda que voltearlas antes de descubrir una tercera. Para esta rutina el \ldblquote truco\rdblquote es la funci\'f3n gotoAndStop y el n\'fa > mero que almacenamos el el MovieClip, ya que para poner una carta boca abajo, se va al primer recuadro del MovieClip. Para voltear boca arriba la carta se va al n\'famero almacenado m\'e1s uno. El c\'f3digo quedar\'eda de la siguiente manera: > \par > \par function clickCarta(clip) \{ > \par \tab //Aumneta contador de Clicks > \par \tab clicks++; > \par }\pard \fi708\nowidctlpar\widctlpar\adjustright {myClicks = clicks; > \par }\pard \nowidctlpar\widctlpar\adjustright { > \par \tab //Revisa si hay dos cartas volteadas > \par \tab if (segundaCarta != 0) \{ > \par > \par \tab \tab //Si las hay, las voltea y limpia variables > \par \tab \tab primeraCarta.gotoAndStop(1); > \par \tab \tab segundaCarta.gotoAndStop(1); > \par \tab \tab primeraCarta = 0; > \par \tab \tab segundaCarta = 0; > \par \tab \} > \par > \par \tab // Verifica si la misma carta fue seleccionasa > \par \tab if (primeraCarta == clip) \{ > \par > \par \tab \tab //Si: voltea la carta > \par \tab \tab primeraCarta.gotoAndStop(1); > \par \tab \tab primeraCarta = 0; > \par > \par \tab //Si no hay cartas volteadas > \par \tab \} else if (primeraCarta == 0) \{ > \par > \par \tab \tab //Voltea la primera > \par \tab \tab clip.gotoAndStop(clip.numero+1); > \par \tab \tab primeraCarta = clip; > \par > \par \tab //Si ya hay una carta volteada > \par \tab \} else \{ > \par > \par \tab \tab //Voltea la segunda carta > \par \tab \tab clip.gotoAndStop(clip.numero+1); > \par \tab \tab segundaCarta = clip; > \par > \par \tab \tab // Verifica si las dos cartas coinciden > \par \tab \tab if (primeraCarta.numero == segundaCarta.numero) \{ > \par > \par \tab \tab \tab //Si coinciden, remueve las carta > \par }\pard \fi708\li1416\nowidctlpar\widctlpar\adjustright {//e inicializa variables > \par }\pard \nowidctlpar\widctlpar\adjustright {\tab \tab \tab contadorPares++; > \par \tab \tab \tab myPares = contadorPares; > \par \tab \tab \tab primeraCarta.removeMovieClip(); > \par \tab \tab \tab segundaCarta.removeMovieClip(); > \par \tab \tab \tab primeraCarta = 0; > \par \tab \tab \tab segundaCarta = 0; > \par \tab \tab \} > \par \tab \} > \par \tab > \par \} > \par > \par }{\b Lo que sigue: > \par }{ > \par A este juego le puede poner un reloj, para que contabilice el tiempo que se tarda, o asignarle un tiempo para encontrar las cartas, puede jugar entre varias personas, y generar un contador por participante; tambi\'e9 > n se puede jugar por niveles, con cada vez m\'e1s cartas, etc. Recuerde que el l\'edmite es su imaginaci\'f3n. > \par > \par Flasheros del mundo, \'a1un\'edos! > \par }\pard \qc\nowidctlpar\widctlpar\adjustright { > \par }\pard \nowidctlpar\widctlpar\adjustright {Francisco Javier Arce Anguiano > \par Mail: }{\field{\*\fldinst { HYPERLINK mailto:[EMAIL PROTECTED] }{{\*\datafield > 00d0c9ea79f9bace118c8200aa004ba90b02000000170000001500000066006a005f00610072 006300650040007900610068006f006f002e0063006f006d002e006d0078000000e0c9ea79f9 bace118c8200aa004ba90b380000006d00610069006c0074006f003a0066006a005f00610072 00630065004000790061006800 > 6f006f002e0063006f006d002e006d0078000000}}}{\fldrslt {\cs16\ul\cf2 [EMAIL PROTECTED]}}}{ > \par > \par }}
