Pomysł na budowę programu

0

Szukam w miarę prostego pomysłu jak obiektowo zbudować program, na przykład grę kółko i krzyżyk. Przeważnie korzystałem z takiego schematu znalezionego na internecie:

Był singleton, i klasa abstrakcyjna okna, i od tego tworzyło się różne inne okna jak menu, okno gry, okno opcji.

Jest to trochę zawiły dla mnie sposób, i szukam czegoś prostszego:

Wymyśliłem klasę game, która ma funkcję publiczną runGame();
W main tworzy się obiekt game i wywołuję te funkcję.

#pragma once
#include "Menu.h"
#include <SFML/Graphics.hpp>

class Game
{
public:
	Game(void);
	~Game(void);

	void runGame();

private:
	enum gameState 
	{
		GAME,
		MENU,
		END
	};

	gameState state;

	Menu menu;
};

runGame() posiada switcha który ma wybierać co dalej biorąc pod uwagę state, aktualny stan gry. Konstruktor na początku ustawia stan MENU, więc jest wywoływany w switchu menu.draw();
Ale jak potem zmienić stan w klasie Game, w menu wybierzemy np. opcję start, i jak potem komunikować obie te klasy?
Macie jakieś pomysły na konstrukcję obiektową programu?

`dodanie znaczników ``` - @furious programming

0

Masz klasę menu, w niej metody: Nowa gra, Zapisz, Zaladuj, Zakoncz (czy cokolowiek tam chcesz). Masz klase gra, z rzeczami zwiazanymi tylko z gra i ze stanem gry ktory pozwoli narysowac Ci plansze (ale nie implementuj rysowania w klasie gra, tak samo zadnego rysowania w klasie menu). Gra ma minimum dwa konstruktory: Game() i Game(Stan). Pierwszy do rozpoczecia nowej gry, drugi do wczytania istniejacej. Jak klikasz cos w opcjach to tworzysz nowa instancje gry (moze poza Pauzą). Jak gra sie konczy/zamknie czy cokolwiek to niszczysz to niszczysz obiekt gry. Dodatkowo dwie klasy: MenuView, GameView z jakims wspolnym interfejsem bazowym ktore wyswietlaja stan menu i gry na ekranie. Dodaj osobna klase do wyswietlania widokow Twojej gry. Kod powinien byc czytelny i nie przekomplikowany. Jesli latwiej Ci trzymac rysowanie widoku w tej samej klasie to tak zrob. Najwazniejsze jest zeby gra dziala i byla responsywna, Twoj drugi cel to uproszczenie kodu, ale nie przekombinowuj bo bedziesz wiecej szukal bugow niz to warte.

0

Rozumiem, a czy jak mamy potem klasę plansza to powinienem stworzyć klasę ją malującą, a potem kasę figura i od niej dziedziczą kółko i krzyżyk, to też klasę do malowania kształtów i tak do wszystkiego innego klasy malujące, czy po prostu klasą do malowania poziomu która obsługuje malowanie wszystkich elementów?

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