Witam,
Ostatnio z pomocą jednego z użytkowników tego forum(dzięki Sasik!), udało mi się napisać grę używając OOP. Gra była dość prosta i polegała na skreślaniu kresek z określonych wierszy. Ten kto skreślił ostatnią kreskę - wygrywał.
Ponieważ miałem braki i w sumie nadal mam (zdrowie nie dopisuje a zaległości duże na uczelni...) chciałbym was prosić o pomoc w skumaniu tego tematu. Nie oczekuję, że ktoś napisze za mnie cały program bo ten program pisze dla siebie samego jednak mam kilka problemów natury projektowej i nie tylko:(
A więc tak:
Chciałbym napisać grę "kamień, papier, nożyce" - napisać ją obiektowo.
Pierwsze pytanie jest takie, czy nadal mogę uzywać starego wydania symfonii C++. W święta będę w domu i mogę ją zabrać do kumpla. Wiem, że obecnie nie jest zgodna ze standardem jednak czy różnice są aż tak powalające (poza np using namespace std;), że nie warto w ogóle czytać tej książki i koniecznie kupować nową symfonię C++ Standard?
Drugie pytanie dotyczy bezpośrednio już same gry.
Zakładam, że będę miał tylko dwie klasy:
- klasa Gra
- klasa Gracz
Klasa gra powinna sterować całym przebiegiem gry(np poprzez funkcję graj), powinna pozwolić wykonać graczowi ruch, zliczać punkty i sprawdzać kto wygrał. Być może powinna też pytać gracza o imię. Mam problem z tym aby zdecydować czy np lepszym rozwiązanie jest np zaprojektowanie w klasie gra funkcji graj, która sterowałaby całym przebiegiem gry od początku do końca i wtedy wystarczy tylko stworzyć obiekt w main np na zasadzie:
int main()
{
Gra gra;
gra.graj();
}
W ten sposób działał poprzedni program. Teraz jednak zastanawiam się czy to najlepsze rozwiązanie czy też np funkcja maina powinna pytać graczy o imię i np czy obiekt gracz1 i gracz2 powinny być stworzone w klasie gra czy może bezpośrednio w funkcji main()? Dodatkowo muszę myśleć czy dana zmienna/funkcja powinna być publiczna czy prywatna nawet jeśli w tym programie nie ma to znaczenia ale chyba o to chodzi w OOP. Nie wiem czy to najlepszy pomysł bo sam program można by zawrzeć w funkcji main() bez tworzenia dodatkowych funkcji ale to pewnie nieetyczne :). Wiem, że trochę to chaotyczne ale chcę to skumać co by na egzaminie przed prowadzącym nie świecić gałkami ocznymi... Ehh wolałbym się tego uczyć niż całek wielokrotnych etc.
Ah i zapomniał bym dodać, obecnie jeszcze nie wiem nic o dziedziczeniu klas, typach wyliczeniowych etc. Chociaż widziałem i sprawdzałem program teog typu napisany obiektowo który mieścił się w "kilku liniach" kody a był napisany obiektowo. Szukałem też tutoriali w necie co np pokazały by właśnie na przykładzie jakiejś gry jak się do tego zabrać. Te co znalazłem po angielsku były dość mocno zaawansowane :).