
March 14th, 2013, 04:41 AM
|
|
Registered User
|
|
Join Date: Mar 2013
Posts: 7
Time spent in forums: 58 m 53 sec
Reputation Power: 0
|
|
|
Challenge for you lot with nothing to do. I'm stuck.
Okay so i'm at work and haven't got much to do today so i found an online challenge. The challenge was using a console or your preferred choice, create a two- dimensional boolean array, which can either be true-Land and false-Water. Now you have to create a life like randomly generated world, with continents and what not or whatever you feel like. Okay so this is what i got so far:
Code:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace RandomLand { public class Land { int continents; public struct Piece { public int ContinentID; public bool Type; public int expansionNumber; } Piece[,] generatedLand = new Piece[50, 50]; public Piece[,] GenerateLand() { Random random = new Random(); continents = random.Next(2, 6); for (int i = 0; i < continents; i++) { // GenerateContinent int X = random.Next(0, 50); int Y = random.Next(0, 50); generatedLand[X, Y].Type = true; generatedLand[X, Y].ContinentID = i; generatedLand[X, Y].expansionNumber = 0; } generatedLand = ExpandContinents(continents); return generatedLand; } public Piece[,] ExpandContinents(int continents) { for (int continent = 0; continent < continents; continent++) { Random random = new Random(); int numberOfExpantions = 3; for (int Expanding = 0; Expanding < numberOfExpantions; Expanding++) { for (int y = 0; y < 50; y++) { for (int x = 0; x < 50; x++) { if (generatedLand[x, y].Type == true && generatedLand[x, y].expansionNumber < numberOfExpantions && generatedLand[x, y].ContinentID == continent) // BeginExpansion { if (!(x + 1 >= 50)) { generatedLand[x + 1, y].ContinentID = continent; generatedLand[x + 1, y].Type = true; generatedLand[x + 1, y].expansionNumber++; } if (!(x - 1 < 0)) { generatedLand[x - 1, y].ContinentID = continent; generatedLand[x - 1, y].Type = true; generatedLand[x - 1, y].expansionNumber++; } if (!(y + 1 >= 50)) { generatedLand[x, y + 1].ContinentID = continent; generatedLand[x, y + 1].Type = true; generatedLand[x, y + 1].expansionNumber++; } if (!(y - 1 < 0)) { generatedLand[x, y - 1].ContinentID = continent; generatedLand[x, y - 1].Type = true; generatedLand[x, y - 1].expansionNumber++; } generatedLand[x, y].expansionNumber++; break; } } } } } return generatedLand; } } }
Now, its all in c-sharp, and i randomly placed center points for continents, then i just wanted to expand these center points without randomly generating first but thats when i got stuck.
|