public SingleNode SpawnNewUpgradeNode() { var randyMcgee = new System.Random(); int randomx = randyMcgee.Next(0, 16); int randomz = randyMcgee.Next(0, 16); int randomPanelInt = randyMcgee.Next(0, 4); Panel randomPanel = Panel.front; //Setting random next dead side switch (randomPanelInt) { case 0: randomPanel = Panel.front; break; case 1: randomPanel = Panel.left; break; case 2: randomPanel = Panel.right; break; case 3: randomPanel = Panel.back; break; } SingleNode randomNode = new SingleNode(randomPanel, randomx, randomz); //check against current snake nodes for (int snakeNodeIndex = 0; snakeNodeIndex < Snake.snakeNodes.Length; snakeNodeIndex++) { if (randomNode.IsEqual(Snake.snakeNodes[snakeNodeIndex])) { return(SpawnNewUpgradeNode()); } } //check against current dead nodes for (int deadNodeIndex = 0; deadNodeIndex < deadNodes.Length; deadNodeIndex++) { if (randomNode.IsEqual(deadNodes[deadNodeIndex])) { return(SpawnNewUpgradeNode()); } } ColorUpgrade(randomNode); return(randomNode); }
public SingleNode GetRandomDeadNode() { var randyMcgee = new System.Random(); int randomx = randyMcgee.Next(0, 16); int randomz = randyMcgee.Next(0, 16); int randomPanelInt = randyMcgee.Next(0, 4); Panel randomPanel = Panel.front; //Setting random next dead side switch (randomPanelInt) { case 0: randomPanel = Panel.front; break; case 1: randomPanel = Panel.left; break; case 2: randomPanel = Panel.right; break; case 3: randomPanel = Panel.back; break; } SingleNode randomNode = new SingleNode(randomPanel, randomx, randomz); //check against current upgrade node if (randomNode.IsEqual(Snake.upgradeNode)) { return(GetRandomDeadNode()); } //check around snakeNode head if (randomNode.IsEqual(new SingleNode(Snake.snakeNodes[0].panel, Snake.snakeNodes[0].x + 1, Snake.snakeNodes[0].z)) || randomNode.IsEqual(new SingleNode(Snake.snakeNodes[0].panel, Snake.snakeNodes[0].x - 1, Snake.snakeNodes[0].z)) || randomNode.IsEqual(new SingleNode(Snake.snakeNodes[0].panel, Snake.snakeNodes[0].x, Snake.snakeNodes[0].z + 1)) || randomNode.IsEqual(new SingleNode(Snake.snakeNodes[0].panel, Snake.snakeNodes[0].x, Snake.snakeNodes[0].z - 1))) { return(GetRandomDeadNode()); } //check against current snake nodes for (int snakeNodeIndex = 0; snakeNodeIndex < Snake.snakeNodes.Length; snakeNodeIndex++) { if (randomNode.IsEqual(Snake.snakeNodes[snakeNodeIndex])) { return(GetRandomDeadNode()); } } //check against current dead nodes for (int deadNodeIndex = 0; deadNodeIndex < deadNodes.Length; deadNodeIndex++) { if (randomNode.IsEqual(deadNodes[deadNodeIndex])) { return(GetRandomDeadNode()); } } SingleNode[] tempDeadNodes = new SingleNode[deadNodes.Length + 1]; for (int i = 0; i < deadNodes.Length; i++) { tempDeadNodes[i] = deadNodes[i]; } tempDeadNodes[tempDeadNodes.Length - 1] = randomNode; deadNodes = tempDeadNodes; return(randomNode); }