Example #1
0
 public Node(Point location, blockTypes type, Color col, int value, int index)
 {
     this.location = location;
     blockType     = type;
     nodeColor     = col;
     moveValue     = value;
     this.index    = index;
 }
Example #2
0
        private void createLevel()
        {
            nodes     = new Queue <Node>();
            openList  = new List <int>();
            closeList = new List <int>();
            blockTypes bt        = blockTypes.NONE;
            Random     rand      = new Random();
            int        moveValue = 0;
            int        num       = 0;

            startPoint = generateRanPoint(rand);
            endPoint   = generateRanPoint(rand);
            int maxI = pictureBox1.Width / TILE_SIZE;
            int maxJ = pictureBox1.Height / TILE_SIZE;

            while (startPoint == endPoint)
            {
                endPoint = generateRanPoint(rand);
            }
            int index = 0;

            Color col;

            for (int i = 0; i < maxI; i++)
            {
                for (int j = 0; j < maxJ; j++)
                {
                    if (i == 0 || j == 0 || i == maxI - 1 || j == maxJ - 1)
                    {
                        bt        = blockTypes.BORDER;
                        col       = Color.DarkBlue;
                        moveValue = -1;
                    }
                    else
                    {
                        num = 0;
                        num = rand.Next(4) + 2;

                        switch (num)
                        {
                        case 2:
                            bt        = blockTypes.FIELD;
                            col       = Color.Wheat;
                            moveValue = 5;
                            break;

                        case 3:
                            bt        = blockTypes.FOREST;
                            col       = Color.ForestGreen;
                            moveValue = 15;
                            break;

                        case 4:
                            bt        = blockTypes.MOUNTAIN;
                            col       = Color.SaddleBrown;
                            moveValue = 35;
                            break;

                        default:
                            bt        = blockTypes.VOID;
                            col       = Color.Purple;
                            moveValue = 50;
                            break;
                        }
                    }
                    if (bt != blockTypes.NONE)
                    {
                        Node node = new Node(new Point(i, j), bt, col, moveValue, index);

                        nodes.Enqueue(node);
                        if (i == startPoint.X && j == startPoint.Y)
                        {
                            startNode = node;
                        }
                        if (i == endPoint.X && j == endPoint.Y)
                        {
                            endNode = node;
                        }
                    }

                    index++;
                }
            }
            int startIndex = 0;
            int endIndex   = 0;

            drawLevel();
            //NEIGHBORS
            foreach (Node node in nodes)
            {
                node.getNeighbors(nodes);
                if (node.Location == startPoint)
                {
                    startIndex = node.Index;
                }
                if (node.Location == endPoint)
                {
                    endIndex = node.Index;
                }
            }
        }