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.


Sujets - cChaD

Pages: « Précédente 1 [2]
16
Général / Le programme plante avec le code minimal
« le: Février 27, 2013, 07:36:45 pm »
Bonsoir,

je viens de m’apercevoir qu'avec le code minimal de la SFML 2.0 le programme plante et le debugger  me signal
le VideoMode()

D'où sa pourrait venir ?

Merci d'avance.

17
Général / Screen transition
« le: Novembre 27, 2012, 03:12:15 pm »
Salut !

J'ai voulu refaire un tutoriel que j'ai vu sur le net qui permet une transition (texte).
Le soucis est que si je fait ma transition dans une intervalle très proche sa marche impeccable ! mais si j'attend + de de 2sec la transition se fait très rapidement, je pense que cela viens de mon sf::Clock..

Voici mon code :

#include "FadeAnimation.h"

FadeAnimation::FadeAnimation()
{
    //ctor
}

FadeAnimation::~FadeAnimation()
{
    //dtor
}

void FadeAnimation::LoadContent(std::string text, sf::Texture, sf::Vector2f postion)
{
    Animation::LoadContent(text, texture, postion);
    time.restart();
    increase = false;
    fadeSpeed = 1.0f;
}

void FadeAnimation::UnloadContent()
{

}

void FadeAnimation::Update()
{
    if(active)
    {
        if(!increase) {
            alpha -= time.getElapsedTime().asSeconds() * fadeSpeed;
        }
        else {
            alpha += time.getElapsedTime().asSeconds() * fadeSpeed;
        }

        time.restart();

        if(alpha >= 1.0f)
        {
            alpha = 1.0f;
            increase = false;
        }
        else if(alpha <= 0.0f)
        {
            alpha = 0.0f;
            increase = true;
        }
    }
    else
    {
        alpha = 1.0f;
    }
}

void FadeAnimation::Draw(sf::RenderWindow &window)
{
    Animation::Draw(window);
}

void FadeAnimation::SetAlpha(float value)
{
    alpha = value;

    if(alpha == 0.0f)
        increase = true;
    else
        increase = false;
}
 


Merci.

18
Général / InputManager
« le: Novembre 22, 2012, 09:01:35 pm »
Bonsoir,

j'ai coder une classe InputManager mais j'ai quelque problème:

- J'obtiens un segfault un petit peu apres le lancement
- Quand j'utilise KeyReleased cela ne marche pas (sa fait comme KeyReleased).


#include "InputManager.h"

InputManager::InputManager()
{
    //ctor
}

InputManager::~InputManager()
{
    //dtor
}

void InputManager::Update(sf::Event event)
{
    this->event = event;
}

bool InputManager::KeyPressed(int key)
{
    if(event.key.code == key && sf::Event::KeyPressed)
        return true;
    return false;
}

bool InputManager::KeyPressed(std::vector<int> keys)
{
    for(unsigned int i=0; i<keys.size(); i++)
    {
        if(event.key.code == keys[i] && sf::Event::KeyPressed)
            return true;
    }
    return false;
}

bool InputManager::KeyReleased(int key)
{
    if(event.key.code == key && sf::Event::KeyReleased)
        return true;
    return false;
}

bool InputManager::KeyReleased(std::vector<int> keys)
{
    for(unsigned int i=0; i<keys.size(); i++)
    {
        if(event.key.code == keys[i] && sf::Event::KeyReleased)
            return true;
    }
    return false;
}
 

Merci d'avance.

19
Général / [1.6] isKeyDown
« le: Novembre 20, 2012, 12:09:08 am »
Bonsoir,

Je travaille avec la SFML 2.0 et j'ai vu quelqu'un utiliser avec la 1.6

window.GetInput().isKeyDown()


Je voulais savoir quel etait la difference entre isKeyDown et KeyPressed..


Merci d'avance.


20
Général / Déplacement par case
« le: Septembre 06, 2012, 12:50:06 pm »
Bonjour, je reprend le développement de mon bomberman et je reprend la où j'avais echouer à savoir le déplacement par case.

J'ai codé ceci pour, que lorsque la frame == 0 on puisse déplacer le joueur, et quand la frame == 7 on peut tester l'appuie des touches, sauf que la condition _animation->estLancer(), ne s'effectue pas au debut de chaque annimation.

Voici le code:

// Met à jour le joueur
void Player::update(Event &event)
{
    if(!animer)
    {
        if(Keyboard::isKeyPressed(Keyboard::Down))
        {
            _position = BAS;
            bouger = true;
            animer = true;
        }

        if(Keyboard::isKeyPressed(Keyboard::Up))
        {
            _position = HAUT;
            bouger = true;
            animer = true;
        }

        if(Keyboard::isKeyPressed(Keyboard::Left))
        {
            _position = GAUCHE;
            bouger = true;
            animer = true;
        }

        if(Keyboard::isKeyPressed(Keyboard::Right))
        {
            _position = DROITE;
            bouger = true;
            animer = true;
        }

        if(!bouger) {_animation->arreter();}
        else {_animation->jouer();}
    }
   else
   {
       if(_position == BAS)
       {
            _animation->setAnimation(0);
            if(_animation->estLancer()) {
                _caseActuel += casesX-1;
            }

            else if(_animation->estFini()) {
                animer = false;
                bouger = false;
            }
        }
    }
}
 

Merci d'avance.

21
Général / soucis de collision
« le: Juin 16, 2012, 07:03:58 pm »
Bonsoir,

J'essaye de recréer un bomberman histoire de bien maîtriser la SFML, mais je coince au niveau des collisions..

J'ai une classe Map et Case et dans Map je dispose d'un vector[Y][X] de case, chaque cases prend en paramètre un type, 0 = bloc, 1 = mur, 2=herbe tous ça lut grâce à un fichier .txt

Mais lorsque je test les collisions, le rect de mon perso et de la case sa ne marche pas...  :-X

IntRect Case::GetBoundingBox() const
{
    IntRect box;
    box.left = (int)Get_Position(_type).x;
    box.top = (int)Get_Position(_type).y;
    box.width = 30;
    box.height = 30;

    return box;
}

IntRect Player::GetBoundingBox() const
{
    IntRect rect;
    rect.left = (int)vel.x+1;
    rect.top = (int)vel.y;
    rect.width = 20;
    rect.height = 28;

    return rect;
}

bool Player::collision()
{
    if(bouger)
    {
        int idY = GetBoundingBox().top / 30; // grâce à ça je peut connaitre la case en Y de mon perso
        int idX = GetBoundingBox().left / 30; // ici en X

       cout << _map->Get_Type(idY, idX) << endl;

        if(_map->Get_Type(idY, idX) == 0 || 1)
        {
            if(GetBoundingBox().left <= _map->GetBoundingBox(idY, idX).left + _map->GetBoundingBox(idY, idX).width)
                return true;
        }
    }

    return false;
}

22
Général / Problème Event
« le: Juin 03, 2012, 01:26:17 pm »
Bonjour,

Je teste le déplacement d'un personnage avec 4 frames [B,H,G,D] et j'ai surement un soucis avec les events car quand j'appuit sur une touche et environs 1sec sur une autre j'ai une "pause" de 1 seconde, donc je ne comprend pas :

voici le code:

    if (event.Type == Event::KeyPressed)
    {
        switch (event.Key.Code)
        {
            case Keyboard::Down:
                velY += 0.1;
                _persoActuel = BAS;
                _spritePlayer[_persoActuel].SetPosition(velX, velY);
                break;

            case Keyboard::Up:
                velY -= 0.1;
                _persoActuel = HAUT;
                _spritePlayer[_persoActuel].SetPosition(velX, velY);
                break;

            case Keyboard::Left:
                velX -= 0.1;
                _persoActuel = GAUCHE;
                _spritePlayer[_persoActuel].SetPosition(velX, velY);
                break;

            case Keyboard::Right:
                velX += 0.1;
                _persoActuel = DROITE;
                _spritePlayer[_persoActuel].SetPosition(velX, velY);
                break;

            default:
                break;
        }
    }
 

23
Général / Problème de Rect
« le: Juin 01, 2012, 10:40:03 pm »
Bonsoir, je n'arrive pas à afficher seulement le rect d'une image..

Voici l'image





Par exemple si je prend le premiere perso tout ce passe bien mais quand je prend le 2éme par exemple voici ce qu'il m'affiche, vous pouvez constater que j'ai exactement pareille pour le fond je voulais seulement le bloc gris..




Bon voilà le code :


Player::Player()
{
    _imagePlayer.LoadFromFile("Image/tileset.png");
    _imagePlayer.CreateMaskFromColor(Color(186,254,202));
    _texturePlayer.LoadFromImage(_imagePlayer);
    _spritePlayer.resize(4, Sprite());

    for(unsigned int i(0); i < _spritePlayer.size(); i++)
        _spritePlayer[i].SetTexture(_texturePlayer);

    _spritePlayer[BAS].SetTextureRect(IntRect(33,13,47,31));    
}





Merci d'avance

Pages: « Précédente 1 [2]
anything