Witam, ostatnio zacząłem pisać projekty w sfml, praktycznie napisałem tylko jedną gierkę - nie taką tragiczną aż bo było to coś w rodzaju minecraft 2D :). Za to tragiczny jest jej kod... Teraz che napisać coś bardzo prostego bo po prostu omijanie spadających kwadratów (ale to nie jest istotne). Stwierdziłem że teraz chce w jakiś logiczny sposób uporządkować kod gry, podzieliłem go tak:
* klasa programu:
#include <SFML/Graphics.hpp>
#include <SFML/Window.hpp>
#include <windows.h>
class Program
{
public:
Program(); //wszystkie parametry okna
~Program(); //niszczenie obiektu (czyli window.close)
bool gameRun(); //wykonywanie gry i sprawdzanie czy okno nie zostało zamknięte
private:
enum whatIs{GAME, GAMEOVER, MENU, ABOUT}; //stany gry (w zależności od niej bedzie gra, menu itd...
whatIs gameStatus = MENU; //zmienna okreslajaca ststus gry
sf::RenderWindow *window;
sf::Event event;
void runProcess(); //beda sie tam wykonywaly odpowiednie isnstrukcje w zaleznosci od statusu gry
};
*ciało klasy:
#include "stdafx.h"
#include "Program.h"
Program::Program()
{
window = new sf::RenderWindow(sf::VideoMode(600, 700), "The Live", sf::Style::Close);
}
Program::~Program()
{
window->close();
}
bool Program::gameRun() {
window->pollEvent(event);
if (event.type == sf::Event::Closed) {
return false;
}
window->clear(sf::Color::Black);
window->display();
return true;
}
void Program::runProcess() {
//
}
* main:
#include "stdafx.h"
#include "Program.h"
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
Program *game = new Program;
while (true) { //wykonywanie dopuki nie doszlo do jakiegos eventu zamikniecia
if (!game->gameRun()) {
break;
}
}
delete game; //jezeli doszlo to usuwamy nasz obiekt
return 0;
}
Co sądzicie o takim początkowym ułożeniu projektu? Oczywiście to nie rozwiązuje jeszcze wielu problemów... Ale czy jest to w miarę czytelne? Z góry dziękuje za pomoc :)