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

Tworzenie map kafelkowych

Object Storage Arubacloud
0 głosów
749 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ź 710 wizyt
pytanie zadane 16 października 2018 w C i C++ przez karkul Użytkownik (620 p.)
+5 głosów
1 odpowiedź 375 wizyt
pytanie zadane 12 kwietnia 2017 w Nasze projekty przez VirtualMember Pasjonat (15,790 p.)
0 głosów
1 odpowiedź 222 wizyt
pytanie zadane 19 lipca 2017 w C i C++ przez WireNess Stary wyjadacz (11,240 p.)

92,568 zapytań

141,420 odpowiedzi

319,624 komentarzy

61,956 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...