Comunidad de diseño web y desarrollo en internet online

tragamonedas con 6 carrile: le continuo o como le hago?

Citar            
MensajeEscrito el 26 Ene 2007 07:30 am
Hola a todos,miren en la escuela hizimos un proyecto de un tragamonedas (con actionscript claro verdad) con 3 carriles o ruletas (como lo kieran llamar) y bueno lo resolvi encontrando todas las combinaciones posibles e insteralas en if-elseif-elseif-elseif-....-else. Pero ahora nos pidio hacerlo sobre 6 carriles y como son mas posibles combinaciones tengo muchas dudas, permitanme enseñarles como le estoy haciendo:

1.-obtengo un figura aleatoria de entre 5 posibles
2.-ese valor lo paso a una variable para que se detenga en el fotogrma ke mostrara la figura
3.-el valor de random lo paso a otra variable global

Ese script de aki abajo lo uso para los 6 carriles y ya en el ultimo carril uso el mismo script pero manda llamar a una funcion para hacer las comparaciones:

Código :

if(contador6!=6){//este contador cambia segun la carril p.e. contador5!=5
gotoAndPlay(2);
contador6++;//este contador cambia segun el carril p.e. contador5++
}else{
ran=random(5)+1;//ver paso 1
variable=(ran*3)+(ran-1);
//es ke tengo 3 fotogramas para cada figura y por eso uso 3 fotogramas //para darle el efecto de ke van pasando las figuras
_root.carril6.gotoAndStop(variable);//ver paso 2
_global.r6=ran;//ver paso 3
_root.comparaciones();
}

Y he aki esta la funcion comparaciones claro su funcion sera compara cunado tenga 2,3,4,5,6 figuras iguales todavia no la acabo pero bueno se las presento:

Código :

function comparaciones():Void{
r1=_global.r1; r2=_global.r2; r3=_global.r3; r4=_global.r4; r5=_global.r5; r6=_global.r6;
//r1=4;r2=4;trace("r6:"+r6+"r5:"+r5+"r4:"+r4+"r3:"+r 3+"r2:"+r2+"r1:"+r1);
/*if((r1==r2)&&(r2==r3)&&(r3==r4)&&(r4==r5)&&(r5==r 6)){
_root.Comentarios.text="tienes 6 iguales de "+r1;
}else if(((r1==r2)&&(r2==r3)&&(r3==r4)&&(r4==r5)) ||((r1==r2)&&(r2==r3)&&(r3==r4)&&(r4==r6))
||((r1==r2)&&(r2==r3)&&(r3==r5)&&(r5==r6))||((r1== r2)&&(r2==r4)&&(r4==r5)&&(r5==r6))
||((r1==r3)&&(r3==r4)&&(r4==r5)&&(r5==r6))||((r2== r3)&&(r3==r4)&&(r4==r5)&&(r5==r6))){
_root.Comentarios.text="tienes 5 iguales con valor de ";
}else if(((r1==r2)&&(r2==r3)&&(r3==r4)) || ((r1==r2)&&(r2==r3)&&(r3==r5)) || ((r1==r2)&&(r2==r3)&&(r3==r6))
||((r1==r2)&&(r2==r4)&&(r4==r5)) ||((r1==r2)&&(r2==r4)&&(r4==r6)) ||((r1==r2)&&(r2==r5)&&(r5==r6))
||((r1==r3)&&(r3==r4)&&(r4==r5)) ||((r1==r3)&&(r3==r4)&&(r4==r6)) ||((r1==r3)&&(r3==r5)&&(r5==r6))
||((r1==r4)&&(r4==r5)&&(r5==r6)) ||((r2==r3)&&(r3==r4)&&(r4==r5)) ||((r2==r3)&&(r3==r4)&&(r4==r6))
||((r2==r3)&&(r3==r5)&&(r5==r6)) ||((r2==r4)&&(r4==r5)&&(r5==r6)) ||((r3==r4)&&(r4==r5)&&(r5==r6))){
_root.Comentarios.text="tienes 4 iguales con valor de ";
}else if(((r1==r2)&&(r2==r3)) || ((r1==r2)&&(r2==r4)) || ((r1==r2)&&(r2==r5))|| ((r1==r2)&&(r2==r6))
|| ((r1==r3)&&(r3==r4)) ||((r1==r3)&&(r3==r5)) ||((r1==r3)&&(r3==r6))|| ((r1==r4)&&(r4==r5))
||((r1==r4)&&(r4==r6)) ||((r1==r5)&&(r5==r6))|| ((r2==r3)&&(r3==r4)) ||((r2==r3)&&(r3==r5))
||((r2==r3)&&(r3==r6))||((r2==r4)&&(r4==r5))||((r2 ==r4)&&(r4==r6))||((r2==r5)&&(r5==r6))
|| ((r3==r4)&&(r4==r5)) ||((r3==r4)&&(r4==r6)) ||((r3==r5)&&(r5==r6))||((r4==r5)&&(r5==r6))){
if((r1==r2)&&(r2==r3)){for(a=1;a<=5;a++){if(r2==a) _root.Comentarios.text="tienes 3 iguales con valor de "+a;}}
else if((r1==r2)&&(r2==r4)){for(a=1;a<=5;a++){if(r2==a) _root.Comentarios.text="tienes 3 iguales con valor de "+a;}}
else if((r1==r2)&&(r2==r5)){for(a=1;a<=5;a++){if(r2==a) _root.Comentarios.text="tienes 3 iguales con valor de "+a;}}
else if((r1==r2)&&(r2==r6)){for(a=1;a<=5;a++){if(r2==a) _root.Comentarios.text="tienes 3 iguales con valor de "+a;}}
}else*/ if((r1==r2) || (r1==r3) || (r1==r4) || (r1==r5) || (r1==r6) ||(r2==r3) || (r2==r4)
|| (r2==r5) || (r2==r6) ||(r3==r4) || (r3==r5) || (r3==r6) || (r4==r5) || (r4==r6) || (r5==r6)){
if(r1==r2){for(a=1;a<=5;a++){if(r1==a)_root.Coment arios.text="tienes 2 iguales con valor de "+a;}}
else if(r1==r3){for(a=1;a<=5;a++){if(r1==a)_root.Coment arios.text="tienes 2 iguales con valor de "+a;}}
else if(r1==r4){for(a=1;a<=5;a++){if(r1==a)_root.Coment arios.text="tienes 2 iguales con valor de "+a;}}
else if(r1==r5){for(a=1;a<=5;a++){if(r1==a)_root.Coment arios.text="tienes 2 iguales con valor de "+a;}}
else if(r1==r6){for(a=1;a<=5;a++){if(r1==a)_root.Coment arios.text="tienes 2 iguales con valor de "+a;}}
else if(r2==r3){for(a=1;a<=5;a++){if(r2==a)_root.Coment arios.text="tienes 2 iguales con valor de "+a;}}
else if(r2==r4){for(a=1;a<=5;a++){if(r2==a)_root.Coment arios.text="tienes 2 iguales con valor de "+a;}}
else if(r2==r5){for(a=1;a<=5;a++){if(r2==a)_root.Coment arios.text="tienes 2 iguales con valor de "+a;}}
else if(r2==r6){for(a=1;a<=5;a++){if(r2==a)_root.Coment arios.text="tienes 2 iguales con valor de "+a;}}
else if(r3==r4){for(a=1;a<=5;a++){if(r3==a)_root.Coment arios.text="tienes 2 iguales con valor de "+a;}}
else if(r3==r5){for(a=1;a<=5;a++){if(r3==a)_root.Coment arios.text="tienes 2 iguales con valor de "+a;}}
else if(r3==r6){for(a=1;a<=5;a++){if(r3==a)_root.Coment arios.text="tienes 2 iguales con valor de "+a;}}
else if(r4==r5){for(a=1;a<=5;a++){if(r4==a)_root.Coment arios.text="tienes 2 iguales con valor de "+a;}}
else if(r4==r6){for(a=1;a<=5;a++){if(r4==a)_root.Coment arios.text="tienes 2 iguales con valor de "+a;}}
else if(r5==r6){for(a=1;a<=5;a++){if(r5==a)_root.Coment arios.text="tienes 2 iguales con valor de "+a;}}
}else _root.Comentarios.text=_global.Malo[random(8)];//nada es igual
}//de la funcion

Ahora ya determina cunado son 2,3,4,5,6.Pero ahora la pregunta es: como hacerle para conocer de que figura son iguales?

Bueno ahora que vieron como le hice creo que me diran pero porque no le haces asi o ... y pues como veran creo que debe existir otra solucion mejor a la que planteo aki.

Por krakxp

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 26 Ene 2007 08:08 am
Sería algo como

Código :

var cuentas:Array = new Array();
var numeroPosibilidades:Number = 18;
var numeroCarriles:Number = 6;

for(var i:Number = 0;i<numeroPosibilidades;i++) {
cuentas[i] = 0;
for(var j:Number = 0;j<numeroCarriles;j++) {
if(_root['carril'+(j+1)]==i) {
cuentas[i]++;
};
};
};


¿Qué es lo que hacemos?
(primer for) Vamos posibilidad a posibilidad (por ejemplo si fueran 3, CEREZA, MONEDA y SIETE)
entonces nos situamos en i=0 (CEREZA) y recorremoslos "carriles" uno a uno (segundo for) comprobamos si _root.carril1 (porque no hay carril0) tiene el valor 0 (CEREZA), si lo tiene añadimos 1 a cuentas[0], y seguimos con el segundo carril,... luego pasaríamos a MONEDA y luego a SIETE

Al terminar ambos fors tendríamos el array cuentas con los datos de cada imagen
cuentas[0] = X; //numero de CEREZAS
cuentas[1] = Y; // numero de MONEDAS
cuentas[2] = Z; // numero de SIETES

Y ya los manejas como quieras.
Como ves las comprobaciones son númericas (0 hasta (numeroPosibilidades-1)) aunque le puedes sumar 1 y hacerlas desde 1 hasta numeroPosibilidades

Por _CONEJO

BOFH

7639 de clabLevel

17 tutoriales
21 articulos

 

firefox
Citar            
MensajeEscrito el 16 Feb 2007 07:28 am
Hola ke tal no manches si funciono y muy bien lo que me mencionaste alla arriba y creo entender un poquito mas de cuando usar este tipo de trucos pero necesito practicar mas.

Bueno ahora te escribo para mencionarte que ahora realizo la parte en la que tengo que le sumo dinero al jugador cierta cantidad de dinero por obtener ciertos numeros o combinaciones de numeros pero ahora el problema es que suma valores que no se de donde salen.

Mira lo que hize es inicializar una bandera global en cero asi:

Código :


_global.bandera=0;   
//junto con todo esto para parar las ruedas,crear arreglos,poner dinero y creditos
stop();      _root.creditos.text=20;      _root.dinero.text=100;      
_root.a.stop();_root.b.stop();_root.c.stop();_root.d.stop();_root.e.stop();_root.f.stop();_root.g.stop();_root.h.stop();
_global.Bueno=new Array(2);_global.Bueno[0]="ganaste felicidadas";_global.Bueno[1]="Orale volviste a ganar";
_global.Malo=new Array(1);_global.Malo[0]="Perdiste";

//Aki esta la parte en la que me echaste la mano
var numeroCarriles:Number = 8;//ruletas
var numeroPosibilidades:Number = 6;//estos son las figuras o numeros
var cuentas:Array = new Array();


Oye keria poner este codigo en un "onClipEvent(enterFrame)" porke l pongo al final del movie clip y pues si lo pongo en la clip de pelicula inicia luego luego alguna sugerencia.

Ahora este es el codigo de las ruedas, aki debo decirte ke hace algo extraño por ke a veces se para primero la ruleta n en lugar de la n-1 y pues eso no kiero ke pase pero bueno:

Código :

if(_global.a != 1){      //este 1 cambia por 2,3,4,5,6,7,8 segun la rueda
   play();      //mientras tanto girara
   _global.a++;   //incrementa el valor de la variable global
}else{
   ran=random(6)+1;      //obtengo un valor aletorio
   this.gotoAndStop(((ran*5)-5));   //paro la rueda
   _root.ra.text=ran;      //y luego mando el valor a la caja de texto
}


Y bueno para cuando la ultima rueda termina de rodar cambio esta bandera a 1 y mando llamar al metodo que realizara las suma de dinero:

Código :

if(_global.h != 8){
   play();
   _global.h++;
}else{
   ran=random(6)+1;
   this.gotoAndStop(((ran*5)-5));
   _root.rh.text=ran;
   _global.bandera=1;
   if(_global.bandera==1){
      _root.dineros();
}

Y el metodo que hara las sumas de dinero es este(claro lo pongo en el primer fotograma):

Código :

function dineros():Void{
xt=random(16),_root.rf.text=random(16),_root.rg.text=random(16),_root.rh.text=random(16);
var resultados=new Array(_root.ra.text,_root.rb.text,_root.rc.text,_root.rd.text,_root.re.text,_root.rf.text,_root.rg.text,_root.rh.text);
for(var i:Number=0; i<numeroPosibilidades; i++) {//para las figuras
   cuentas[i] = 0;
   for(var j:Number=0; j<numeroCarriles; j++){//para los carriles
      if(resultados[j] == i){ cuentas[i]++; }
   }
}

//Ahora vamos a dar dinero con las siguientes reglas
for (z in cuentas){
//trace("La figura "+[z]+" tiene: " + cuentas[z]);
   if(cuentas[z] > 2){      //para numeros ke salen 3 veces o mas
      _root.dinero.text=Number(_root.dinero.text) + Math.round((z*cuentas[z])/2);
      _root.comentarios.text="el #"+z+"se repitio"+cuentas[z]+"veces";
   }
   if(cuentas[z] == 2){      //para los pares
      _root.dinero.text=Number(_root.dinero.text)+50;
      _root.comentarios.text=_global.Bueno[random(2)];
   }
}//del foreach para numeros repetidos 2 o 3 veces mas

for (z in resultados){   
   if(resultados[z] == 4){//para el numero de la suerte
      _root.dinero.text=Number(_root.dinero.text)+ (Number(z)*10)+10;
      _root.comentarios.text=_global.Bueno[random(2)];
   }
}//del foreach para el numero de la suerte
}//dela funcion


Pero no se porke hace sumas "fantasmas" de mas creo ke es un error de "bandera" o en los if ke pongo " != " en las ruedas, por eso te pregunto a ti, que es lo que esta mal y es que ya no se como remediarlo podrias ayudarme.

Gracias de antemano por la ayuda

Por krakxp

1 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.