We already had a main loop for our game, but it didn’t to anything:D. Here we’ll modify it to make it work with our board and our userInterface.

We keep the usual SFML headers, and we add our custom classes:

////////////////////////////////////////////////////////////
// main.cpp
////////////////////////////////////////////////////////////
#include 
#include "board.h"
#include "uInterface.h"

We create the window and we add a frame rate limit. By The Way if you don’t want to use anti aliasing replace the appropriate lines of code :

int main()
{
    // Create the main window, using the best available resolution
    //sf::RenderWindow App(sf::VideoMode::GetMode(0),
    //        "Your first SFML game: 4 in a row!");

    // If you want antialiasing in your game, you can use these
    // lines of code instead of the above ones:

    unsigned int antialias = 8;
    sf:: RenderWindow App(sf::VideoMode::GetMode(0),
            "Your first SFML game: 4 in a row!",
            sf::Style::Resize|sf::Style::Close,
            sf::WindowSettings::WindowSettings ( 24, 8, antialias));

    // Reduce CPU usage by limiting the times a frame
    // is drawn per second
    App.SetFramerateLimit(30);

Just before the game loop (main loop) we create our board and our userInterface :

    // Create a 4 in a row board
    Board board(App);

    // Create the user interface
    UInterface ui(board);

We start the main loop as usual:

     // This is the main loop
    // It will loop until you exit the program
    while (App.IsOpened())
    {
        // Here we process the events list
        sf::Event Event;
        while (App.GetEvent(Event))
        {
            // Close window : exit
            if (Event.Type == sf::Event::Closed)
                App.Close();

We add an event catcher: when the user left clicks the screen, we place a token in a column:

            else if (Event.Type == Event.MouseButtonReleased && Event.MouseButton.Button == sf::Mouse::Left)
                ui.placeInColumn(App.GetInput());
        }

We clear the screen with the board’s background colour:

        // Clear the screen with a color
        App.Clear(board.boardColor);

We draw, the board (the circles) in the frame buffer:

        // Here you will draw all stuff in the frame buffer
        // Draw the board
        board.draw();

And we display the buffer on screen!!

        // Render the frame on screen
        App.Display();
    }

    return EXIT_SUCCESS;
}

We now have a fully working SFML game. As you see, it is very easy to do. Most of the code is used to create the board array, to find if a player has won and to define how the circles are shown on screen.

There’s lot of space for improvements. Why don’t you try showing a transparent token when hovering the mouse over a column. This way we’d know who’s next turn. Or why don’t you add some text to show who has won the match? I leave all these improvements to you. If you want some help, try posting a comment here or going to the SFML forums.

May the force be with you…^^

PS: I might be adding network support. You’d be able to match your friend in the other side of the world!! ;) Keep tuned.:)