Exemplo n.º 1
0
        public int[] estPlacable(Case c, int isPlayerTurn)
        {
            int[] coordonnees = { -1, -1 };

            if (!isInArray(c)) return coordonnees;
            if (!c.isEmpty() || !gameboard[c.x, c.y].isEmpty()) return coordonnees;

            if (noPlaceLeft-- <= 0) return coordonnees;
            if (!c.placePiece(isPlayerTurn == 0 ? false : true))
            {
                noPlaceLeft++;  //En cas de problème, on annule le coup précédent
                return coordonnees;
            }

            coordonnees[0] = c.x;
            coordonnees[1] = c.y;

            return coordonnees;
        }
Exemplo n.º 2
0
        //public bool ligneDroiteVerticale(Case c, bool sens)
        //{
        //    Case[] neightbours = new Case[2];
        //    neightbours[0] = recupererCase(c.x - 1, c.y);
        //    neightbours[1] = recupererCase(c.x + 1, c.y);
        //    neightbours[2] = recupererCase(c.x, c.y - 1);
        //    neightbours[3] = recupererCase(c.x, c.y + 1);
        //    if (countStraightLine < 0 || countStraightLine > 4) return false;
        //    if (sens = DroiteHorizontaleVersDroite)
        //    {
        //        if (neightbours[0].x != -1 && gameboard[c.x, c.y].isSameColor(neightbours[0]))
        //            if (ligneDroiteVerticale(neightbours[0], DroiteHorizontale))
        //                return true;
        //        if (neightbours[1].x != -1 && gameboard[c.x, c.y].isSameColor(neightbours[1]))
        //            if (ligneDroiteVerticale(neightbours[1], DroiteHorizontale))
        //                return true;
        //    }
        //    else
        //    {
        //        if (neightbours[2].x != -1 && gameboard[c.x, c.y].isSameColor(neightbours[2]))
        //            if (ligneDroiteVerticale(neightbours[2], DroiteVerticale))
        //                return true;
        //        if (neightbours[3].x != -1 && gameboard[c.x, c.y].isSameColor(neightbours[3]))
        //            if (ligneDroiteVerticale(neightbours[3], DroiteVerticale))
        //                return true;
        //    }
        //    return false;
        //}
        private bool ligneDiagonale(Case c, Case caseOriginale)
        {
            if (!c.isEmpty() && c.isSameColor(caseOriginale))
            {
                countDiagonaleLine++;
                Case newCase;
                try
                {
                    newCase = gameboard[c.x - (caseOriginale.x - c.x), c.y - (caseOriginale.y - c.y)];
                } catch (IndexOutOfRangeException) {
                    return false;
                }
                //Console.WriteLine(c.x + " " + caseOriginale.x + " " + (c.x - (caseOriginale.x - c.x)) + " " + c.y + " " + caseOriginale.y + " " + (c.y - (caseOriginale.y - c.y))+"   "+countDiagonaleLine);
                ligneDiagonale(newCase, c);
            }

            if (countDiagonaleLine == 4)
            {
                return true;
            }
            return false;
        }
Exemplo n.º 3
0
        private bool ligneDroite(Case c, Case caseOriginale)
        {
            if (!c.isEmpty() && c.isSameColor(caseOriginale))
            {
                countStraightLine++;
                Case newCase;
                try
                {
                    newCase = gameboard[c.x - (caseOriginale.x - c.x), c.y - (caseOriginale.y - c.y)];
                }
                catch (IndexOutOfRangeException)
                {
                    return false;
                }
                ligneDroite(newCase, c);
            }

            if (countStraightLine == 4)
            {
                return true;
            }
            return false;
        }
Exemplo n.º 4
0
        public bool estPlacable(Case c, int isPlayerTurn)
        {
            if (!isInArray(c)) return false;
            if (!c.isEmpty() || !gameboard[c.x, c.y].isEmpty()) return false;

            if (noPlaceLeft-- <= 0) return false;
            if (!c.placePiece(isPlayerTurn == 0 ? false : true))
            {
                noPlaceLeft++;  //En cas de problème, on annule le coup précédent
                return false;
            }

            return true;
        }