Problem wygląda następująco. Utworzyłem sobie generator mapy, który wygląda następująco*
#include <iostream>
#include <time.h>
#include <stdlib.h>
using namespace std;
const int MAX = 15;
char plansza[15][15];
const char znaki[3] = {'#', '.', 'A'};
void rysuj()
{
for(int i = 0; i<14; i++)
{
for(int j = 0; j<14; j++)
{
cout<<plansza[i][j];
}
cout<<endl;
}
}
void generuj(char tab[MAX][MAX])
{
srand( time( NULL ) );
for(int i = 0 ; i<15; i++)
{
for(int m = 0 ; m<15 ;m++)
{
tab[i][m] = znaki[(rand()%3)];
}
}
}
int main()
{
generuj(plansza);
rysuj();
system("pause");
return 0;
}
I pojawia się następujący problem, otóż losuje się nawet zbyt losowo niż bym chciał. Chciałbym jednak, żeby na mapie był jakiś porządek, a nie "śmietnik". I o to właśnie pytam. Jak uporządkować to w jakieś biomy? Ostatnio widziałem jak ktoś dodawał linka do pracy magisterskiej, ale dla mnie nie było to wielką pomocą, bo gra jest konsolowa, a teoria wiele mi tutaj nie pomaga, bo dotyczy gier graficznych.
Od razu mówię, że automaty komórkowe itd. raczej nie wchodzą w grę, bo nie mam na tyle umiejętności, żeby zaimplementować do gry coś takiego :).
*tak, wiem, wiem
system("pause");
i te sprawy, ale to jest taki "prototyp" programu, który stworzyłem chcąc sprawdzić, czy działa, w grze tego nie ma, ale szybciej w takim małym programie jest jednak użyć systemowych komend.
EDIT:
Więc założenia są dosyć proste i tutaj faktycznie ich nie zamieściłem, bo to tylko prototyp - za co przepraszam :).
To tak:
Chciałbym, żeby losowały się jeziora i rzeki jako kilka znaków logicznie połączonych, a nie tylko losowo porozmieszczanych. Najlepiej byłoby gdyby można było ustalić mniej więcej proporcje generowania świata tzn. chodzi o to, żeby rzek było mniej niż terenu po którym się "chodzi".
No i w późniejszych wersjach chciałem zrobić losowanie biomów, bo gra ma być taką strategią, w której można będzie stawiać budynki do wydobywania surowców itd. No, ale do tego dojdę już sam kiedy będę wiedział jak można uporządkować losowanie elementów.