Caso queira um artigo, basta que o peça aqui nesse post.
Até mais!
quinta-feira, 24 de janeiro de 2013
Estruturando um jogo: Propriedades de Objetos
Ryan Lindeman criou um simples e eficiente sistema que gerencia propriedades de objetos de forma fácil.
Para começar, salve o código daqui como header (.h).
Salve o código daqui como source (.cpp).
Salve o código daqui como header.
Salve o código daqui como source.
Salve o código daqui como header.
E um exemplo básico:
#include "PropertyManager.hpp" int main(int argc, char* argv[]) { PropertyManager properties; // Adicionar uma propriedade properties.Add<sf::Clock>("AnimationClock", sf::Clock()); // Adicionar uma propriedade properties.Add<sf::Sprite>("Sprite", sf::Sprite()); // Adicionar uma propriedade properties.Add<bool>("Visible", true); // Testar uma propriedade if(properties.Get<bool>("Visible") == true) { // Desenhar uma sprite renderWindow.draw(properties.Get<sf::Sprite>("Sprite")); // Obter uma propriedade sf::Clock anClock = properties.Get<sf::Clock>("AnimationClock"); // Reiniciar o relógio de animação anClock.reset(); // Atribuindo valores properties.Set<sf::Clock>("AnimationClock", anClock); } // Se uma propriedade existe if(properties.HasID("NotExist")) { printf("It exists!\n"); } else { printf("It doesn't exist\n"); } return 0; }O que podemos notar é que há bastante código por trás de tudo isso, mas, no final das contas, usaremos bem menos códigos para usar o sistema.
Estruturando um jogo: Namespaces
1- Namespaces
Namespaces são muito importantes na organização de um projeto. Através deles, podemos categorizar os códigos. Por exemplo, códigos de sons ficam separados dos de imagens. Também podemos separar conforme o nome do programador, facilitando a identificação dos autores de cada trecho.
No header, fazemos algo do tipo:
Namespaces são muito importantes na organização de um projeto. Através deles, podemos categorizar os códigos. Por exemplo, códigos de sons ficam separados dos de imagens. Também podemos separar conforme o nome do programador, facilitando a identificação dos autores de cada trecho.
No header, fazemos algo do tipo:
namespace Pedro
{
class MinhaClasse {
public:
MinhaClasse();
virtual ~MinhaClasse();
};
}
No source, fazemos algo do tipo:
namespace Pedro
{
MinhaClasse::MinhaClasse()
{
}
MinhaClasse::~MinhaClasse()
{
}
}
Além disso, podemos usar classes com nomes iguais em namespaces diferentes:
class MyClass {
public:
MyClass();
virtual ~MyClass();
sf::Clock mClock1;
MyStuff::Clock mClock2;
};
Para que você não precise ficar digitando o nome de seu namespace a todo momento, você pode definir quais classes de quais namespaces você usará, de forma que precisa apenas digitar o nome da classe.
using Pedro::MyClass;
using sf::Clock;
Assinar:
Postagens (Atom)