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 - cybolavie

Pages: [1]
1
Général / Re : SFML et Solaris ?
« le: Mai 21, 2013, 01:15:21 pm »
En fait tu me fais douter, il faut que je me penche sur la question.  :D
Je ne suis pas un expert non plus.. j'ai juste des bases en administration unix, je ne connais pas l'étendu des possibilités de l'OS. Je découvre quoi.  8)

EDIT: Bon j'ai eu ma réponse, je me contenterai d'une version Windows/Linux. :-)

2
Général / Re : SFML et Solaris ?
« le: Mai 21, 2013, 11:21:37 am »
Pourquoi serait ce bizarre ? Solaris est utilisé pour le côté serveur Ultra sécurisé, en ligne de commande, mais ça n'empêche pas, tout comme BSD, d'être utilisé avec une interface graphique de bureau.

Je ferai de l'administration et gestion de bases de données avancée, je serai amener à utiliser les produits Oracle. Je veux à terme obtenir une expertise Unix à travers diverses certifications. De plus, je ferai de la programmation Java.. Donc si je pouvais utiliser Oracle Studio pour le C/C++ et le développement de mon jeux vidéo à travers SFML, ça m'éviterai de démarrer sur différents systèmes d'exploitation, en fonction de l'utilisation. Sinon tampis, j'utiliserai un CentOS..

3
Général / SFML et Solaris ?
« le: Mai 21, 2013, 10:53:08 am »
Bonjour,

dans le cadre d'une reprise d'étude, j'aimerais centraliser mon travail autour d'un seul OS. J'ai un projet en cours sur SFML et j'aimerais pouvoir le continuer et le compiler sous Solaris Studio, est ce possible? Merci.

4
Pour plus de détail, regarde l'édit de ctxnop au dessus.

Le redimensionnement a été résolu. Mais notre problème se situe sur la fonction clock et les coordonnées délirantes! Comment expliques-tu ce phénomène, as tu testé l'implémentation de ton côté?

5
Laurent, tu aurais une piste eventuellement? Que cela nous permette d'effectuer des changements rapidement.

6
De mon côté j'utilise Visual C++ 2010 express et SFML 2.0, en debug.

Ok pour le redimenssionnement automatique, C'est bon à savoir. Cela peut expliquer les bizarreries que j'obtenais à l'écran.

Auparavant, j'effectuais mes déplacements en fonction du temps et comme je voulais qu'il se déplace toutes les 50 ms... (le 1er test était 1s - 1000ms) j'ai donc travaillé avec des chiffres en millisecondes. Depuis, on travaille avec les pixels, la règle de 3 aurait pu être revue en conséquence.

Le gros problème se situe dans le déplacement. au lancement du jeux, tout dépend de la valeur de pixel:

si sa valeur est assez faible (10 pxl) il va démarrer lentement et avec un décallage faible par rapport aux coordonnées d'origine. Dans le cas de l'exemple (90 pxl), il va commencer à afficher le cercle en plein milieu du damier, alors qu'il devrait commencer en toute logique en haut. Il se crée des pertes, il ne dessine pas tout. Une fois le cercle entré en collision avec le bas du damier, je le remet en haut et il effectue bien son déplacement comme il faut, de haut en bas, ainsi de suite.

Par contre, si on effectue la petite équation sur my et que le clock reset est exécuté juste après, il n'affiche plus les déplacements. La solution bricolage et temporaire était donc de laisser tourner le chrono et d'effectuer le clock.restart() au moment de la collision. Et ne parlons pas de cette fluidité complètement inexistante.

Bref un peu galère.  :-[




7
J'avais fais un petit effort pour vous, j'étais descendu à 130 lignes, tout en supprimant le côté brouillon.  8)

Bon ok, j'exagère beaucoup sur mon "aération" de code.  :D

9
Graphique / problème d'optimisation, de fonction clock et de coordonnées.
« le: Décembre 14, 2012, 07:54:28 pm »
Bonsoir,

je me permet de passer sur ce forum, vis à vis d'un code pour un jeux en 2D, j'obtiens des coordonnées délirantes, j'ai des pertes, la fonction clock.restart() fait baisser considérablement les performances, bref le code me semble pourtant correct.

J'ai du louper un épisode, j'ai installé la SFML 2.0, d'ou vient ces bugs??

#include <SFML/Graphics.hpp>

#include <iostream>

 

#define WND_WIDTH 1024

#define WND_HEIGHT 768

#define GRID_TILES 12

 

const sf::Texture BuildBackgroundGrid(const float size, const sf::Color& color1, const sf::Color& color2);

 

 

int main(int argc, char** argv)

 

{              

               

                sf::Clock clock;

 

                sf::RenderWindow wnd(sf::VideoMode(WND_WIDTH, WND_HEIGHT), "Chicken Run!");

               

        // Initialise des variables qui seront utilisées dans la boucle

 

        sf::Vector2u wndSize(0, 0); // Au départ on met 0,0 afin de provoquer la création de la texture

                sf::Texture texBackgroundGrid;

                sf::CircleShape circle;

                sf::Rect<int> scoreArea;

                sf::Rect<int> gameArea;

                sf::Rect<int> gridArea;

                sf::Sprite grid;

               

                float gridSide;

                float mx = 0;

                float my = 0;

                float eq = 0;

               

                int pixel = 90;

 

                while(wnd.isOpen())

 

        {              

                               

                                sf::Time time = clock.getElapsedTime();

 

                                sf::Event evt;

 

                while(wnd.pollEvent(evt))

 

                {

 

                        if(evt.type == sf::Event::Closed)

 

                                wnd.close();

 

                }

 

 

                                wnd.clear(); // Efface la fenêtre

 

 

                                // Si les dimensions de la fenêtre ont changés, alors on recalcule tout

 

                sf::Vector2u wndCurrentSize = wnd.getSize();

 

                if(wndCurrentSize != wndSize)

 

                {

 

                        wndSize = wndCurrentSize;

 

                        scoreArea = sf::Rect<int>(0, 0, wndSize.x * 0.3, wndSize.y); // Rectangle du panneau des scores

 

                        gameArea = sf::Rect<int>(scoreArea.width, 0, wndSize.x - scoreArea.width, wndSize.y); // Rectangle de la fenêtre moins le panneau des scores

 

                        gridSide = std::min(gameArea.width, gameArea.height) * 0.8; // Côté de la grille = 80% du minimum entre la hauteur et la largeur dispo.

 

                        gridArea = sf::Rect<int>(gameArea.left + ((gameArea.width - gridSide) / 2), gameArea.top + ((gameArea.height - gridSide) / 2), gridSide, gridSide);

 

                        texBackgroundGrid = BuildBackgroundGrid(gridSide, sf::Color::Blue, sf::Color::White);

 

                        grid = sf::Sprite(texBackgroundGrid);

 

                        grid.setPosition(gridArea.left, gridArea.top);

 

                                }

 

                                float tile = gridSide / GRID_TILES;

                               

                                // Affiche la grille a la bonne position

 

                                wnd.draw(grid);

 

                                // Dessine le cercle

                               

                                sf::CircleShape circle;

                                circle.setRadius(tile/2);

                                circle.setFillColor(sf::Color::Red);

                               

                                // déplacement du pion

                               

                                //////////////////////////////////

                                //////////////////////////////////

 

                                // il se déplace une seule fois, avec un décallage depuis la coordonnée d'origine. plus pixel est grand et plus cet écart est conséquent

 

                                /*my += (clock.getElapsedTime().asMicroseconds() * pixel) / 1000000;

                                clock.restart();*/


 

                               

 

                                ////////////////////////////////////

 

                                // Dans ce deuxième cas, il se déplace constamment, en attendant de faire le clock.restart()

 

                                my = (clock.getElapsedTime().asMilliseconds() * pixel) / 1000;

                                //clock.restart();*/

 

                                if ( my > (gridArea.height - tile) ) { my = 0; clock.restart(); }

 

                                circle.setPosition(gridArea.left + mx, gridArea.top + my);

                               

                                wnd.draw(circle); // Affiche le déplacement du Pion

 

                                wnd.display(); // Dessine la fenêtre

 

 

                               

        }

 

        return 0;

               

}

 

 

       

const sf::Texture BuildBackgroundGrid(const float size, const sf::Color& color1, const sf::Color& color2)

 

{              

           

                // Création d'une texture aux dimensions souhaités

 

        sf::Texture text;

                sf::RenderTexture t;

       

                t.create(size, size);

        t.clear(color1);

        t.resetGLStates();

 

        // Création d'un rectangle pour dessiner les tuiles

 

        float tileSide = size / GRID_TILES;

        sf::RectangleShape tile(sf::Vector2f(tileSide, tileSide));

       

                tile.setFillColor(color2);

        tile.setOutlineColor(sf::Color::Black);

        tile.setOutlineThickness(1);

 

                               

                int count = 0;

 

        for(int i = 0; i < GRID_TILES; i++)

 

        {

 

                for(int j = 0; j < GRID_TILES; j++)

 

                {

 

                        if(count & 1)

 

                        {

 

                                tile.setPosition(i * tileSide, j * tileSide);

                                                               

                                                                t.draw(tile);

                                                               

                        }

 

                                               

                                                count++;

 

                }

 

                count++;

 

        }

 

               

                t.display();

 

        text = sf::Texture(t.getTexture());

 

        return text;

 

}

Merci bien.  :)

Pages: [1]