• 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

Object Storage Arubacloud
0 głosów
477 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,370 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,294 wizyt
pytanie zadane 16 stycznia 2019 w Nasze projekty przez Mavannkas Bywalec (2,290 p.)
0 głosów
3 odpowiedzi 1,799 wizyt
pytanie zadane 20 maja 2016 w C i C++ przez mat07 Nowicjusz (160 p.)
+7 głosów
5 odpowiedzi 7,481 wizyt
pytanie zadane 14 października 2015 w Nasze projekty przez emSon Stary wyjadacz (10,480 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 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!

...