public Node(Point location, blockTypes type, Color col, int value, int index) { this.location = location; blockType = type; nodeColor = col; moveValue = value; this.index = index; }
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; } } }