Partage
  • Partager sur Facebook
  • Partager sur Twitter

MVS 2022 : Impossible de démarrer le programme '.'

Sujet résolu
    11 août 2022 à 17:23:56

    Bonjour,
    j'essaie de créer un petit jeu (un pong) pour mon 1er projet en C++ avec l'aide de SFML.
    Mais malheureusement, j'ai le message suivant à l'écran...
    J'ai aussi quelques erreurs qui sont indiqués :
    Ce qui est étrange, c'est que dans la vidéo tuto que je regarde le symbole ou "||" ne pose pas de problème alors que dans mon code oui ...
    AUTRES INFORMATIONS PAR IMAGES:
    L'intégralité de mes codes:

    1)main.cpp
    #include "main.h"
    
    //Variables
    //La fenêtre du jeu
    RenderWindow window;
    // Pour la gestion des inputs
    Input input;
    //Pour stocker la fonte
    Font font;
    // Pour stocker le texte
    Text txt;
    
    // Pos raquettes
    float posRaquettesLeftX = 50;
    float posRaquettesRightX = WIN_WIDTH - 70;
    float postRaquettesLeftY = WIN_HEIGHT / 2;
    float posRaquettesRightY = postRaquettesLeftY;
    float raquettesSpeed = 0.25f;
    int raquettesHeight = 150;
    int raquettesWidth = 20;
    // Infos Balle
    float ballSpeed = 0.075f;
    Vector2f ballDir = Vector2f(1.5f, 2.0f);
    float ballPosX = WIN_WIDTH / 2;
    float ballPosY = WIN_HEIGHT / 2;
    // Score
    int scoreJ1 = 0;
    int scoreJ2 = 0;
    
    void UpdateBall() {
    	// Pos balle
    	ballPosX += ballDir.x * ballSpeed;
    	ballPosY += ballDir.y * ballSpeed;
    	// Collisions balle
    	// raquette gauche ou droite touchée ?
    	if ((ballPosX < posRaquettesLeftX + raquettesWidth &&
    		ballPosX > posRaquettesLeftX &&
    		ballPosY < postRaquettesLeftY + raquettesHeight &&
    		ballPosY > postRaquettesLeftY))
    		||
    		(ballPosX > posRaquettesRightX - raquettesWidth &&
    			ballPosX < postRaquettesRightX&&
    			ballPosY < posRaquettesRightY + raquettesHeight &&
    			ballPosY > posRaquettesRightY)) {
    			ballDir.x *= -1;
    }
    
    //mur gauche
    if (ballPosX < 0) {
    	scoreJ2++;
    	ballPosX = WIN_WIDTH / 2;
    	ballPosY = WIN_HEIGHT / 2;
    	ballDir.x = fabs(ballDir.x);
    	ballDir.y *= -1;
    	SetText(txt, std::to_string(scoreJ1) + " | " + std::to_string(scoreJ2))
    }
    
    // mur droit
    if (ballPosX > WIN_WIDTH) {
    	scoreJ1++;
    	ballPosX = WIN_WIDTH / 2;
    	ballPosY = WIN_HEIGHT / 2;
    	ballDir.x = -fabs(ballDir.x);
    	ballDir.y *= -1;
    	SetText(txt, std::to_string(scoreJ1) + " | " + std::to_string(scoreJ2))
    }
    
    // mur haut ou bas
    if (ballPosY > WIN_HEIGHT || ballPosY < 0) {
    	ballDir.y *= -1;
    };
    
    }
    
    // Fonction main, point de départ du programme
    int main()
    {
    	//Création d'une fenêtre type RenderWindow
    	window.create(VideoMode(WIN_WIDTH, WIN_HEIGHT, 32), "Pong SFML C++", Style::Default);
    		//Chargement fonte
    		font.loadFromFile("polices en ttf/Poppins-BlackItalic.ttf");
    		// On règle toutes les propriétés de celui-ci
    		SetText(txt,to_string(scoreJ1) + " | " + to_string(scoreJ2));
    
    			//Préparation des formes
    			//Balle
    			CircleShape circleShape(15);
    		circleShape.setPosition(ballPosX, ballPosY);
    		// Raquette gauche
    		RectangleShape rectangleShape(Vector2f(raquettesWidth, raquettesHeight));
    		rectangleShape.setPosition(posRaquettesLeftX, postRaquettesLeftY);
    		// Raquette droite
    		RectangleShape rectangleShape2(Vector2f(raquettesWidth, raquettesHeight));
    		rectangleShape2.setPosition(posRaquettesRightX, posRaquettesRightY);
    
    
    		// Boucle qui tourne tant que la fenêtre est ouverte
    		while (window.isOpen())
    		{
    			Event event; // Variable pour gérer l'événement
    			// On boucle sur les événements
    			while (window.pollEvent(event))
    			{
    				//Gestion des inputs / events
    				input.InputHandler(event, window);
    			}
    
    			// Gestion clavier/souris
    			CheckBtn();
    			//Position raquettes, balle
    			rectangleShape.setPosition(posRaquettesLeftX, postRaquettesLeftY);
    			rectangleShape2.setPosition(posRaquettesRightX, posRaquettesRightY);
    
    			//Update Ball
    			UpdateBall();
    			circleShape.setPosition(ballPosX, ballPosY);
    			//Couleur de la fenêtre en noir
    			window.clear(Color::Black);
    			// C'est ici que l'on dessine les éléments du jeu
    			window.draw(txt);
    			window.draw(circleShape);
    			window.draw(rectangleShape);
    			window.draw(rectangleShape2);
    			//Dessinner à l'écran tous les éléments
    			window.display();
    		}
    
    
    // Fin du programme
    return 0;
    }
    
    void SetText(Text& txt, String str)
    {
    	// On lui indique quelle police utiliser
    	txt.setFont(font);
    	//On indique la chaîne de caractères à afficher
    	txt.setString(str);
    	// On indique la taille de la police d'écriture
    	txt.setCharacterSize(26);
    	// On donne la couleur
    	txt.setFillColor(Color::White);
    	//Pos
    	txt.setPosition((WIN_WIDTH / 2) - 40, 10);
    }
    
    void CheckBtn()
    {
    	// Raquette gauche
    	if (input.GetButton().up == true)
    	{
    		postRaquettesLeftY -= raquettesSpeed;
    			if (postRaquettesLeftY < 0)
    				postRaquettesLeftY = 0;
    
    	}
    	if (input.GetButton().down == true)
    	{
    		postRaquettesLeftY += raquettesSpeed;
    		if (postRaquettesLeftY + raquettesHeight > WIN_HEIGHT)
    			postRaquettesLeftY = WIN_HEIGHT - raquettesHeight;
    	}
    	// Raquette droite
    	if (input.GetButton().left == true)
    	{
    		posRaquettesRightY -= raquettesSpeed;
    		if (posRaquettesRightY < 0)
    			posRaquettesRightY = 0;
    	}
    
    	if (input.GetButton().right == true)
    	{
    		posRaquettesRightY += raquettesSpeed;
    		if (posRaquettesRightY + raquettesHeight > WIN_HEIGHT)
    			posRaquettesRightY = WIN_HEIGHT - raquettesHeight;
    	}
    
    	if (input.GetButton().escape == true)
    	{
    		window.close();
    	}
    
    }
    
    2)input.cpp:

    #include "input.h"
    
    //Constructeur
    Input::Input()
    {
    	button.left = button.right = button.up = button.down
    		= button.escape = false;
    }
    
    // Fonction qui accède à button (struc) et nous donne l'info private
    Input::Button Input::GetButton(void) const
    {
    	return button;
    }
    
    //Fonction de gestion des inputs
    void Input::InputHandler(Event event, RenderWindow& window)
    {
    	// Fermer la fenêtre si on clique sur la croix
    	if (event.type == Event::Closed)
    	{
    		// On ferme la fenêtre
    		window.close();
    	}
    
    	//Gestion des inputs (appuyés)
    	if (event.type == Event::KeyPressed)
    	{
    		switch (event.key.code) // Code de la touche utilisée
    		{
    		case Keyboard::Escape:
    			button.escape = true;
    			break;
    		case Keyboard::Left:
    			button.escape = true;
    			break;
    		case Keyboard::Right:
    			button.escape = true;
    			break;
    		case Keyboard::Down:
    			button.escape = true;
    			break;
    		case Keyboard::Up:
    			button.escape = true;
    			break;
    		default:
    			break;
    		}
    	}
    
    // Touche relachée
    	if (event.type == Event::KeyReleased)
    	{
    		// Touche relachée
    		switch (event.key.code) 
    		{
    		case Keyboard::Escape:
    			button.escape = true;
    			break;
    		case Keyboard::Left:
    			button.escape = true;
    			break;
    		case Keyboard::Right:
    			button.escape = true;
    			break;
    		case Keyboard::Down:
    			button.escape = true;
    			break;
    		case Keyboard::Up:
    			button.escape = true;
    			break;
    		default:
    			break;
    		}
    	}
    }


    3) input.h :

    #ifndef INPUT_H
    #define INPUT_H
    #include <SFML/Graphics.hpp>
    using namespace sf;
    
    class Input
    {
    	struct Button { bool left, right, up, down, escape; };
    public:
    	// Proto du constructeur
    	Input();
    	//Protos
    	Button GetButton(void) const;
    	void InputHandler(Event event, RenderWindow& window);
    
    private: 
    	Button button;
    };
    #endif
    

    4)main.h :

    // Includes
    #include <iostream>
    #include <SFML/Graphics.hpp>
    #include "input.h"
    
    //Constantes du programme
    const int WIN_WIDTH = 800;
    const int WIN_HEIGHT = 600;
    
    // Namespaces
    using namespace sf;
    using namespace std;
    
    //Prototypes
    void SetText(Text& txt, String str);
    void CheckBtn();





    Merci beaucoup aux personnes qui prendront le temps de m'aider à régler ce problème, bonne journée.

    -
    Edité par L.O.D.A 11 août 2022 à 17:29:39

    • Partager sur Facebook
    • Partager sur Twitter
      11 août 2022 à 19:45:16

      Bonjour,

      Merci d'éviter les copies en encore moins les photos d'écran.
      Il suffit de copier ta première erreur, les autre en sont peut-être la conséquence.

      Ligne 40 de main.cpp, le token || est inattendu. Le test du if est terminé donc ce || ne correspond à rien!
      Le test du if est terminé car : regarde bien les parenthèses avant, tu en as peut-être refermé une de trop.

      • Partager sur Facebook
      • Partager sur Twitter

      En recherche d'emploi.

        12 août 2022 à 10:45:07

        Bonjour,

        Merci pour votre réponse, j'ai fais ce que vous m'avez dis et cela avait parfaitement fonctionné hier.

        Malheureusement, j'avais enlever le dossier de mon projet sur MVS 2022, et aujourd'hui cela ne fonctionne plus en allant sur "Ouvrir un dossier local", et j'ai l'erreur :

        "Le fichier '....Debug\PongSFML.exe' est introuvable", alors qu'il est parfaitement placé dans le dossier comme on peut voir sur cette photo d'écran (désolé c'est la dernière mais quand je fais windows flèche majuscule + S sur mon nouveau pc , cela ne fonctionne pas..)

        Même allant sur "Ouvrir un projet ou une solution" => PongSFML.exe  j'ai le message suivant:

        Impossible d'exécuter le code, car sfml-graphics-d-2.dll est introuvable. La réinstallation du programme peut corriger ce problème.

        Avez-vous une solution ?

        Merci encore pour votre aide, bonne journée.

        -
        Edité par L.O.D.A 12 août 2022 à 11:32:58

        • Partager sur Facebook
        • Partager sur Twitter
          12 août 2022 à 10:50:28

          Tu te rends compte quand même que tes photos de ton écran sont illisibles ?

          Dalfab t'as déjà fait la remarque en plus. Rend toi service et utilise le bouton capture d'écran, les gens de voudront pas t'aider si ils doivent se casser les yeux pour lire tes photos et si ils voient que tu ne fais pas d'effort non plus

          Ou encore mieux l'outil capture de windows ...

          • Partager sur Facebook
          • Partager sur Twitter
            12 août 2022 à 11:06:40

            et un .exe n'est pas un projet ou une solution pour MVS

            Vu que ta génération du programme est en échec, il n'y a pas de fichier exe généré; corrige ton erreur d'accès à SFML\Graphics.hpp qui apparait dans la fenêtre de compilation

            • Partager sur Facebook
            • Partager sur Twitter
              12 août 2022 à 11:58:22

              D'accord, mais justement je n'arrive pas à utiliser "Outil Capture d'écran"  sur mon Laptop_E9LS6Q7M sous windows 11, comme vous pouvez voir avec ces captures d'écrans prises grâce au logiciel ShareX.... 


              Quand j'appuie sur "mode rectangulaire" rien ne se passe...

              J'ai modifier mon post précédent grâce à ce logiciel,  bonne journée.

              PS: Où est SFML\Graphics.hpp  ?


              PS 2: Je pense avoir trouvé l'emplacement mais il n'y a rien ...

              -
              Edité par L.O.D.A 12 août 2022 à 12:16:39

              • Partager sur Facebook
              • Partager sur Twitter
                12 août 2022 à 12:22:13

                bah il faut tracer la zone que tu veux capturer en mode rectangulaire. Une autre alternative peut être d'utiliser la Xbox Game Bar (via Touche Windows + G)

                tu es dans le dossier Graphics, or le fichier attendu Graphics.hpp est dans un dossier SFML (donc probablement le dossier parent de celui que tu nous montres) et vu que tu passes par une boite de dialogue d'ouverture, il y a sûrement un filtre sur les fichiers visibles à cause de l'extension active dans le type de fichier de cette boite de dialogue.

                -
                Edité par umfred 12 août 2022 à 12:29:14

                • Partager sur Facebook
                • Partager sur Twitter
                  12 août 2022 à 21:48:08

                  Bonsoir, vous avez raison, Graphics.hpp est bien dans le dossier SFML que je vous ai montré. 

                  Est-ce que en faisant ceci je passe outre la boite de dialogue d'ouverture ? :

                  Merci encore, bonne soirée à vous.

                  • Partager sur Facebook
                  • Partager sur Twitter
                    29 août 2022 à 12:55:16

                    à toi de nous dire si ça fonctionne
                    • Partager sur Facebook
                    • Partager sur Twitter
                      30 août 2022 à 11:14:24

                      Oui c'est bon j'avais trouvé, merci et bonne journée à vous.
                      • Partager sur Facebook
                      • Partager sur Twitter

                      MVS 2022 : Impossible de démarrer le programme '.'

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                      • Editeur
                      • Markdown