Pomoc przy tworzeniu gry - kwestie organizacyjne etc.

0

Cześć,
umiem dość dobrze język C++ i obecnie chciałbym napisać swoją pierwszą prostą grę 2D. Do tej pory pisałem głównie proste aplikacje w konsoli więc kompletnie nie mam pojęcia jak to wszystko zorganizować więc chciałem prosić o małą pomoc :-). Grę chciałbym stworzyć przy użyciu biblioteki SFML.

Pierwszy problem, który muszę rozwiązać to stworzenie jakiegoś mechanizmu tworzenia planszy. Chodzi o to, że w zależności od poziomu trudności będzie kilka planszy - różniących się wielkością (ale nigdy nie przekraczających wielkości standardowego monitora) - a na każdej planszy wiele obiektów (droga, po której będą poruszać się obiekty, przeszkody etc.). Tak jak wstawienie jednego dużego obrazka nie nastręcza większych problemów tak rozmieszczenie na nim innych obiektów jest już kłopotliwe - w końcu gdzieś muszę przechowywać informacje w którym miejscu ma być danych obiekt...
I teraz pytanie do was jak najlepiej to zrobić? Gdzie i w jaki sposób przechowywać dane o umieszczonych obiektach na planszy?

0
vector<vector<your_block_class>> Map;
vector<your_base_entity_class> Objects;
void Game::DrawMap();
void Game::DrawObjects();
namespace sfk{
	namespace Random{
		void Initialize(c_int32 = 0);
		c_int32 Next();
		c_int32 Next(c_int32);
		c_int32 NextInt32(c_int32, c_int32);
		c_int64 NextInt64(c_int64, c_int64);
		c_double NextDouble();
		c_float NextFloat();
		c_string NextString(c_int32, c_int32, c_int32);
	}
}

void sfk::Random::Initialize(c_int32 Seed){
	srand( Seed ? Seed : time(NULL));
}
sfk::c_int32 sfk::Random::Next(){
	return rand();
}
sfk::c_int32 sfk::Random::Next(c_int32 Max){
	return Next() % Max;
}
sfk::c_int32 sfk::Random::NextInt32(c_int32 Min, c_int32 Max){
	return rand() % ((Max+1)-Min) + Min;
}
sfk::c_int64 sfk::Random::NextInt64(c_int64 Min, c_int64 Max){
	return rand() % ((Max+1)-Min) + Min;
}
sfk::c_double sfk::Random::NextDouble(){
	return (double)Next() / (double)RAND_MAX;
}
sfk::c_float sfk::Random::NextFloat(){
	return (float)NextDouble();
}
sfk::c_string sfk::Random::NextString(c_int32 Min, c_int32 Max, c_int32 Size){
	string Ret;
	for(int32 i = 0; i < Size; ++i) Ret += NextInt32(Min, Max);
	return Ret;
}
0

@spartanPAGE dzięki za pomoc, ale pozwól że głupio zapytam czemu ma służyć podany przez Ciebie kod i jak on ma się do mojego pytania?
Do losowania liczb losowych mogę użyć klasy mt19937.

Mi chodzi o sposób przechowywania informacji gdzie dany obiekt ma się znajdywać i jak ma zostać wyświetlona plansza.
Przykładowo mam kilka plików graficznych, reprezentujących dany obiekt na planszy. Teraz pytanie jak tworzyć plansze (czy robić to bezpośrednio w C++ - ręcznie czy jakoś inaczej?).

Dodatkowo jest taki problem, że przykładowo:

  • Jeden plik to będzie tło całej planszy - z nim nie ma problemu - jest zawsze jeden i jest wyświetlony na całej powierzchni okna.
  • inny plik dot. drogi po której mogą poruszać się inne obiekty. Droga może iść w pionie i w poziomie (widok na planszę będzie z góry), ale powinna być zawsze w tym samym, zgodnie z ustalonych schematem.

Następnie będą obiekty, które będą poruszać się tylko po drodze - więc nie mogą być w losowym miejscu na planszy tylko muszą być umieszczone w pewnym konkretnym miejscu na drodze.
Następnie na drodze będą pułapki - jak się wybierze złą trasę to można np. w paść do dziury, która będzie na drodze.
itd.

1 użytkowników online, w tym zalogowanych: 0, gości: 1