Welkom

Op het blog van Unchained Games, hier kan je onze voortgang volgen.

Buzzwords

Procedural, shmup, Star Fox, C++, 3D, Windows & Linux

S.P.A.C.E

Stars Planets And Cosmic Encounters
 

Code Conventies

zondag 17 november 2013

Voor het programmeren in C++ gebruiken we de K&R indentatie manier.
Om dit in te stellen in Code::Blocks moet je naar Settings->Editor gaan en dan bij Source formatter K&R selecteren.

Regels

  • Alle code moet in het Engels worden geschreven, het commentaar ook
  • Alle variabelen declareer je aan het begin van de functie
  • Classe namen beginnen met een hoofdletter, functie namen en variabelen met een kleine letter
  • Alle namen worden geschreven in CamelCase wat inhoud dat meerdere woorden aan elkaar geplakt worden met een hoofdletter, bijvoorbeeld varNaam
  • De * van pointers moeten bij declaraties met 1 spatie tussen het type en de variabele naam, dus char *var
  • Bij een cast moeten de * van pointers aan het type vast zitten, dus (char*)type
  • Bij het aanroepen van een member in een class gebruik je altijd this->, dus bijvoorbeeld this->width
Hier is een voorbeeld van hoe de code eruit zou moeten zien:
Header bestand
#ifndef ENGINE_H
#define ENGINE_H

#ifdef __linux__
#include <SDL2/SDL.h>

#include "system/linux/time.h"
#else
#include <SDL.h>

#include "system/win32/time.h"
#endif

#include "geom/Point.h"

/**
 * The main game engine
 * Gets run on the main loop and handles IO/Window management
 */
class Engine
{
public:
    Engine();
    virtual ~Engine();

    void loop();

    void createWindow();

    void setWindowTitle(const char *title);

    void setSize(int width, int height);
    inline void setSize(Point size);

private:
 /* Window status */
    enum W_STATUS{
        init,
        open,
        closed,
        error
    } wStatus;

    /* Window Width */
    int wWidth;
    /* Window Height */
    int wHeight;

    /* Window Title */
    const char *wTitle;

    /* Main Window */
    SDL_Window *window;
};

#endif // ENGINE_H
Source bestand
#include "Engine.h"

Engine::Engine()
{
    SDL_Init(SDL_INIT_VIDEO);

    this->wStatus = init;
}

void Engine::loop()
{
    SDL_Event event;

    while(this->wStatus == open) {
        SDL_WaitEvent(&event);

        switch(event.type) {
        case SDL_QUIT:
            this->wStatus = closed;
            break;
        }
    }

    SDL_Quit();
}

void Engine::setSize(int width, int height)
{
    this->wWidth = width;
    this->wHeight = height;

    if(this->wStatus == open)
        SDL_SetWindowSize(this->window, this->wWidth, this->wHeight);
}

void Engine::setSize(Point size)
{
    this->setSize(size.x, size.y);
}

0 reacties:

Een reactie posten

Lorem

Please note: Delete this widget in your dashboard. This is just a widget example.

Ipsum

Please note: Delete this widget in your dashboard. This is just a widget example.

Dolor

Please note: Delete this widget in your dashboard. This is just a widget example.