Verán, estoy realizando una aplicación en el que recojo cierta información de elementos desde un XML. La aplicación consiste en arrastrar los elementos a un tablero en el escenario que tendrá las dimensiones que haya indicado el usuario al iniciar la aplicación. Bien, hasta ahí todo bien. El tablero que se crea se corresponde con una Matriz de N x M (array bidimensional) la cual me ayuda a saber que elementos hay en el tablero y dónde están situados, si hay un número 0 en tablero[i][j], es que está libre esa posición, y si hay un 1 es que está ocupada.
El problema viene cuando voy a colocar un elemento en el tablero. Al soltar el elemento que estoy arrastrando en el tablero debe comprobarse si esa posicion en la Matriz está a 0 para poder colocarlo, pero la comprobación ' tablero[i][j] == 0 ' siempre me da como resultado 'false' porque a la hora de comprobar con el trace, tablero[i][j] me muestra unsigned.
Os pongo el código para crear el tablero:
Código ActionScript :
class Parque { // PROPIEDADES private var n:Number; //dimension x del tablero del parque private var m:Number; //dimension y del tablero del parque private var tablero:Array = null; //Matriz (array de arrays) del parque (0 casilla vacia, 1 casilla ocupada) private var suelo:MovieClip = null; private var fichas:Array = null; // CONSTRUCTOR public function Parque (tamX:Number, tamY:Number) { n = tamX; m = tamY; //creamos el tablero y lo inicializamos todo a 0 tablero = new Array(n); var i:Number; var j:Number; for (i = 0; i < n; i++){ tablero[i] = new Array(m); for (j = 0; j < m; j++){ tablero[i][j] = 0; } } } ... }
Y el código que comprueba si el sitio está vacio:
Código ActionScript :
//Comprobar si hay hueco libre al situarlo public function haySitio(posx:Number, posy:Number, ancho:Number, alto:Number):Boolean { var valido:Boolean = true; var i:Number = 0; var j:Number = 0; var xx:Number; var yy:Number; xx = (posx - getPosX()) / 20; yy = (posy - getPosY()) / 20; var posxfinal:Number = xx + ancho; var posyfinal:Number = yy + alto; for (i = xx; i < posxfinal; i++) { for (j = yy; j < posyfinal; j++) { valido = valido && (tablero[i][j] == 0); } } return (valido); }
Espero que me puedan echar una mano, gracias!