Gra w statki-ogólne zagadnienie

0

Witajcie, znów po jakiejś przerwie od C++ natchnęło mnie na napisanie czegoś w tym języku. Wymyśliłem sobie grę w statki, w konsoli. Wszystko ładnie pięknie, tylko zastanawia mnie sam mechanizm działania tej gry. Mam kilka pomysłów na to, jednakże nie bardzo wiem jak wykryć czy dany fragment statku, dajmy na to trójmasztowca znajduje się w 3 osobnych polach?
Np. A1, B1, C1 to jeden statek. Wpadłem na pomysł, żeby każdą kratkę z "siatki" 10x10 określić w enumatorach zmiennymi a1, b1,c1 itd lecz nadal nie bardzo wiem jak to sklecić do kupy. To samo tyczyło by się w późniejszym etapie napisania funkcji odpowiedzialnej za sprawdzenie trafienia statku. Nie podaję kodu, bo nie o to mi chodzi. Chciałbym poznać wizję kilku bardziej zaawansowanych osób, jakby się do tego zabrały.

@Pisane z telefonu...

0
Krzywy Szczur napisał(a):

... nie bardzo wiem jak wykryć czy dany fragment statku, dajmy na to trójmasztowca znajduje się w 3 osobnych polach?

To bardzo proste jak sugeruje nazwa trójmasztowca zajmuje on 3 pola gdyby na przykład dwa z nich byliby wspólne to byłby to dwumasztowiec stad będzie to 3 osobnych pola.

Może chodziło ci o trafiony/zatopiony? Niestety pytanie jest nie wyraźne.

0

Może trochę nie dokładnie zapytałem. Precyzując nie wiem jak sprawdzić czy a1, b1, c1 na ten moment są 3-ma składowymi elementami jednego statku.

0

Czy może to być trzy różnych? Na ile pamiętam dotykanie się burtami jest zabronione.
Jeżeli w twojej wersji tak nie jest to przypisz statkom Id, wszystkie jego elementy niech mają ten sam Id.

2

Np. A1, B1, C1 to jeden statek. Wpadłem na pomysł, żeby każdą kratkę z "siatki" 10x10 określić w enumatorach zmiennymi a1, b1,c1 itd

Jesli A1, B1 oraz C1 (jako osobne enumy) mają składać się na jeden statek, to... nope, nope, nope.

Rozwiązaniem dobrym byłoby za to coś w stylu:

enum FieldType {
  ftFregata,
  ftJakisStatekZTrzeciejRzeszy,
  ftZaglowiec
};

// ... gdzieś dalej ...
FieldType mapa[10][10];

// ... gdzieś dalej ...
// załóżmy, że fregata zajmuje dwa pola:
mapa[5][5] = ftFregata;
mapa[5][6] = ftFregata;

Myślę, że ta wizualizacja jednocześnie odpowiada na zadane przez Ciebie pytanie.

0

@Patryk27
Podsłeś bardzo fajny kod, ogólny zamysł miałem podobny, aby przypisywać każdemu polu określone id. Mam tylko taki mały niedosyt, że sam nie wymyśliłem takiego kodu :)
Jednakże na pewno przyda mi się ten mini przykład i go wykorzystam.
Dodatkowo ten kod aż się prosi, żeby go kontynuować obiektowo.

Co do tych enumów, to stworzyłem ich 10(setPosA, setPosB itd) a w każdym z nich zmienne a1=1, a2=2, b1=11, b2=13 i tak do stu. Chciałem to jakoś wykorzystać, jednakże widzę, że tablica wielowymiarowa to będzie lepszy pomysł.

Dzięki. W razie problemów odezwę się jeszcze.

1 użytkowników online, w tym zalogowanych: 0, gości: 1