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

Pages: [1]
1
Général / Création balle pour jeu de tir
« le: Novembre 18, 2019, 10:41:09 pm »
Bonjour à toutes et à tous,

Voilà, pour un projet dans mes études je dois créer un mini jeu. Je ne suis donc parti sur un style de jeu shooter. Mais je bloque sur un point, qui n'est pas négligeable... la création et le suivi de la balle. Je n'arrive pas à faire apparaître la balle lorsque je suis sensé cliquer sur le bouton gauche de ma souris et ainsi que cette balle parte dans la direction de mon curseur.

Vous allez surement me dire d'aller voir sur google, etc. Malheureusement je ne trouve pas de solution, du moins pour mon style de programmation. Si quelqu'un aurez une idée et pourrez m'aider cela serait sympa !

Voici mon code jusqu'à présent :
#include <SFML/Graphics.hpp>
#include <iostream>
#include <math.h>
#include <vector>
 
#define LARGEUR_FEN 1032
#define HAUTEUR_FEN 774
 
#define PERSO "perso.png"
#define HAUTEUR_PERSO 38
#define LARGEUR_PERSO 35
 
#define BALLE "balle.png"
#define HAUTEUR_BALLE 5
#define LARGEUR_BALLE 20
 
#define VISEUR "viseur.png"
#define TAILLE_VISEUR 25
 
using namespace sf;
 
typedef struct
{
    int x;
    int y;
} Point;
 
int main()
{
    //Initialisation variable
    float angle;
    int posMouseX, posMouseY;
    Vector2i mouse;
    Vector2f persoPosition;
    Point position;
 
    //Création de la fenêtre
    RenderWindow fen(VideoMode(LARGEUR_FEN, HAUTEUR_FEN), "Personnage");
    fen.setMouseCursorVisible(false);
    View fixed = fen.getView();
 
    //Initialisation de l'image du perso
    Texture image1;
    if(!image1.loadFromFile("perso.png"))
        printf("Probleme de chargement de l'image %s !\n", PERSO);
    Sprite perso;
    perso.setTexture(image1);
    perso.setOrigin(LARGEUR_PERSO/2, HAUTEUR_PERSO/2);
    perso.setPosition(LARGEUR_FEN/2, HAUTEUR_FEN/2);
    perso.setRotation(0);
 
    Texture image2;
    if(!image2.loadFromFile("balle.png"))
        printf("Probleme de chargement de l'image %s !\n", BALLE);
    Sprite balle;
    balle.setTexture(image2);
    balle.setOrigin(LARGEUR_BALLE/2, HAUTEUR_BALLE/2);
    balle.setPosition(position.x, position.y);
 
    Texture image3;
    if(!image3.loadFromFile("viseur.png"))
        printf("Probleme de chargement de l'image %s !\n", VISEUR);
    Sprite viseur;
    viseur.setTexture(image3);
    viseur.setOrigin(TAILLE_VISEUR/2, TAILLE_VISEUR/2);
    viseur.setPosition(position.x, position.y);
 
    // Initialisation de la fenêtre
    while (fen.isOpen())
    {
        persoPosition = perso.getPosition();
        posMouseX = mouse.x - persoPosition.x;
        posMouseY = mouse.y - persoPosition.y;
        mouse = Mouse::getPosition(fen);
        angle = -atan2 (posMouseX, posMouseY)*180/3.14;
        perso.setRotation(angle);
 
 
 
        Event event;
        while(fen.pollEvent(event))
        {
            switch(event.type)
            {
            case Event::Closed:
                fen.close();
                break;
 
            case Event::MouseButtonPressed:
                if(event.mouseButton.button == Mouse::Left)
                {
 
                }
                break;
 
            case Event::MouseMoved:
                if(event.mouseMove.y <= TAILLE_VISEUR/2)
                {
                    viseur.setPosition(event.mouseMove.x, TAILLE_VISEUR/2);
                }
                else if(event.mouseMove.y > HAUTEUR_FEN-TAILLE_VISEUR/2)
                {
                    viseur.setPosition(event.mouseMove.x, HAUTEUR_FEN-TAILLE_VISEUR/2);
                }
                else if(event.mouseMove.x <= TAILLE_VISEUR/2)
                {
                    viseur.setPosition(event.mouseMove.y, TAILLE_VISEUR/2);
                }
                else if(event.mouseMove.x > LARGEUR_FEN-TAILLE_VISEUR/2)
                {
                    viseur.setPosition(event.mouseMove.y, LARGEUR_FEN-TAILLE_VISEUR/2);
                }
                else
                {
                    viseur.setPosition(event.mouseMove.x,event.mouseMove.y);
                    // Affichage Fenêtre
                    fen.clear();
                    fen.draw(perso);
                    fen.setView(fixed);
                    fen.draw(viseur);
                    fen.display();
                }
                break;
            }
        }
    }
 
 
    system("pause");
    return EXIT_SUCCESS;
}
Merci d'avance

Pages: [1]