//static bool CheckCoord(Coordinats.Coord c, int d) //{ // int x, y; // x = c.GetX(); // y = c.GetY(); // try // { // switch (d) // { // case 0: //Nort // if (iPole[x - 1, y] != 1 && iPole[x - 1, y] != 2 && iPole[x - 1, y] != 3 && iPole[x - 1, y] != 4 && iPole[x, y - 1] != 9) // { // return true; // } // else // return false; // case 1: //East // if (iPole[x, y + 1] != 1 && iPole[x, y + 1] != 2 && iPole[x, y + 1] != 3 && iPole[x, y + 1] != 4 && iPole[x, y - 1] != 9) // { // return true; // } // else // return false; // case 2: //South // if (iPole[x + 1, y] != 1 && iPole[x + 1, y] != 2 && iPole[x + 1, y] != 3 && iPole[x + 1, y] != 4 && iPole[x, y - 1] != 9) // { // return true; // } // else // return false; // case 3: //West // if (iPole[x, y - 1] != 1 && iPole[x, y - 1] != 2 && iPole[x, y - 1] != 3 && iPole[x, y - 1] != 4 && iPole[x, y - 1] != 9) // { // return true; // } // else // return false; // } // return false; // } // catch(System.IndexOutOfRangeException ex) // { // return false; // } //} static bool CheckFCoord(Coordinats.Coord c, int d) { int x, y; x = c.GetX(); y = c.GetY(); try { switch (d) { case 0: //Nort if (fPole[x - 1, y].GetVal() == Field.cVoid) { return(true); } else { return(false); } case 1: //East if (fPole[x, y + 1].GetVal() == Field.cVoid) { return(true); } else { return(false); } case 2: //South if (fPole[x + 1, y].GetVal() == Field.cVoid) { return(true); } else { return(false); } case 3: //West if (fPole[x, y - 1].GetVal() == Field.cVoid) { return(true); } else { return(false); } } } catch (System.Exception ex) { return(false); } return(false); }
//static void GenForPath(int iPathLen, int iCoun) //{ // int iFTecDir, iFTecPov, iFTecPath = 0; // iFTecPath = iFTecPath + iCoun; // for (int p = 0; p < iPathLen; p++ ) // { // using (System.IO.StreamWriter file = new System.IO.StreamWriter(Environment.CurrentDirectory + @"\log.txt", true)) // { // file.WriteLine("TEST {0} {1} {2}", p, iCountPov, iCountEndPath); // } // iFTecDir = ElementPath.CheckDir(rndDir.Next(0, 101)); // iFTecPov = ElementPath.CheckPov(rndPov.Next(0,101)); // /*Устанавливаем направление*/ // ep[iFTecPath].SetDirection(iFTecDir); // /*Устанавливаем поворот*/ // ep[iFTecPath].SetPovorot(iFTecPov); // if (iFTecPov == 0) // { // if (CheckCoord(ep[iFTecPath].Cord, iFTecDir) == true) // { // /*Установить элемент пути*/ // ep[iFTecPath].SetCoord(SetPosPath(ep[iFTecPath].Cord, iFTecPath, iFTecDir)); // iPathLen--; // bLuck = true; // } // else // { // p--; // bLuck = false; // } // } // else // { // if (iCountPov != 0) // { // if (iCountEndPath > iFTecPath) // { // for (int p2 = 0; p2 < iFTecPov; p2++) // { // GenForPath(GenSymplePath(iFTecPath + 1, ep[iFTecPath].Cord.GetX(), ep[iFTecPath].Cord.GetY()), iFTecPath+1); // } // iCountEndPath--; // } // iCountPov--; // } // } // } //} static Coordinats.Coord SetPosFPath(Coordinats.Coord c, int iPath, int d, int p) { int x, y; x = c.GetX(); y = c.GetY(); switch (d) { case 0: //iPole[x - 1, y] = 1; fPole[x, y].SetValue(/*Field.cCUPer*/ GetNextEl(ep[iPath].GetPrevDirInt(), p, d), ep[iPath]); //= 1; ep[iPath].SetCoord(c); Console.WriteLine("ZN {0} DIR 0 NEW X{1} NEW Y{2} X{3} Y{4}", 1, x - 1, y, x, y); return(new Coordinats.Coord(x - 1, y)); case 1: //iPole[x, y + 1] = 2; fPole[x, y].SetValue(GetNextEl(ep[iPath].GetPrevDirInt(), p, d), ep[iPath]); ep[iPath].SetCoord(c); Console.WriteLine("ZN {0} DIR 1 NEW X{1} NEW Y{2} X{3} Y{4}", 2, x, y + 1, x, y); return(new Coordinats.Coord(x, y + 1)); case 2: //iPole[x + 1, y] = 3; fPole[x, y].SetValue(GetNextEl(ep[iPath].GetPrevDirInt(), p, d), ep[iPath]); ep[iPath].SetCoord(c); Console.WriteLine("ZN {0} DIR 2 NEW X{1} NEW Y{2} X{3} Y{4}", 3, x + 1, y, x, y); return(new Coordinats.Coord(x + 1, y)); case 3: //iPole[x, y - 1] = 4; fPole[x, y].SetValue(GetNextEl(ep[iPath].GetPrevDirInt(), p, d), ep[iPath]); ep[iPath].SetCoord(c); Console.WriteLine("ZN {0} DIR 3 NEW X{1} NEW Y{2} X{3} Y{4}", 4, x, y - 1, x, y); return(new Coordinats.Coord(x, y - 1)); } return(new Coordinats.Coord(c)); }
static Coordinats.Coord SetPosPath(Coordinats.Coord c, int iPath, int d) { int x, y; x = c.GetX(); y = c.GetY(); switch (d) { case 0: //iPole[x - 1, y] = 1; iPole[x, y] = 1; ep[iPath].SetCoord(c); Console.WriteLine("ZN {0} DIR 0 NEW X{1} NEW Y{2} X{3} Y{4}", 1, x - 1, y, x, y); return(new Coordinats.Coord(x - 1, y)); case 1: //iPole[x, y + 1] = 2; iPole[x, y] = 2; ep[iPath].SetCoord(c); Console.WriteLine("ZN {0} DIR 1 NEW X{1} NEW Y{2} X{3} Y{4}", 2, x, y + 1, x, y); return(new Coordinats.Coord(x, y + 1)); case 2: //iPole[x + 1, y] = 3; iPole[x, y] = 3; ep[iPath].SetCoord(c); Console.WriteLine("ZN {0} DIR 2 NEW X{1} NEW Y{2} X{3} Y{4}", 3, x + 1, y, x, y); return(new Coordinats.Coord(x + 1, y)); case 3: //iPole[x, y - 1] = 4; iPole[x, y] = 4; ep[iPath].SetCoord(c); Console.WriteLine("ZN {0} DIR 3 NEW X{1} NEW Y{2} X{3} Y{4}", 4, x, y - 1, x, y); return(new Coordinats.Coord(x, y - 1)); } return(new Coordinats.Coord(c)); }