Question Beginner C# question

Exploit

New member
Joined
May 28, 2015
Messages
2
Programming Experience
Beginner
Picture 1.
jdodrugog.png

Picture 2.
odvojeni.png

Picture 3.
odvojeni3.png

Sorry for my English in advance.
I made method for checking if all pieces are in base or goal if yes it returns true,now i need another method.
If its like on Picture 1. i need to change number of throws to 3 ,if its ordered like on Picture 2,3 i can allow only 1 throw.
I got 4 goalPositions and 4 piecePositions,and need to check if pieces are ordered on them from 54-51 path positions(path is array of 55 fields 0-54) ,if yes return true if not return false.
I am new to C# never had chance to work with order checking till now.
Any help is appreciated.
I was trying to do it with 3 int lists goalPositions (populated with 51,52,53,54 path positions),piecePositions(populated with pieces positions with getPosition()),and piecesOnGoal. but no luck with that.
ill add some code. part of player class with that lists and method for checking pieces in goal or base

C#:
class Player    {
        protected PieceSet[] pieces;
        Color color;
        int numberOfThrows;
        Dice dice;
        public List<int> goalPositions;
        public List<int> piecePositions;
        public List<int> piecesOnGoal;


        public enum Color
        {
            Yellow, Green, Blue, Red
        }


        public Player(Color color)
        {
            int[] path = new int[55];
            this.color = color;
            dice = new Dice();
            numberOfThrows = 3;
            switch (color)
            {
                case Color.Yellow:
                    path = BoardHelper.getYellowPath();
                    break;
                case Color.Green:
                    path = BoardHelper.getGreenPath();
                    break;
                case Color.Blue:
                    path = BoardHelper.getBluePath();
                    break;
                case Color.Red:
                    path = BoardHelper.getRedPath();
                    break;
            }
            pieces = new PieceSet[4];
            pieces[0] = new PieceSet(path, 0);
            pieces[1] = new PieceSet(path, 1);
            pieces[2] = new PieceSet(path, 2);
            pieces[3] = new PieceSet(path, 3);


            piecePositions = new List<int>(4);
            piecePositions.Add(pieces[0].getPosition());
            piecePositions.Add(pieces[1].getPosition());
            piecePositions.Add(pieces[2].getPosition());
            piecePositions.Add(pieces[3].getPosition());


            goalPositions = new List<int>(4);
            goalPositions.Add(51);
            goalPositions.Add(52);
            goalPositions.Add(53);
            goalPositions.Add(54);


           piecesOnGoal =new List<int>();
        }
            
        public bool isAllPiecesInBaseOrGoal()
        {
            if ((pieces[0].getPosition() < 4 || pieces[0].getPosition() > 50) &&
               (pieces[1].getPosition() < 4 || pieces[1].getPosition() > 50) &&
               (pieces[2].getPosition() < 4 || pieces[2].getPosition() > 50) &&
               (pieces[3].getPosition() < 4 || pieces[3].getPosition() > 50))
                return true;
            else
                return false;
        }

and this is how i was thinking to solve my problem ,check if goalPositions contains piecePositions if yes add that position into piecesOnGoal ...now i need somehow to check are that piecesOnGoal are ordered if yes return true if not false.
I am open for any suggestion.

C#:
 public bool isAllPiecesAreOrderedInGoal()
        {
             
            for (int i = 0; i < 4; i++)
            {
                if (goalPositions.Contains(piecePositions[i])) 
                {
                    piecesOnGoal.Add(piecePositions[i]);
                }
                
                
            }
}
 
Top Bottom