public Figura BuscarFigura(int x, int y) { Figura resul = null; int cont = 0; bool flag = false; while (ListaFiguras != null && flag == false) { Figura fig = ListaFiguras[cont]; Ubicacion[] ubi = fig.GetLista(); for (int i = 0; i < ubi.Length; i++) { int ubiX = ubi[i].GetX(); int ubiY = ubi[i].GetY(); if (ubiX == x && ubiY == y) { resul = fig; flag = true; break; } } cont++; } return(resul); }
public bool VerificarOperacion(int[,] tablero, int num, int coordenadaX, int coordenadaY) { Figura fig = BuscarFigura(coordenadaX, coordenadaY); int operacion = fig.GetOperacion(); int acumulado = fig.GetAcumulado(); int meta = fig.GetNumMeta(); if (operacion == 1) { if (fig.GetTipo() != "solo") { int totalSuma = acumulado + num; if ((totalSuma <= meta) && (fig.GetOcupado() < 3)) { return(true); } if ((totalSuma == meta) && (fig.GetOcupado() == 3)) { return(true); } else { return(false); } } else { return(true); } } else { int totalMul = acumulado * num; if ((totalMul <= meta) && (fig.GetOcupado() < 1)) { return(true); } if ((totalMul == meta) && (fig.GetOcupado() == 1)) { return(true); } else { return(false); } } }
public bool VerificarFigura(int [,] tablero, int num, int coordenadaX, int coordenadaY) { Figura fig = BuscarFigura(coordenadaX, coordenadaY); Ubicacion[] listaPosiciones = fig.GetLista(); //busca posiciones de una figura en el tablero for (int i = 0; i < listaPosiciones.Length; i++) { Ubicacion ubi = listaPosiciones[i]; int x = ubi.GetX(); int y = ubi.GetY(); int numTablero = tablero[x, y]; //busca numero en el tablero en una posicion if (num == numTablero) //verifica si no se repiten numeros en la figura { return(false); } } return(true); }
public void SetListaFiguras(Figura fig) { int cont = 0; bool bandera = false; while (bandera != true) { if (ListaFiguras[cont] == null) { ListaFiguras[cont] = fig; bandera = true; } else { cont++; } } }
public void ModificarFigura(int x, int y, int numero, int aumentarOquitar) //1 = aumentar , 2 = quitar { int cont = 0; bool flag = false; while (ListaFiguras != null && flag == false) { Figura fig = ListaFiguras[cont]; Ubicacion[] ubi = fig.GetLista(); for (int i = 0; i < ubi.Length; i++) { int ubiX = ubi[i].GetX(); int ubiY = ubi[i].GetY(); if (ubiX == x && ubiY == y) { if ((ListaFiguras[cont].GetOperacion() == 1) && aumentarOquitar == 1) { ListaFiguras[cont].AumentarAcumuladoSum(numero); ListaFiguras[cont].AumentarOcupado(1); } if ((ListaFiguras[cont].GetOperacion() == 1) && aumentarOquitar == 2) { ListaFiguras[cont].DisminuirAcumuladoSum(numero); ListaFiguras[cont].DisminuirOcupado(1); } if ((ListaFiguras[cont].GetOperacion() == 2) && aumentarOquitar == 1) { ListaFiguras[cont].AumentarAcumuladoMul(numero); ListaFiguras[cont].AumentarOcupado(1); } if ((ListaFiguras[cont].GetOperacion() == 2) && aumentarOquitar == 2) { ListaFiguras[cont].DisminuirAcumuladoMul(numero); ListaFiguras[cont].DisminuirOcupado(1); } flag = true; break; } } cont++; } }
public void ImprimirOperaciones() { int cont = 0; while (ListaFiguras[cont] != null) { Figura f = ListaFiguras[cont]; int operacion = f.GetOperacion(); string numMeta = f.GetNumMeta().ToString(); if (operacion == 1) { Console.WriteLine(numMeta + "+" + " ; "); } else { Console.WriteLine(numMeta + "x" + " ; "); } cont++; } }
public void ImprimirFiguras() { int cont = 0; while (ListaFiguras[cont] != null) { Figura f = ListaFiguras[cont]; string tipoFigura = f.GetTipo(); Ubicacion[] ubicaciones = f.GetLista(); Console.WriteLine("Figura:" + tipoFigura); int cont2 = 0; while (cont2 < ubicaciones.Length) { Ubicacion ubi = ubicaciones[cont2]; string str1 = ubi.GetX().ToString(); string str2 = ubi.GetY().ToString(); Console.WriteLine("Ubicaciones: " + "[" + str1 + "," + str2 + "]"); cont2++; } cont++; } }
public bool ComprobarEspacio(int[,] matrizFiguras, string figura, int orientacion, int pivoteX, int pivoteY) //pivote es par de donde empieza la figura { int ubi1 = 0; int ubi2 = 0; int ubi3 = 0; int ubi4 = 0; if (figura == "cuadrado") { if (pivoteY + 1 < N && pivoteX + 1 < N) //Que no se salga de los limites { ubi1 = matrizFiguras[pivoteX, pivoteY]; ubi2 = matrizFiguras[pivoteX, pivoteY + 1]; ubi3 = matrizFiguras[pivoteX + 1, pivoteY]; ubi4 = matrizFiguras[pivoteX + 1, pivoteY + 1]; if ((ubi1 == 0) && (ubi2 == 0) && (ubi3 == 0) && (ubi4 == 0)) //Que no haya casillas ocupadas { FigurasArray[pivoteX, pivoteY] = NumFigura; FigurasArray[pivoteX, pivoteY + 1] = NumFigura; FigurasArray[pivoteX + 1, pivoteY] = NumFigura; FigurasArray[pivoteX + 1, pivoteY + 1] = NumFigura; Ubicacion u1 = new Ubicacion(pivoteX, pivoteY); Ubicacion u2 = new Ubicacion(pivoteX, pivoteY + 1); Ubicacion u3 = new Ubicacion(pivoteX + 1, pivoteY); Ubicacion u4 = new Ubicacion(pivoteX + 1, pivoteY + 1); Ubicacion[] list = new Ubicacion[4]; list[0] = u1; list[1] = u2; list[2] = u3; list[3] = u4; int nOper = GenerarNumeroOperacion(1); Figura fig = new Figura(list, "cuadrado", nOper, 1, 0, 0); SetListaFiguras(fig); NumFigura++; return(true); } else { return(false); } } else { return(false); } } if (figura == "ele") { if (orientacion == 1 || orientacion == 2 || orientacion == 3 || orientacion == 4) { if (orientacion == 1) { if (pivoteX + 2 < N && pivoteY + 1 < N) { ubi1 = matrizFiguras[pivoteX, pivoteY]; ubi2 = matrizFiguras[pivoteX + 1, pivoteY]; ubi3 = matrizFiguras[pivoteX + 2, pivoteY]; ubi4 = matrizFiguras[pivoteX + 2, pivoteY + 1]; if ((ubi1 == 0) && (ubi2 == 0) && (ubi3 == 0) && (ubi4 == 0)) //Que no haya casillas ocupadas { FigurasArray[pivoteX, pivoteY] = NumFigura; FigurasArray[pivoteX + 1, pivoteY] = NumFigura; FigurasArray[pivoteX + 2, pivoteY] = NumFigura; FigurasArray[pivoteX + 2, pivoteY + 1] = NumFigura; Ubicacion u1 = new Ubicacion(pivoteX, pivoteY); Ubicacion u2 = new Ubicacion(pivoteX + 1, pivoteY); Ubicacion u3 = new Ubicacion(pivoteX + 2, pivoteY); Ubicacion u4 = new Ubicacion(pivoteX + 2, pivoteY + 1); Ubicacion[] list = new Ubicacion[4]; list[0] = u1; list[1] = u2; list[2] = u3; list[3] = u4; int nOper = GenerarNumeroOperacion(1); Figura fig = new Figura(list, "ele", nOper, 1, 0, 0); SetListaFiguras(fig); NumFigura++; return(true); } else { return(false); } } else { return(false); } } if (orientacion == 2) { if (pivoteX + 2 < N && pivoteY - 1 > 0) { ubi1 = matrizFiguras[pivoteX, pivoteY]; ubi2 = matrizFiguras[pivoteX + 1, pivoteY]; ubi3 = matrizFiguras[pivoteX + 2, pivoteY]; ubi4 = matrizFiguras[pivoteX + 2, pivoteY - 1]; if ((ubi1 == 0) && (ubi2 == 0) && (ubi3 == 0) && (ubi4 == 0)) //Que no haya casillas ocupadas { FigurasArray[pivoteX, pivoteY] = NumFigura; FigurasArray[pivoteX + 1, pivoteY] = NumFigura; FigurasArray[pivoteX + 2, pivoteY] = NumFigura; FigurasArray[pivoteX + 2, pivoteY - 1] = NumFigura; Ubicacion u1 = new Ubicacion(pivoteX, pivoteY); Ubicacion u2 = new Ubicacion(pivoteX + 1, pivoteY); Ubicacion u3 = new Ubicacion(pivoteX + 2, pivoteY); Ubicacion u4 = new Ubicacion(pivoteX + 2, pivoteY - 1); Ubicacion[] list = new Ubicacion[4]; list[0] = u1; list[1] = u2; list[2] = u3; list[3] = u4; int nOper = GenerarNumeroOperacion(1); Figura fig = new Figura(list, "ele", nOper, 1, 0, 0); SetListaFiguras(fig); NumFigura++; return(true); } else { return(false); } } else { return(false); } } if (orientacion == 3 || orientacion == 4) //ver si en realidad mata dos pajaros de un tiro { if (pivoteX + 2 < N && pivoteY + 1 < N) { if (orientacion == 3) { ubi1 = matrizFiguras[pivoteX, pivoteY]; ubi2 = matrizFiguras[pivoteX, pivoteY + 1]; ubi3 = matrizFiguras[pivoteX + 1, pivoteY + 1]; ubi4 = matrizFiguras[pivoteX + 2, pivoteY + 1]; if ((ubi1 == 0) && (ubi2 == 0) && (ubi3 == 0) && (ubi4 == 0)) //Que no haya casillas ocupadas { FigurasArray[pivoteX, pivoteY] = NumFigura; FigurasArray[pivoteX, pivoteY + 1] = NumFigura; FigurasArray[pivoteX + 1, pivoteY + 1] = NumFigura; FigurasArray[pivoteX + 2, pivoteY + 1] = NumFigura; Ubicacion u1 = new Ubicacion(pivoteX, pivoteY); Ubicacion u2 = new Ubicacion(pivoteX, pivoteY + 1); Ubicacion u3 = new Ubicacion(pivoteX + 1, pivoteY + 1); Ubicacion u4 = new Ubicacion(pivoteX + 2, pivoteY + 1); Ubicacion[] list = new Ubicacion[4]; list[0] = u1; list[1] = u2; list[2] = u3; list[3] = u4; int nOper = GenerarNumeroOperacion(1); Figura fig = new Figura(list, "ele", nOper, 1, 0, 0); SetListaFiguras(fig); NumFigura++; return(true); } else { return(false); } } if (orientacion == 4) { ubi1 = matrizFiguras[pivoteX, pivoteY]; ubi2 = matrizFiguras[pivoteX, pivoteY + 1]; ubi3 = matrizFiguras[pivoteX + 1, pivoteY]; ubi4 = matrizFiguras[pivoteX + 2, pivoteY]; if ((ubi1 == 0) && (ubi2 == 0) && (ubi3 == 0) && (ubi4 == 0)) //Que no haya casillas ocupadas { FigurasArray[pivoteX, pivoteY] = NumFigura; FigurasArray[pivoteX, pivoteY + 1] = NumFigura; FigurasArray[pivoteX + 1, pivoteY] = NumFigura; FigurasArray[pivoteX + 2, pivoteY] = NumFigura; Ubicacion u1 = new Ubicacion(pivoteX, pivoteY); Ubicacion u2 = new Ubicacion(pivoteX, pivoteY + 1); Ubicacion u3 = new Ubicacion(pivoteX + 1, pivoteY); Ubicacion u4 = new Ubicacion(pivoteX + 2, pivoteY); Ubicacion[] list = new Ubicacion[4]; list[0] = u1; list[1] = u2; list[2] = u3; list[3] = u4; int nOper = GenerarNumeroOperacion(1); Figura fig = new Figura(list, "ele", nOper, 1, 0, 0); SetListaFiguras(fig); NumFigura++; return(true); } else { return(false); } } } else { return(false); } } } else { return(false); } } if (figura == "linea") { if (orientacion == 1) //vertical { if (pivoteX + 3 < N) { ubi1 = matrizFiguras[pivoteX, pivoteY]; ubi2 = matrizFiguras[pivoteX + 1, pivoteY]; ubi3 = matrizFiguras[pivoteX + 2, pivoteY]; ubi4 = matrizFiguras[pivoteX + 3, pivoteY]; if ((ubi1 == 0) && (ubi2 == 0) && (ubi3 == 0) && (ubi4 == 0)) //Que no haya casillas ocupadas { FigurasArray[pivoteX, pivoteY] = NumFigura; FigurasArray[pivoteX + 1, pivoteY] = NumFigura; FigurasArray[pivoteX + 2, pivoteY] = NumFigura; FigurasArray[pivoteX + 3, pivoteY] = NumFigura; Ubicacion u1 = new Ubicacion(pivoteX, pivoteY); Ubicacion u2 = new Ubicacion(pivoteX + 1, pivoteY); Ubicacion u3 = new Ubicacion(pivoteX + 2, pivoteY); Ubicacion u4 = new Ubicacion(pivoteX + 3, pivoteY); Ubicacion[] list = new Ubicacion[4]; list[0] = u1; list[1] = u2; list[2] = u3; list[3] = u4; int nOper = GenerarNumeroOperacion(1); Figura fig = new Figura(list, "linea", nOper, 1, 0, 0); SetListaFiguras(fig); NumFigura++; return(true); } else { return(false); } } else { return(false); } } if (orientacion == 2) //horizontal { if (pivoteY + 3 < N) { ubi1 = matrizFiguras[pivoteX, pivoteY]; ubi2 = matrizFiguras[pivoteX, pivoteY + 1]; ubi3 = matrizFiguras[pivoteX, pivoteY + 2]; ubi4 = matrizFiguras[pivoteX, pivoteY + 3]; if ((ubi1 == 0) && (ubi2 == 0) && (ubi3 == 0) && (ubi4 == 0)) //Que no haya casillas ocupadas { FigurasArray[pivoteX, pivoteY] = NumFigura; FigurasArray[pivoteX, pivoteY + 1] = NumFigura; FigurasArray[pivoteX, pivoteY + 2] = NumFigura; FigurasArray[pivoteX, pivoteY + 3] = NumFigura; Ubicacion u1 = new Ubicacion(pivoteX, pivoteY); Ubicacion u2 = new Ubicacion(pivoteX, pivoteY + 1); Ubicacion u3 = new Ubicacion(pivoteX, pivoteY + 2); Ubicacion u4 = new Ubicacion(pivoteX, pivoteY + 3); Ubicacion[] list = new Ubicacion[4]; list[0] = u1; list[1] = u2; list[2] = u3; list[3] = u4; int nOper = GenerarNumeroOperacion(1); Figura fig = new Figura(list, "linea", nOper, 1, 0, 0); SetListaFiguras(fig); NumFigura++; return(true); } else { return(false); } } else { return(false); } } } if (figura == "te") { if (orientacion == 1) { if (pivoteY - 1 >= 0 && pivoteY + 1 < N && pivoteX + 1 < N) { ubi1 = matrizFiguras[pivoteX, pivoteY]; ubi2 = matrizFiguras[pivoteX + 1, pivoteY]; ubi3 = matrizFiguras[pivoteX + 1, pivoteY - 1]; ubi4 = matrizFiguras[pivoteX + 1, pivoteY + 1]; if ((ubi1 == 0) && (ubi2 == 0) && (ubi3 == 0) && (ubi4 == 0)) //Que no haya casillas ocupadas { FigurasArray[pivoteX, pivoteY] = NumFigura; FigurasArray[pivoteX + 1, pivoteY] = NumFigura; FigurasArray[pivoteX + 1, pivoteY - 1] = NumFigura; FigurasArray[pivoteX + 1, pivoteY + 1] = NumFigura; Ubicacion u1 = new Ubicacion(pivoteX, pivoteY); Ubicacion u2 = new Ubicacion(pivoteX + 1, pivoteY); Ubicacion u3 = new Ubicacion(pivoteX + 1, pivoteY - 1); Ubicacion u4 = new Ubicacion(pivoteX + 1, pivoteY + 1); Ubicacion[] list = new Ubicacion[4]; list[0] = u1; list[1] = u2; list[2] = u3; list[3] = u4; int nOper = GenerarNumeroOperacion(1); Figura fig = new Figura(list, "te", nOper, 1, 0, 0); SetListaFiguras(fig); NumFigura++; return(true); } else { return(false); } } } if (orientacion == 2) { if (pivoteY + 2 < N && pivoteX + 1 < N) { ubi1 = matrizFiguras[pivoteX, pivoteY]; ubi2 = matrizFiguras[pivoteX, pivoteY + 1]; ubi3 = matrizFiguras[pivoteX, pivoteY + 2]; ubi4 = matrizFiguras[pivoteX + 1, pivoteY + 1]; if ((ubi1 == 0) && (ubi2 == 0) && (ubi3 == 0) && (ubi4 == 0)) //Que no haya casillas ocupadas { FigurasArray[pivoteX, pivoteY] = NumFigura; FigurasArray[pivoteX, pivoteY + 1] = NumFigura; FigurasArray[pivoteX, pivoteY + 2] = NumFigura; FigurasArray[pivoteX + 1, pivoteY + 1] = NumFigura; Ubicacion u1 = new Ubicacion(pivoteX, pivoteY); Ubicacion u2 = new Ubicacion(pivoteX, pivoteY + 1); Ubicacion u3 = new Ubicacion(pivoteX, pivoteY + 2); Ubicacion u4 = new Ubicacion(pivoteX + 1, pivoteY + 1); Ubicacion[] list = new Ubicacion[4]; list[0] = u1; list[1] = u2; list[2] = u3; list[3] = u4; int nOper = GenerarNumeroOperacion(1); Figura fig = new Figura(list, "te", nOper, 1, 0, 0); SetListaFiguras(fig); NumFigura++; return(true); } else { return(false); } } } else { return(false); } } if (figura == "snake") //la figura que parece una serpiente { if (orientacion == 1) //horizontal { if (pivoteY - 1 >= 0 && pivoteY + 1 < N && pivoteX + 1 < N) { ubi1 = matrizFiguras[pivoteX, pivoteY]; ubi2 = matrizFiguras[pivoteX + 1, pivoteY]; ubi3 = matrizFiguras[pivoteX + 1, pivoteY - 1]; ubi4 = matrizFiguras[pivoteX, pivoteY + 1]; if ((ubi1 == 0) && (ubi2 == 0) && (ubi3 == 0) && (ubi4 == 0)) //Que no haya casillas ocupadas { FigurasArray[pivoteX, pivoteY] = NumFigura; FigurasArray[pivoteX + 1, pivoteY] = NumFigura; FigurasArray[pivoteX + 1, pivoteY - 1] = NumFigura; FigurasArray[pivoteX, pivoteY + 1] = NumFigura; Ubicacion u1 = new Ubicacion(pivoteX, pivoteY); Ubicacion u2 = new Ubicacion(pivoteX + 1, pivoteY); Ubicacion u3 = new Ubicacion(pivoteX + 1, pivoteY - 1); Ubicacion u4 = new Ubicacion(pivoteX, pivoteY + 1); Ubicacion[] list = new Ubicacion[4]; list[0] = u1; list[1] = u2; list[2] = u3; list[3] = u4; int nOper = GenerarNumeroOperacion(1); Figura fig = new Figura(list, "snake", nOper, 1, 0, 0); int index = ListaFiguras.Length; SetListaFiguras(fig); NumFigura++; return(true); } else { return(false); } } } if (orientacion == 2) //vertical { if (pivoteY + 1 < N && pivoteX + 2 < N) { ubi1 = matrizFiguras[pivoteX, pivoteY]; ubi2 = matrizFiguras[pivoteX + 1, pivoteY]; ubi3 = matrizFiguras[pivoteX + 1, pivoteY + 1]; ubi4 = matrizFiguras[pivoteX + 2, pivoteY + 1]; if ((ubi1 == 0) && (ubi2 == 0) && (ubi3 == 0) && (ubi4 == 0)) //Que no haya casillas ocupadas { FigurasArray[pivoteX, pivoteY] = NumFigura; FigurasArray[pivoteX + 1, pivoteY] = NumFigura; FigurasArray[pivoteX + 1, pivoteY + 1] = NumFigura; FigurasArray[pivoteX + 2, pivoteY + 1] = NumFigura; Ubicacion u1 = new Ubicacion(pivoteX, pivoteY); Ubicacion u2 = new Ubicacion(pivoteX + 1, pivoteY); Ubicacion u3 = new Ubicacion(pivoteX + 1, pivoteY + 1); Ubicacion u4 = new Ubicacion(pivoteX + 2, pivoteY + 1); Ubicacion[] list = new Ubicacion[4]; list[0] = u1; list[1] = u2; list[2] = u3; list[3] = u4; int nOper = GenerarNumeroOperacion(1); Figura fig = new Figura(list, "snake", nOper, 1, 0, 0); int index = ListaFiguras.Length; SetListaFiguras(fig); NumFigura++; return(true); } else { return(false); } } } } if (figura == "solo") { ubi1 = matrizFiguras[pivoteX, pivoteY]; if (ubi1 == 0) { FigurasArray[pivoteX, pivoteY] = NumFigura; Ubicacion u1 = new Ubicacion(pivoteX, pivoteY); Ubicacion[] list = new Ubicacion[1]; list[0] = u1; Figura fig = new Figura(list, "solo", 0, 1, 0, 0); int index = ListaFiguras.Length; SetListaFiguras(fig); NumFigura++; return(true); } else { return(false); } } if (figura == "dos") { if (orientacion == 1) //vertical { if (pivoteX + 1 < N) { ubi1 = matrizFiguras[pivoteX, pivoteY]; ubi2 = matrizFiguras[pivoteX + 1, pivoteY]; if (ubi1 == 0 && ubi2 == 0) { FigurasArray[pivoteX, pivoteY] = NumFigura; FigurasArray[pivoteX + 1, pivoteY] = NumFigura; Ubicacion u1 = new Ubicacion(pivoteX, pivoteY); Ubicacion u2 = new Ubicacion(pivoteX + 1, pivoteY); Ubicacion[] list = new Ubicacion[2]; list[0] = u1; list[1] = u2; int nOper = GenerarNumeroOperacion(2); Figura fig = new Figura(list, "dos", nOper, 2, 1, 0); int index = ListaFiguras.Length; SetListaFiguras(fig); NumFigura++; return(true); } else { return(false); } } else { return(false); } } if (orientacion == 2) //horizontal { if (pivoteY + 1 < N) { ubi1 = matrizFiguras[pivoteX, pivoteY]; ubi2 = matrizFiguras[pivoteX, pivoteY + 1]; if (ubi1 == 0 && ubi2 == 0) { FigurasArray[pivoteX, pivoteY] = NumFigura; FigurasArray[pivoteX, pivoteY + 1] = NumFigura; Ubicacion u1 = new Ubicacion(pivoteX, pivoteY); Ubicacion u2 = new Ubicacion(pivoteX, pivoteY + 1); Ubicacion[] list = new Ubicacion[2]; list[0] = u1; list[1] = u2; int nOper = GenerarNumeroOperacion(2); Figura fig = new Figura(list, "dos", nOper, 2, 1, 0); int index = ListaFiguras.Length; SetListaFiguras(fig); NumFigura++; return(true); } else { return(false); } } else { return(false); } } } return(false); }