En gros je voudrais disposer d’un fichier Map unique … sans avoir besoin des sources ( image, son, etc ) nécessaire à coté =)
Et ce n’est encore qu’a l’état de schéma dans ma tête..
si l'utilisation de "state" et pas trop lourd vu qu'a chaque fois il doit test toutes les valeur via un switch ...
Si y'a mieux on peut m'expliquer quoi s'il vous plait ^^
- qu'on maide au niveau de mon moteur de carte .. genre comment on ajoute et gère dans mon fichier ".map" une image, un son, comment on y sauvegarde des vector .. et comment on les recharge ...
1 5 1 54 87 92
3 9 1 5 87 3
10 5 1 6 87 2
1 5 1 5 87 9
2 4 1 5 87 9
AlastorS a écrit:4 std ::vector qui contiendrais des classes fille de sf ::Sprite, avec contenu dans ces classe fille les info : bool colision, int posX, int posY, etc..
En gros je voudrais disposer d’un fichier Map unique … sans avoir besoin des sources ( image, son, etc ) nécessaire à coté =)
- si l'utilisation de "state" et pas trop lourd vu qu'a chaque fois il doit test toutes les valeur via un switch ...
AlastorS a écrit:Ouaa x'D
Je suis entrains de repondre a tout le monde dans un unique post x'D évité de repondre entre temps x'D
Je vais voir apres ton liens Mokona =x
Switch state
{
case 1:
MenuMainGUI();
case 2:
MenuLoadGUI();
case 4:
MapGUI();
case 5:
MenuGameGUI();
case 6:
StopGame();
}
AlastorS a écrit:@ Gabriel : Flemme de faire un UML x)
Je code seul donc sa me sert a rien ^^
Ce que je cherchais avant tout, c'était empêcher que les fichiers puissent être modifier ..
Donc dans le switch, je test un state_valeur, et en fonction de ce state_valeur, j'apelle tels ou tels fonction ...
#include <iostream>
class State;
class StateManager
{
public:
StateManager()
: currentState(NULL)
{}
void Step(); // Implemented below State
void SetNextState(State * nextState)
{
currentState = nextState;
}
State * GetCurrentState() const
{
return currentState;
}
private:
State * currentState;
};
class State
{
public:
State(StateManager * _stateManager)
: stateManager(_stateManager)
{}
virtual ~State() {}
virtual void Process() = 0;
protected:
StateManager * stateManager;
};
void StateManager::Step()
{
if (currentState)
{
currentState->Process();
}
}
class FirstState : public State
{
public:
FirstState(StateManager * _stateManager)
: State(_stateManager)
, nextState(NULL)
, endState(NULL)
, callCount(0)
{}
virtual ~FirstState() {}
void SetNextState(State * _nextState)
{
nextState = _nextState;
}
void SetEndState(State * _nextState)
{
endState = _nextState;
}
virtual void Process()
{
std::cout << "In the first State\n";
++callCount;
if (callCount == 10)
{
stateManager->SetNextState(endState);
}
else
{
stateManager->SetNextState(nextState);
}
}
private:
State * nextState;
State * endState;
int callCount;
};
class SecondState : public State
{
public:
SecondState(StateManager * _stateManager)
: State(_stateManager)
, nextState(NULL)
{}
virtual ~SecondState() {}
void SetNextState(State * _nextState)
{
nextState = _nextState;
}
virtual void Process()
{
std::cout << "In the second State\n";
stateManager->SetNextState(nextState);
}
private:
State * nextState;
};
class EndState : public State
{
public:
EndState(StateManager * _stateManager)
: State(_stateManager)
{}
virtual ~EndState() {}
virtual void Process()
{
std::cout << "Bye bye.\n";
stateManager->SetNextState(NULL);
}
private:
State * nextState;
};
int main()
{
StateManager * stateManager = new StateManager();
FirstState * firstState = new FirstState(stateManager);
SecondState * secondState = new SecondState(stateManager);
State * endSate = new EndState(stateManager);
firstState->SetNextState(secondState);
firstState->SetEndState(endSate);
secondState->SetNextState(firstState);
stateManager->SetNextState(firstState);
while (stateManager->GetCurrentState())
{
stateManager->Step();
}
return 0;
}
Parce que ca m'obligerais a faire des fonctions pour modifier ou recuperer le sf::sprite en private .. :/
Si je montre trompe pas, c'est pour utilisé des Zip non ??
Mais je veux créer mon propre type de fichier ..
pWindow->Draw( GE->GetSprite() );
Donc en gros, dans le GameEntity j'aurais simplement besoin d'une fonction qui renverrais mon Sprite dans le jeu, du genre :
- Code: Tout sélectionner
pWindow->Draw( GE->GetSprite() );
Et donc tout ce qui est info de mon sf::Sprite serait contenu dans mon GameEntity ... et au moment ou j'apelle GetSprite(), j'initialiserais mon sf::Sprite ??
Par contre j'avoue que je suis toujours indécis quant a la réalisation de mon éditeur de map :/
Qu'elle outils utilisé ... Flemme d'apprendre QT .. alors que je connais GTK .. mais GTK ne peut pas utilisé l'interface de la SFML ..
"Que je pousse un peu plus loin en te donnant une idée pour préparer le terrain : fait-toi un système d'accès aux fichiers (c'est-à-dire, n'appelle pas d'ouverture/lecture de fichier directement)"
Tu pourrais développer que je vois si oui ou non j'ai compris x')
Donc en gros, dans le GameEntity j'aurais simplement besoin d'une fonction qui renverrais mon Sprite dans le jeu, du genre :
Code:
pWindow->Draw( GE->GetSprite() );
void GameEntity::Draw()
{
window->Draw(sprite); // "sprite" est membre de GameEntity
}
#ifndef MAINSTATE_HPP
#define MAINSTATE_HPP
#include "State.hpp"
#include "../manager/StateManager.hpp"
class MainState : public StateClass
{
public:
MainState(StateManager*);
virtual ~MainState() {};
void SetNextState(StateClass*);
void SetEndState(StateClass*);
#
virtual void Process()
{
stateManager->SetNextState(nextState);
}
#
private:
StateClass* nextState;
StateClass* endState;
};
#endif
#include "MainState.hpp"
#include "../manager/StateManager.hpp"
#include <iostream>
MainState::MainState(StateManager* _stateManager) : StateClass(_stateManager)
{
nextState = NULL;
endState = NULL;
}
void MainState::SetNextState(StateClass* _nextState)
{
nextState = _nextState;
}
void MainState::SetEndState(StateClass* _nextState)
{
endState = _nextState;
}
#
virtual void MainState::Process()
{
stateManager->SetNextState(nextState);
}
#
-------------- Build: Debug in World of Fantasy ---------------
Compiling: state\MainState.cpp
C:\Users\Alastor\Documents\CodeBlock\Projet WoF\WoF_0501\World of Fantasy\state\MainState.cpp:23: error: virtual outside class declaration
C:\Users\Alastor\Documents\CodeBlock\Projet WoF\WoF_0501\World of Fantasy\state\MainState.cpp:23: error: no `void MainState::Process()' member function declared in class `MainState'
Process terminated with status 1 (0 minutes, 0 seconds)
2 errors, 0 warnings
-------------- Build: Debug in World of Fantasy ---------------
Compiling: state\MainState.cpp
C:\Users\Alastor\Documents\CodeBlock\Projet WoF\WoF_0501\World of Fantasy\state\MainState.cpp:23: error: no `void MainState::Process()' member function declared in class `MainState'
Process terminated with status 1 (0 minutes, 0 seconds)
1 errors, 0 warnings
virtual void Process();
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 8 invités