Hello, I've been searching for a solution on this error for some time now, but I don't seem to be able to find a fix.
I'm using SFML 2.0, visual C++ 2010, Release mode, dynamic libs.
The program first displays a startmenu window, after pressing 'S' it displays the game window.
Then it should show the 4 spEddStill sprites in a loop, each for 200 milliseconds. But after the first loop or the 4 sprites, it gives an error:
Unhandled exception at 0x0fdba57f in The Next Project.exe: 0xC0000094: Integer division by zero.
Here is the Full code:
The "animation" is at line 126, the error is at line 160
// Headers die nodig zijn
#include <SFML/System.hpp>
#include <SFML/Window.hpp>
#include <SFML/Graphics.hpp>
// Functie verklaringen
int main()
{
// Een variable die zal beslissen bij welk deel het spel zit
int WelkDeel = 0; // (0 - Start Menu) (1 - Speel wereld) (2 - Game over menu )
bool PlayGame = true;
// Maak een het StartMenuWindow
sf::RenderWindow wStartMenu(sf::VideoMode(800, 600), "Edd's Adventure Start Menu!");
// Loop die zorgt dat het spel controleer welk kader er moet geopent worden
while (PlayGame)
{
switch (WelkDeel) //Bepaald welk kader er moet gemaakt worden
{
case 0:// Start Menu
// Start Menu frame loop
while (wStartMenu.isOpen())
{
sf::Event evStartMenu;
while (wStartMenu.pollEvent(evStartMenu))
{
if (evStartMenu.type == sf::Event::Closed) // Close Button: Stop game
{
PlayGame = false;
wStartMenu.close();
}
if ((evStartMenu.type == sf::Event::KeyPressed) && (evStartMenu.key.code == sf::Keyboard::Escape)) // Escape Button: Stop game
{
PlayGame = false;
wStartMenu.close();
}
if ((evStartMenu.type == sf::Event::KeyPressed) && (evStartMenu.key.code == sf::Keyboard::S)) // S Button: Start Spel
{
WelkDeel = 1;
wStartMenu.close();
}
}//End event loop
//Clears the previous frame
wStartMenu.clear(sf::Color(100,0,0,255));
//Draws the new frame
//Displays the new rendered fram
wStartMenu.display();
}//end StartMenu frame Loop
break;
case 1: //Speel wereld
//Variabelen
bool EdStandStill = true; // Stored is edd is standing still or not
//Geef de textures een bestand
sf::Texture txEddStill[3];
txEddStill[0].loadFromFile("EddStandStill1.png");
txEddStill[1].loadFromFile("EddStandStill2.png");
txEddStill[2].loadFromFile("EddStandStill3.png");
txEddStill[3].loadFromFile("EddStandStill4.png");
//Zet de afbeeldingen om naar een sprite
sf::Sprite spEddStill[3];
spEddStill[0].setTexture(txEddStill[0]);
spEddStill[1].setTexture(txEddStill[1]);
spEddStill[2].setTexture(txEddStill[2]);
spEddStill[3].setTexture(txEddStill[3]);
//Zet de sprites op een basis plaats
spEddStill[0].setPosition(100,100);
spEddStill[1].setPosition(100,100);
spEddStill[2].setPosition(100,100);
spEddStill[3].setPosition(100,100);
//Zet de sprites op de juiste groote
sf::Vector2f EddStillScale(0.3f,0.3f);
spEddStill[0].setScale(EddStillScale);
spEddStill[1].setScale(EddStillScale);
spEddStill[2].setScale(EddStillScale);
spEddStill[3].setScale(EddStillScale);
//Maak een pointer die het adress zal opslaan van het te tekenen standstill texture
sf::Sprite* pEddStill;
// Maak het Speel window aan
sf::RenderWindow wSpeel(sf::VideoMode(800, 600), "Ed's Adventure Game!");
//Een klok die zal meten hoeland de standstill animatie duurd
sf::Clock StandStillClock;
//Een klok die de frame tijd meet
sf::Clock clSpeel;
//Start Speel frame loop
while (wSpeel.isOpen())
{
// Measure the time of a frame
sf::Time ElapsedTimeSpeel1 = clSpeel.getElapsedTime();
//capture the inputs
sf::Event evSpeel;
while (wSpeel.pollEvent(evSpeel))
{
if (evSpeel.type == sf::Event::Closed) // Close Button: Stop game
{
PlayGame = false;
wSpeel.close();
}
if ((evSpeel.type == sf::Event::KeyPressed) && (evSpeel.key.code == sf::Keyboard::Escape)) // Escape Button: Stop game
{
PlayGame = false;
wSpeel.close();
}
}
//Make the standstill animation by changing the pointer
if (EdStandStill)
{
sf::Time StandStillTime = StandStillClock.getElapsedTime();
int StandStillTimeInt = StandStillTime.asMilliseconds();
int TimeBetweenStandStillAnimations = 200;
if (StandStillTimeInt < TimeBetweenStandStillAnimations)
{
pEddStill = &spEddStill[0];
}else if (StandStillTimeInt < TimeBetweenStandStillAnimations * 2){
pEddStill = &spEddStill[1];
}else if(StandStillTimeInt < TimeBetweenStandStillAnimations * 3){
pEddStill = &spEddStill[2];
}else if(StandStillTimeInt < TimeBetweenStandStillAnimations * 4){
pEddStill = &spEddStill[3];
}else{
StandStillClock.restart();
}
}
//if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left)) // left key is pressed: Move edd left
//{
//*pEddStill
// }
//Clears the previous frame
wSpeel.clear(sf::Color(0,100,0,255));
//Draws the new frame
sf::Sprite temp1 = *pEddStill;
wSpeel.draw(temp1);
//Displays the new rendered fram
wSpeel.setFramerateLimit(30);
wSpeel.display();
}//End Speel frame loop
break;
}//end Main Switch
}//end Main Loop
return EXIT_SUCCESS;
}