• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Tworzenie map kafelkowych

VPS Starter Arubacloud
0 głosów
738 wizyt
pytanie zadane 17 lipca 2018 w Grafika i multimedia przez karkul Użytkownik (620 p.)
Witam!

Tworzę grę 2d i potrzebuję do niej mapy, ale nie mam pojęcia o tworzeniu map. Mógłby mi ktoś wytłumaczyć lub podać linka do jakiegoś kursu w jaki sposób tworzyć mapy kafelkowe

2 odpowiedzi

+1 głos
odpowiedź 17 lipca 2018 przez Tnifey Pasjonat (24,190 p.)
No to mi powiedz czy to mają być kafelki kwadratowe, izometryczne, sześciokątne, trójkąty? Bardzo polecam te artykuły, jeśli chodzi o ten topic :P

https://www.redblobgames.com/grids/hexagons/

http://www-cs-students.stanford.edu/~amitp/game-programming/grids/
komentarz 17 lipca 2018 przez lateM Pasjonat (17,660 p.)

Oj, tak. Jeśli ktoś ma tylko chęci, to po tym kursie będzie wiedział wszystko na temat siatek. Obserwowałem kiedyś, jestem pełen podziwu dla autora laugh polecam.

komentarz 18 lipca 2018 przez karkul Użytkownik (620 p.)

@Tnifey,  Kafelki mają być kwadratowe . 

0 głosów
odpowiedź 17 lipca 2018 przez VirtualMember Pasjonat (15,790 p.)

Po pierwsze potrzebujesz mapy kafelkowej, a po drugie implementacji. Jeśli chcesz stworzyć mapy to możesz albo ręcznie (w pliku txt wypisywać numerki) albo użyć jakiegoś generatora. Sam kiedyś napisałem takowy projekt na kolanie więc możesz skorzystać z gotowego:

https://forum.pasja-informatyki.pl/243762/edytor-map-kafelkowych-c-c%23-cr

Jeśli chodzi o implementację, to potrzebujesz klasy kafelka i mapy. W mapie przyda się jakiś kontener danych na kafelki (np. std::vector jeśli mowa o C++) i musisz wczytywać te dane z pliku tekstowego i w zależności od tego jaki aktualnie zasysasz numerek to tworzysz taką taki kafel na określonej pozycji.

Tutaj masz przykładowy kod stworzenia mapy kafelkowej, lecz z domyślną teksturą (stanem). Wystarczy, że przerobisz delikatnie jego działanie i będzie śmigać

 

void MapManager::createWorld(uint8_t defaultStateNumber)
	{
		for (int j = 0; j < unitWorldSize.y; j++)
		{
			for (int i = 0; i < unitWorldSize.x; i++)
			{
				map.emplace_back(sf::Vector2i{i,j}, cellDimensions, defaultStateNumber);
			}
		}
	}

PS:

mapa przechowuje kafelki (Cell)

unitPosition (i oraz j) to numery pozycji, na których leży kafelek, do tego musisz dorzucić wymiary pojedynczego kafelka, dlatego dorzucam konstruktor Cell'a

object.setTexture(*mv::TypesManager::getInstance().getAtlasCache().get("data/textures/cellAtlas.png"));

		if (!TypesManager::getInstance().isTypeExist(stateNumber))
		{
			Logger::Log(constants::error::stateSystem::STATE_DOES_NOT_EXIST, Logger::STREAM::BOTH, Logger::TYPE::ERROR);
			state = constants::defaults::DEFAULT_STATE_NUMBER;
		}
		else
		{
			state = stateNumber;
			object.setTextureRect(sf::IntRect(stateNumber*cellDimensions.x, 0, cellDimensions.x, cellDimensions.y));
		}
		object.setPosition(unitPosition.x*cellDimensions.x, unitPosition.y*cellDimensions.y);
		object.setOrigin(object.getGlobalBounds().width / 2, object.getGlobalBounds().height / 2);

Pełny kod znajdziesz tutaj:

github

Podobne pytania

0 głosów
1 odpowiedź 648 wizyt
pytanie zadane 16 października 2018 w C i C++ przez karkul Użytkownik (620 p.)
+5 głosów
1 odpowiedź 373 wizyt
pytanie zadane 12 kwietnia 2017 w Nasze projekty przez VirtualMember Pasjonat (15,790 p.)
0 głosów
1 odpowiedź 209 wizyt
pytanie zadane 19 lipca 2017 w C i C++ przez WireNess Stary wyjadacz (11,240 p.)

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...