Bienvenue, Invité. Merci de vous connecter ou de vous inscrire. Avez-vous oublié d'activer ?

Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Messages - Engineer

Pages: [1]
1
Graphique / Re : classe balle
« le: Août 14, 2013, 11:53:13 am »
Ah oui merci j'avais pas vu :p

EDIT: J'essaie de faire bouger la balle et je vois pas ou est le probleme, tout compile parfaitement
#include <SFML/Window.hpp>
#include <SFML/Graphics.hpp>
#include <SFML/System.hpp>

sf::Event event;

class Ball
{
    int CircleR, Redd, Greenn, Bluee;
    sf::CircleShape shape;

    public:

    Ball(int CircleR,int Redd,int Greenn,int Bluee);
    Ball();
    sf::CircleShape getCircle();
    void moveCircle(int x, int y);

};

int main()
{
    Ball ball(100.f, 250, 0, 0);

    sf::RenderWindow window(sf::VideoMode(800,600), "SFML Test");
    while(window.isOpen())
    {
        while(window.pollEvent(event))
        {
            switch(event.type)
            {
                case sf::Event::Closed:
                window.close();
                break;

                default:
                break;
            }

        }

        if(sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
        {
            ball.moveCircle(-50,0);
        }
        if(sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
        {
            ball.moveCircle(50,0);
        }
        if(sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
        {
            ball.moveCircle(0,50);
        }
        if(sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
        {
            ball.moveCircle(0,-50);
        }
        window.clear(sf::Color::Black);

        window.draw(ball.getCircle());

        window.display();
    }
    return 0;

}


Ball::Ball(int CircleR, int Redd, int Greenn, int Bluee)
{
    CircleR = CircleR;
    Redd = Redd;
    Greenn = Greenn;
    Bluee = Bluee;

    shape.setRadius(CircleR);
    shape.setFillColor(sf::Color(Redd,Greenn,Bluee));
    shape.setPosition(100,100);
}

Ball::Ball()
{
    shape.setRadius(50);
    shape.setFillColor(sf::Color(100,100,100));
    shape.setPosition(100,100);
}

sf::CircleShape Ball::getCircle()
{
    return shape;
}

void Ball::moveCircle(int x, int y)
{
    getCircle().move(x, y);
}
 

2
Graphique / classe balle
« le: Août 14, 2013, 02:07:52 am »
Salut tout le monde !
Je veux juste afficher un cercle à l'écran via une classe Balle mais je ne sais pour quelle raison cela ne fonctionne pas. Ca fait la fenetre mais ne la mets pas en noir comme voulu. Ca compile.


#include <SFML/Window.hpp>
#include <SFML/Graphics.hpp>
#include <SFML/System.hpp>

sf::Event event;
sf::Event::KeyEvent keyevent;
sf::Keyboard::Key key;

class Ball
{
    int CircleR, Redd, Greenn, Bluee;
    sf::CircleShape shape;

    public:

    Ball(int CircleR,int Redd,int Greenn,int Bluee);
    Ball();
    sf::CircleShape getCircle();
    void moveCircle(int x, int y);

};

int main()
{
    Ball ball(100.f, 250, 0, 0);

    sf::RenderWindow window(sf::VideoMode(800,600), "SFML Test");
    while(window.isOpen())
    {
        while(window.pollEvent(event))
        {
            switch(event.type)
            {
                case sf::Event::Closed:
                window.close();
                break;

                case sf::Event::KeyPressed:
                    switch(sf::Keyboard::isKeyPressed(key))
                    {

                        case sf::Keyboard::Left:

                        ball.moveCircle(-50, 0);
                        break;

                        case sf::Keyboard::Right:

                        ball.moveCircle(50, 0);
                        break;

                        case sf::Keyboard::Up:

                        ball.moveCircle(0, 50);
                        break;

                        case sf::Keyboard::Down:

                        ball.moveCircle(0, -50);
                        break;

                        default:
                        break;
                    }
                    break;

                default:
                break;
                }

            }
        window.clear(sf::Color::Black);

        window.draw(ball.getCircle());

        window.display();
        }
        return 0;

}


Ball::Ball(int CircleR, int Redd, int Greenn, int Bluee)
{
    CircleR = CircleR;
    Redd = Redd;
    Greenn = Greenn;
    Bluee = Bluee;

    shape.setRadius(CircleR);
    shape.setFillColor(sf::Color(Redd,Greenn,Bluee));
    shape.setPosition(100,100);
}

Ball::Ball()
{
    shape.setRadius(50);
    shape.setFillColor(sf::Color(100,100,100));
    shape.setPosition(100,100);
}

sf::CircleShape Ball::getCircle()
{
    return shape;
}

void Ball::moveCircle(int x, int y)
{
    getCircle().move(x, y);
}

 

J'ai mis Redd/Greenn/Bluee parce que je ne savais pas si il y aurait pu avoir une confusion avec les sf::Color (on ne sait jamais :p)
Merci d'avance

3
C / Re : Setup avec C::B + Balle
« le: Août 10, 2013, 01:41:08 pm »
http://pastebin.com/3Z9jsi5k

Solution ici et explications sur le forum anglais

4
C / Re : Setup avec C::B + Balle
« le: Août 10, 2013, 12:15:09 am »
De ce qui est écrit, les fonctions _create renvoient des structures, donc je ne comprends pas ce que tu me dis ?? Et comme je te l'ai dit j'ai fini tous les exo d'un livre en C donc je ne grille pas les étapes, et afficher une balle à l'écran n'est quand même pas compliqué c'est le tutorial de base mis dans l'installation...
Je vais essayer de regarder encore la documentation mais elle n'est pas hyper claire...
Par exemple, impossible pour moi de trouver la fonction clear et draw de window qui est elle disponible en C++ !
Le code actuel :
int main()
{
    sfContextSettings * settings;
    settings->antialiasingLevel = 8;
    sfVideoMode mode;
    mode.height = 200;
    mode.width = 200;
    sfWindow * window;
    sfShape * shape;
    window = sfWindow_create(mode, "SFML works!", sfDefaultStyle ,settings);
    shape = sfCircleShape_create();
    sfShape_setFillColor(shape, sfGreen);

    while (sfWindow_isOpen(window))
    {
        sfEvent * event;
        while (sfWindow_pollEvent(window, event))
        {
            if (sfEventType == sfEvtClosed)
            {
                sfWindow_close(window);
            }
        }

        sfWindow_clear(window);
        sfWindow_draw(shape);
        sfRenderWindow(window);
    }

    return 0;
}

Il me reste juste a comprendre comment clear et draw avec les window, je ne trouve pas dans la documentation... aussi une erreur avec sfeventtype pourtant c'est bien une enumeration...

EDIT1: Après avoir fouillé partout il faut utiliser la classe renderwindow, mais pourquoi diable avoir fait deux classes pour faire une fenetre ? Quelle est la différence principale entre une render window et une window ??
Bref je progresse pas à pas...

EDIT2:

Voici le code final:

#include <SFML/Graphics.h>

int main()
{
    sfContextSettings * settings;
    settings = malloc(sizeof(sfContextSettings));
    settings->antialiasingLevel = 8;
    sfVideoMode mode;
    mode.height = 200;
    mode.width = 200;
    sfRenderWindow * renderwindow;
    sfCircleShape * shape;
    renderwindow = sfRenderWindow_create(mode, "SFML works!", sfDefaultStyle ,settings);
    shape = sfCircleShape_create();
    sfCircleShape_setFillColor(shape, sfGreen);

    while (sfRenderWindow_isOpen(renderwindow))
    {
        sfEvent * event;
        event = malloc(sizeof(sfEvent));
        while (sfRenderWindow_pollEvent(renderwindow, event))
        {
            if (event == sfEvtClosed)
            {
                sfRenderWindow_close(renderwindow);
            }
        }
        sfRenderStates * state;
        state = malloc(sizeof(sfRenderStates));
        state->SfBlendMode == SfBlendNone;

        sfRenderWindow_clear(renderwindow, sfBlack);
        sfRenderWindow_drawCircleShape(renderwindow, shape, state);
        sfRenderWindow_display(renderwindow);
    }

    return 0;
}

La seule chose que je ne comprends pas du tout et j'ai tres bien recherché cette fois c'est, comment afficher une shape sans avoir à mettre un sfRenderState * en argument (car je veux juste afficher ma forme avec sa couleur, sans texture ni blendmode ni transform etc etc).
(PS:j'avais eu quelques problèmes car le malloc() ne fonctionnait pas au début car évidemment c'est à la compilation que l'on connait la taille de l'union, c'est pour ca que je ne les avait pas mis, mais en fait ca fonctionne (warning).)
Une solution pour afficher un cercle sans avoir à recourir à un sfRenderState ?
Merci d'avance. :)

5
C / Setup avec C::B + Balle
« le: Août 09, 2013, 07:03:33 pm »
Salut !
Je suis nouveau avec CSFML et j'aimerais créer un petit jeu avec.
Le problème est que j'aimerais bien faire ma set-up de CSFML sur Code::blocks.
J'ai fait comme le tutorial pour le CSFML normal en changeant quelques petits trucs (par exemple dans le repertoire de CSFML, pour les include il faut après choisir gcc, il n'y a pas de dll...)

Je veux donc du coup compiler le tutoriel avec la balle, pour voir si tout fonctionne bien. J'adapte donc le code en remplacant les hpp par h et en consultant la documentation pour certaines fonctions.
Voici à ce que j'arrive :


#include <SFML/Graphics.h>

int main()
{
    sfWindow * window;
    sfShape * shape;
    window = sfWindow_create(sfVideoMode(200, 200), "SFML works!");
    shape = sfCircleShape_create(100.f);
    sfShape_setFillColor(shape, sfColor sfGreen);

    while (sfWindow_isOpen(window))
    {
        sfEvent event;
        while (sfWindow_pollEvent(window, event))
        {
            if (sfEventType == sfEvtClosed)
                sfWindow_close(window);
        }

        sfWindow_clear(window);
        sfWindow_draw(shape);
        sfRenderWindow(window);
    }

    return 0;
}


Malgré cela, j'obtiens énormément d'erreurs. Est ce que CSFML est fort différent de la SFML normale ? Par exemple j'ai cru comprendre que dans certaines fonctions il fallait donner plus d'arguments que celles dans la SFML normale (il faut donner le nombre de bit par pixel pour sfVideoMode par exemple). Est ce réellement vrai ?
J'aimerais bien que quelqu'un de fortement expérimenté avec la CSFML corrige mon programme, après quoi je pourrais avoir au moins un bonne set up avec mon IDE et je pourrais réellement commencer à apprendre :)

Les erreurs du build:


main.c:5:30: error: expected expression before 'sfVideoMode'
main.c:5:30: error: too few arguments to function 'sfWindow_create'
main.c:6:5: error: too many arguments to function 'sfCircleShape_create'
main.c:7:33: error: expected expression before 'sfColor'
error: incompatible type for argument 2 of 'sfWindow_pollEvent'
error: expected expression before 'sfEventType'
error: storage size of 'window' isn't known


(PS: En fait je viens de terminer un livre sur le C avec ses exercices et j'ai également concu plusieurs programmes utilisant les différentes notions du C (structures, fichier, pointeur, adresses, tableaux) donc je voulais utiliser mes connaissances et faire un tout petit jeu vidéo (genre un personnage qui se balade, avec une detection de collision pas trop compliquée vue de haut, et qui doit par exemple résoudre des énigmes ou battre des monstres (ca deviendrait plus compliqué du coup puisqu'il faudrait du path-finding) ou alors un pong ou un snake). Bref je veux faire un petit jeu vidéo et je me disais que SDL était trop vieux et plus compliqué, et comme je ne veux pas encore apprendre le C++ (qui a également des notions compliquées (à part l'esprit POO, les vecteurs et le meta-programming ca doit un peu différer du Java  (je viens du Java que j'ai appris à l'unif), je me disais que j'allais utiliser le binding C pour la SFML, si vous avez un conseil à me donner (C++ et SFML, C et SDL ou C et CSFML), je suis preneur).

Pages: [1]
anything