
March 14th, 2013, 04:43 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.
|