I have got some problems regarding my project and I'm creating a quiz game where the window needs to be refreshed every time a new question appears. The initial menu works fine. But after the 1st question appears, the window doesn't update and doesn't clear when using the window.clear() function. Please help me in this regard.
while(window.isOpen())
{
Event event1,event;
while (window.pollEvent(event1))
{
if (event1.type == Event::Closed)
window.close();
}
if (event1.type == Event::TextEntered && done == false)
{
if (event1.text.unicode < 128 && event1.text.unicode !=0)
{
str1 = static_cast<char>(event1.text.unicode);
text2.setString(str1);
//done = true;
}
}
//window.clear();;
window.draw(rect1);
window.draw(rect2);
window.draw(text2);
window.draw(text1);
window.draw(text3);
window.draw(text4);
window.draw(text5);
window.display();
if (Keyboard::isKeyPressed(Keyboard::Return))
{
if(text2.getString()=="1")
/*{j=1;}
}
if(j==1)*/
{
text2.setString("");
text1.setString(line1[i]);
text3.setString(line1[i+1]);
text4.setString(line1[i+2]);
window.draw(rect1);
window.draw(rect2);
window.draw(text1);
window.draw(text2);
window.draw(text3);
window.draw(text4);
window.draw(text5);
window.display();
if (event.type == Event::TextEntered && done == false)
{
if (event.text.unicode < 128 && event.text.unicode !=0)
{
str1 = static_cast<char>(event.text.unicode);
text5.setString(str1);
}
}
window.draw(rect1);
window.draw(rect2);
window.draw(text1);
window.draw(text2);
window.draw(text3);
window.draw(text4);
window.draw(text5);
window.draw(rect3);
window.display();
window.clear();
if (Keyboard::isKeyPressed(Keyboard::Return))
{
if(text5.getString()=="a")
/* {j=2;}
}
if(j==2)*/
{
text5.setString("");
//window.clear();;
text1.setString(line1[i+2]);
text3.setString(line1[i+3]);
text4.setString(line1[i+3]);
window.draw(rect1);
window.draw(rect2);
window.draw(text1);
window.draw(text2);
window.draw(text3);
window.draw(text4);
window.draw(text5);
window.display();
// window.close();
if (event.type == Event::TextEntered && done == false)
{
if (event.text.unicode < 128 && event.text.unicode !=0)
{
str1 = static_cast<char>(event.text.unicode);
text2.setString(str1);
//done = true;
}
}
//done=false;
//window.clear();;
window.draw(rect1);
window.draw(rect2);
window.draw(rect3);
window.draw(text1);
window.draw(text2);
window.draw(text3);
window.draw(text4);
window.draw(text5);
window.display();
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Return))
{
if(text5.getString()=="1")
/* {j=2;}
}
if(j==2)*/
{
text5.setString("");
//window.clear();;
text1.setString(line1[i]);
text3.setString(line1[i+1]);
text4.setString(line1[i+2]);
window.draw(rect1);
window.draw(rect2);
window.draw(text1);
window.draw(text2);
window.draw(text3);
window.draw(text4);
window.draw(text5);
window.display();
}
}
}
}
}
}
}
I have got some problems regarding my project and I'm creating a quiz game where the window needs to be refreshed every time a new question appears. The initial menu works fine. But after the 1st question appears, the window doesn't update and doesn't clear when using the window.clear() function. Please help me in this regard.
while(window.isOpen())
{
Event event1,event;
while (window.pollEvent(event1))
{
if (event1.type == Event::Closed)
window.close();
}
if (event1.type == Event::TextEntered && done == false)
{
if (event1.text.unicode < 128 && event1.text.unicode !=0)
{
str1 = static_cast<char>(event1.text.unicode);
text2.setString(str1);
//done = true;
}
}
//window.clear();;
window.draw(rect1);
window.draw(rect2);
window.draw(text2);
window.draw(text1);
window.draw(text3);
window.draw(text4);
window.draw(text5);
window.display();
if (Keyboard::isKeyPressed(Keyboard::Return))
{
if(text2.getString()=="1")
/*{j=1;}
}
if(j==1)*/
{
text2.setString("");
text1.setString(line1[i]);
text3.setString(line1[i+1]);
text4.setString(line1[i+2]);
window.draw(rect1);
window.draw(rect2);
window.draw(text1);
window.draw(text2);
window.draw(text3);
window.draw(text4);
window.draw(text5);
window.display();
if (event.type == Event::TextEntered && done == false)
{
if (event.text.unicode < 128 && event.text.unicode !=0)
{
str1 = static_cast<char>(event.text.unicode);
text5.setString(str1);
}
}
window.draw(rect1);
window.draw(rect2);
window.draw(text1);
window.draw(text2);
window.draw(text3);
window.draw(text4);
window.draw(text5);
window.draw(rect3);
window.display();
window.clear();
if (Keyboard::isKeyPressed(Keyboard::Return))
{
if(text5.getString()=="a")
/* {j=2;}
}
if(j==2)*/
{
text5.setString("");
//window.clear();;
text1.setString(line1[i+2]);
text3.setString(line1[i+3]);
text4.setString(line1[i+3]);
window.draw(rect1);
window.draw(rect2);
window.draw(text1);
window.draw(text2);
window.draw(text3);
window.draw(text4);
window.draw(text5);
window.display();
// window.close();
if (event.type == Event::TextEntered && done == false)
{
if (event.text.unicode < 128 && event.text.unicode !=0)
{
str1 = static_cast<char>(event.text.unicode);
text2.setString(str1);
//done = true;
}
}
//done=false;
//window.clear();;
window.draw(rect1);
window.draw(rect2);
window.draw(rect3);
window.draw(text1);
window.draw(text2);
window.draw(text3);
window.draw(text4);
window.draw(text5);
window.display();
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Return))
{
if(text5.getString()=="1")
/* {j=2;}
}
if(j==2)*/
{
text5.setString("");
//window.clear();;
text1.setString(line1[i]);
text3.setString(line1[i+1]);
text4.setString(line1[i+2]);
window.draw(rect1);
window.draw(rect2);
window.draw(text1);
window.draw(text2);
window.draw(text3);
window.draw(text4);
window.draw(text5);
window.display();
}
}
}
}
}
}
}
I think you are lacking some basic understanding of SFML, perhaps you need to invest in some time in some tutorials? or purchase one of the many SFML books to get you started. A few issues in your code:
window.draw(rect1);
window.draw(rect2);
window.draw(text1);
window.draw(text2);
window.draw(text3);
window.draw(text4);
window.draw(text5);
window.draw(rect3);
window.display();
window.clear();
Clears the window straight after you display the back buffer that you've drawn to. Therefore those draw calls are redundant.
- You're mixing a lot of events with draw calls. Which could work, but makes it hard to know what is going on.
- event1 and event?
- In your case, your event checking should happen in the while(window.pollEvent(event) loop