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

statki C++ - problem z przyleganiem innych statków

0 głosów
722 wizyt
pytanie zadane 13 listopada 2018 w C i C++ przez Mariusz Maik Nowicjusz (220 p.)
Cześć,

tworzę obiektowo grę w statki, w których można statki umieszczać także po skosie, statki są wielkości: 2,3,4,5.

W jaki sposób najprościej mogę sprawdzić czy obok statku który chcę umieścić nie ma innego statku(obok każdego statku pola dookoła muszą być wolne)? Bo robienie tylu ifów jest trochę bez sensu :/

2 odpowiedzi

+1 głos
odpowiedź 13 listopada 2018 przez Bondrusiek Maniak (61,440 p.)
wybrane 13 listopada 2018 przez Mariusz Maik
 
Najlepsza

Witam,

nie wiem jak reprezentujesz plansze. Dajmy na to że tak

char board[10][10] = {
'e', 'e', '1', 'e', '2', '2', ....
'e', 'e', 'e','e', 'e', 'e', ....
'3','3','3',....
....
'4','4','e','e','e',...
'e','e','4','4','e',...
};

Następnie tworzysz funkcje które sprawdzają czy względem jakiegoś punktu sąsiedni punkt jest pusty np:

bool isLeftEmpty(int x, int y)
{
 if( board[x-1][y] == 'e')
     return true;
return false;
}

bool isRightEmpty(int x, int y);
bool isUpEmpty(int x, int y);
bool isDownEmpty(int x, int y);
bool isTopLeftEmpty(int x, int y);
bool isTopRightEmpty(int x, int y);
bool isBottomLeftEmpty(int x, int y);
bool isBottomRightEmpty(int x, int y);

Następnie możesz wykorzystać te funkcje do sprawdzenia pol w zależności od potrzeb. Np

if(isLeftEmpty(x,y) && isRightEmpty(x,y) && isDownEmpty(x,y))
{
// zrob cos 
}

 

1
komentarz 13 listopada 2018 przez Mariusz Maik Nowicjusz (220 p.)
Dzięki, bardzo mi to rozjaśniło problem! :D
+1 głos
odpowiedź 13 listopada 2018 przez VirtualMember Pasjonat (15,790 p.)

https://pl.wikipedia.org/wiki/S%C4%85siedztwo_(automaty_kom%C3%B3rkowe)

Będą to 4 bądź 8 ifów w zależności od tego, które sąsiedztwo wybierzesz, czy to dużo? Być może nie wygląda najestetyczniej ale w gruncie rzeczy twoim celem jest właśnie takie sąsiadowanie. Możesz oczywiście trikowo zapchać te ify w jakąś sprytną pętlę albo zrobić funkcję pomocniczą, ale to będzie tylko zabieg estetyczny.

Podobne pytania

0 głosów
2 odpowiedzi 1,676 wizyt
pytanie zadane 16 stycznia 2019 w Nasze projekty przez Mavannkas Bywalec (2,290 p.)
0 głosów
3 odpowiedzi 2,098 wizyt
pytanie zadane 20 maja 2016 w C i C++ przez mat07 Nowicjusz (160 p.)
+7 głosów
5 odpowiedzi 8,133 wizyt
pytanie zadane 14 października 2015 w Nasze projekty przez emSon Stary wyjadacz (10,480 p.)

93,427 zapytań

142,421 odpowiedzi

322,649 komentarzy

62,787 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

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...