Bonjour.
J'ai essayé un exemple de code tout à l'heure sur mon projet, en prenant soin de remplacer toutes les variables par les miennes et tout. J’exécute le code, et le programme s'ouvre et se referme tout de suite. Je me dis, bon c'est pas grave, j'ai qu'à l'effacer. De toute façon, je n'avais rien modifié d'autre et le code faisait 3 lignes. Je le retire, je compile et là le programme fait la même chose. ??? Il ferme et me met aucun message d'erreur. J'ai donc vérifié l'intégrité du code du programme, mais pourtant, avant que je mette le bout de code, tout allait très bien. Alors j'essaye le débuggeur et il me dit qu'il peut rien faire si le programme est fermé, donc il s'arrête bêtement. :( Ça fait 30 minutes que je cherche comme un débile sur internet mais je trouve rien, alors je demande votre aide. Je ne peux pas fournir de code minimal parce que j'ai aucune idée de qu'est-ce qui fait arrêter le programme. Par contre, voici le code que j'ai testé: lightSprite.setPosition(0, 0);
Vector2i curPos = mouse.getPosition();
Vector2f lightPos = window.convertCoords(curPos) - lightSprite.getPosition();
float angle = atan2(lightPos.y, lightPos.x) * 180.f / 3.14159265f;
lightSprite.setRotation(angle);
Comme j'ai dit, même en le retirant, le programme crash, alors je sais plus du tout quoi faire. :'(
Merci!
Dans ce cas peut-être que ton programme s'arrête proprement (i.e. c'est le code qui le fait s'arrêter), tu as vérifié ça ?
Oui, enfin avec des cout (comme tu dit de ne pas faire dans ton tuto ;D ) et même si je met le cout juste avant le return, il apparaît dans la console.
Sinon tu peux toujours faire une exécution pas à pas en partant du début, tu verras bien à quel moment il s'arrête.
Avec le débuggeur? Si oui, et bien impossible de le faire marcher donc... :(
En tout cas tu t'imagines bien qu'on ne peut t'aider, en voyant un petit morceau de code qui ne fait même plus partie de ton programme :-\
Voilà le main: (la quasi-totalité du programme se trouve dedans, les autres fichiers n'étant qu'une classe hérité de sf::Sprite)
#include <iostream>
#include <SFML/Graphics.hpp>
#include "Entity.h"
#include "Math.h"
#define WINDOW_WIDTH 1360
#define WINDOW_HEIGHT 768
using namespace std;
using namespace sf;
int main()
{
int xWindow(WINDOW_WIDTH), yWindow(WINDOW_HEIGHT);
Vector2f middleScreen(xWindow/2, yWindow/2);
Vector2f posPlayer(0, 0);
Vector2f halfSize(WINDOW_WIDTH, WINDOW_HEIGHT);
RenderWindow window(VideoMode(WINDOW_WIDTH, WINDOW_HEIGHT), "The Walk", Style::Fullscreen);
Keyboard keyboard;
Font font;
font.loadFromFile("Ressources/Textures/arial.ttf");
Texture playerUp, enemy, ground, tree, light;
Entities playerEntity, goblinEntity(30, 0, "Goblin", Vector2f(0, 0));
Sprite groundSprite, treeSprite;//, lightSprite;
Text debug;
debug.setFont(font);
debug.setString("The Walk - Prototype");
debug.setPosition(10, 5);
debug.setCharacterSize(20);
debug.setColor(Color::White);
window.setMouseCursorVisible(true);
window.setVerticalSyncEnabled(true);
//***************************************************
// TEXTURES LOADING BEG.
//***************************************************
if(!playerUp.loadFromFile("Ressources/Textures/playerUp.png"))
cerr << "Can't load player texture";
else
{
playerEntity.setTexture(playerUp);
}
if(!enemy.loadFromFile("Ressources/Textures/enemy.png"))
cerr << "Can't load enemy texture";
else
{
goblinEntity.setTexture(enemy);
}
if(!ground.loadFromFile("Ressources/Textures/ground.png"))
cerr << "Can't load ground texture";
else
{
groundSprite.setTexture(ground);
}
if(!tree.loadFromFile("Ressources/Textures/tree.png"))
cerr << "Can't load tree texture";
else
{
treeSprite.setTexture(tree);
treeSprite.setPosition(100, 100);
}
/*if(!light.loadFromFile("Ressources/Textures/light.png"))
cerr << "Can't load tree texture";
else
{
lightSprite.setTexture(light);
lightSprite.setColor(Color(255, 255, 255, 40));
}*/
//***************************************************
// TEXTURES LOADING END
//***************************************************
while (window.isOpen())
{
Event event;
while (window.pollEvent(event))
{
if (event.type == Event::Closed)
window.close();
if((event.type == Event::KeyPressed) && (event.key.code == Keyboard::Escape))
{
return EXIT_SUCCESS;
}
}
if(keyboard.isKeyPressed(Keyboard::W))
{
posPlayer = playerEntity.movePlayer(NORTH);
}
if(keyboard.isKeyPressed(Keyboard::A))
{
posPlayer = playerEntity.movePlayer(WEST);
}
if(keyboard.isKeyPressed(Keyboard::S))
{
posPlayer = playerEntity.movePlayer(SOUTH);
}
if(keyboard.isKeyPressed(Keyboard::D))
{
posPlayer = playerEntity.movePlayer(EAST);
}
View view(Vector2f(posPlayer.x+32, posPlayer.y+32), halfSize);
// LE CODE QUE J'AI AJOUTÉ SE TROUVAIT ICI
window.setView(view);
window.clear(Color::Black);
window.draw(groundSprite);
window.draw(playerEntity);
window.draw(treeSprite);
//window.draw(lightSprite);
window.setView(window.getDefaultView()); // HUD
window.draw(debug);
window.display();
return 0;
}
}
Merci beaucoup pour votre aide! :)