„Baza? Odbiór…”

Witam wszystkich czytelników, dziś przy tak pięknych wiosennych promieniach słońca i blasku księżyca, zajmiemy się stworzeniem obszaru reprezentującego w przyszłości teren naszej bazy. Głównie będzie chodziło o zwiększanie punktów życia za przebywanie w strefie wyznaczonej jako baza. Życie będzie zwiększane o jeden punkt co jedna sekundę spędzoną w tym obszarze. Ten teren będzie oznaczony zielonym prostokątem.

Zacznijmy od narysowania na naszej mapie prostokąta wypełnionego zielonym kolorem.

private Texture home;

Dodajemy nową zmienną, która będzie odpowiedzialna za przechowywanie zielonego prostokąta.

pixmap = new Pixmap(200,200, Pixmap.Format.RGBA8888);
pixmap.setColor(Color.GREEN);
pixmap.fillRectangle(0,0,200,200);
home = new Texture(pixmap);
pixmap.dispose();

Następnie jak z poprzednimi elementami, rysowanymi na ekranie postępujemy i tym razem. Obszar bazy na chwilę obecną będzie wielkości 200px na 200px. Teraz pozostaje już tylko wyświetlić na ekranie naszą zmienną klasy Texture, czynimy to w nadpisywanej metodzie render().

batch.draw(home,2400,2400, home.getWidth(),home.getHeight());

Uzyskaliśmy dokładnie taki efekt jaki założyliśmy na początku. Teraz pozostaje zająć się zwiększeniem życia w chwili, kiedy bohater spędził dłuższy czas niż 1s w bazie. Uwzględniamy fakt, że gdy wyjdzie z tego obszaru zmienna licząca czas jest zerowana.

private float timeHome;

Zatem zaczynamy od utworzenia zmiennej, która będzie odpowiedzialna za trzymanie czasu, a następnie przejdźmy do metody create().

timeHome = 0;

W której zerujemy wartość naszej nowej zmiennej. Czas na kod odpowiedzialny za inkrementację (zwiększenie o 1) poziomu życia bohatera.

		if(player.x > 2400 && player.x < 2600){
			if(player.y > 2400 && player.y < 2600){
				if(player.getHp() < 100){
					timeHome += Gdx.graphics.getDeltaTime();
					if(timeHome > 1){
						player.setHp(player.getHp() + 1);
						timeHome = 0;
					}
				}
			}else{
				timeHome = 0;
			}
		}else{
			timeHome = 0;
		}

Zatem sprawdzamy na początek w 2 pierwszych warunkach czy bohater znajduję się w obszarze naszej bazy, jeśli tak to sprawdzany jest kolejny warunek, czy życie bohatera jest mniejsze od 100. W chwili gdy mamy spełniony warunek, następuje dodanie różnicy czasu między ostatnią, a obecną klatką, zapisywaną w zmiennej timeHome. W chwili gdy zsumowany czas jest większy od 1s, następuje zwiększenie życia o 1pkt i wyzerowanie czasu. Wyzerowanie również następuje w chwili, kiedy gracz opuści obszar bazy.

Screen wyświetlający w konsoli, efekt działania naszego nowego kodu. Jak widzimy co 1 sekundę następuje zwiększenie o jeden punkt życia naszego bohatera.

 

Podsumowanie

Dziś udało się nam stworzyć prowizoryczną, ale działającą według założeń bazę, której obecnym zadaniem jest zwiększanie punktów życia naszego bohatera. W kolejnym wpisie związanym z grą zajmiemy się stworzeniem interfejsy.

Na dziś to wszystko, pragnę jeszcze zaznaczyć, że zdjęcie wyróżniające wpis przedstawia Zamek w Niedzicy (mam do tego miejsca pewien sentyment).

Pozdrawiam,

sirmarbug

Podziel się ze znajomymi