[Resolvido] organizar array
Quero organizar um array com cartas.
As cartas são representadas por strings.
exemplo, P10: 10 de paus
Quero organizar da seguinte forma:
Primeiro todas as cartas de paus.
Depois ouro
depois espadas
depois copas
As cartas estão contidas no array minhasCartas
var o_paus:Array = new Array();
var o_ouro:Array = new Array();
var o_copas:Array = new Array();
var o_espadas:Array = new Array();
var o_naipe:String = new String();
var o_paus_f:Array = new Array();
var o_ouro_f:Array = new Array();
var o_copas_f:Array = new Array();
var o_espadas_f:Array = new Array();
function organizar_mao(){
for each(var o_carta01:String in minhasCartas){
o_naipe= o_carta01.substring(0,1);
switch(o_naipe){
case "P":
o_paus.push(o_carta01);
break;
case "O":
o_ouro.push(o_carta01);
break;
case "C":
o_copas.push(o_carta01);
break;
case "E":
o_espadas.push(o_carta01);
break;
}
}
var o_f:Function = function (item:* , index:* , ar:Array):void{
trace("no o_f"+item);
o_naipe = item.substring(0,1);
trace("o_naipe"+o_naipe);
switch(o_naipe){
case "P":
o_paus_f[item] = valorCarta(item);
trace("P"+item);
break;
case "O":
o_ouro_f[item] = valorCarta(item);
trace("O"+item);
break;
case "C":
o_copas_f[item] = valorCarta(item);
trace("C"+item);
break;
case "E":
o_espadas_f[item] = valorCarta(item);
trace("E"+item);
break;
}
};
//trace("x1x1"+o_copas_f)
/*o_paus:Array = new Array();
var o_ouro:Array = new Array();
var o_copas:Array = new Array();
var o_espadas:Array = new Array();*/
o_paus.forEach(o_f);
o_ouro.forEach(o_f);
o_copas.forEach(o_f);
o_espadas.forEach(o_f);
o_paus_f.sort() ;
o_ouro_f.sort() ;
o_copas_f.sort() ;
o_espadas_f.sort();
trace("o_copas_f"+o_copas_f.length);//o_copas_f0
trace(o_copas_f);//nada
trace("o_paus_f"+o_paus_f.length);//o_paus_f0
trace("o_paus_f");//o_paus_f
trace("PA" + o_paus_f["PA"]);//PA100
trace("line 1322:" + o_paus_f + " " + o_ouro_f + " " + o_copas_f + " " + o_espadas_f );
o_paus = [];
o_ouro = [];
o_copas= [];
o_espadas=[];
var o_f02:Function = function (item:* , index:* , ar:Array){
switch(index){
case "P":
o_paus.push(item);
break;
case "O":
o_ouro.push(item);
break;
case "C":
o_copas.push(item);
break;
case "E":
o_espadas.push(item);
break;
}
}
o_paus_f.forEach(o_f02);
o_ouro_f.forEach(o_f02);
o_copas_f.forEach(o_f02);
o_espadas_f.forEach(o_f02);
minhasCartas = [];
trace(o_copas + "AA");
trace(o_paus + "AA2");
trace(o_ouro + "AA3");
trace(o_espadas + "A4A");
for each(var carta_02:String in o_copas){
minhasCartas.push(carta_02);
trace(1);
}
for each(var carta_03:String in o_paus){
minhasCartas.push(carta_03);
trace(2);
}
for each(var carta_04:String in o_ouro){
minhasCartas.push(carta_04);
trace(3);
}
for each(var carta_05:String in o_espadas){
minhasCartas.push(carta_05);
trace(4);
}
trace(minhasCartas + "@@");
}
eu fiz essa função para funcionar da seguinte maneira:
Pega todas as cartas e joga para naipes diferente.
Depois cada atravéz de um foreach joga para outro array, e pega item como indice e valorCarta(item) como valor.
Eu fiz isso para poder organizar com o sort()
Depois com uma função coloca os arrays no formato certo.
Depois com 4 for each coloca os valores dos 4 arrays
Só que não funciona, essa função só zera minhasCartas
Tem algo que eu possa modificar no script ou fazer de um geito melhor?
não entendeu?
Eu quero que isso aconteça:
trace(minhasCartas);//C3,O5,P2,PA,E3,C7,EK
organizar_mao();
trace(minhasCartas);//O5,P2,PA,C3,C7,E3,EK
Eu quero que o array esteja organizado pelos naipes de forma que tenha um contraste(cartas de um naipe vermelho, preto,vermelho, preto)
E em ordem crescente.
Eu não sei se posso fazer pelo sort()
, depois atravéz de uma função(que ta funcionando) organiza as imagens das cartas.
Discussão (2)
Carregando comentários...