我是一名初级 C++ 程序员,我正在制作一个蛇游戏,并且我正在尝试使用 SFML 库。我想制作我的 Snake 控制台应用程序,但我想将分数显示到 SFML 窗口。不仅如此,即使我整晚都在寻找解决方案,我也不知道如何将分数显示到窗口。另外,我的 SFML 窗口一直没有响应。
\n\n我用以下代码渲染了窗口:
\n\nsf::RenderWindow window(sf::VideoMode(200, 75), "Score");\n\n\nsf::Font font;\nif (!font.loadFromFile("font.tff"))\n cout << "ERROR LOADING FONT" << endl;\nsf::Text text;\ntext.setFont(font);\ntext.setString("hello");\n// sf::String scoredis;\n\nwhile (window.isOpen()) {\n\n sf::Event event;\n while (window.pollEvent(event))\n {\n if (event.type == sf::Event::Closed)\n window.close();\n }\nRun Code Online (Sandbox Code Playgroud)\n\n然后我尝试在游戏循环内显示分数:
\n\ndo{ \n ...\n window.clear();\n window.draw(text);\n window.display();\n ...\n}while()\nRun Code Online (Sandbox Code Playgroud)\n\nmain() 内的完整代码:
\n\n{\nShowConsoleCursor(false);//nastavimo da ne kaze kurzorja\n //Nalozimo zvok ki ga bomo predvajali ko pojemo sadez\n\nsf::SoundBuffer buffer;\nif (!buffer.loadFromFile("sound.wav"))//v buffer vstavimo zvok\n{\n cout << "ERROR LOADING SOUND" << endl;//ce je kaksna napaka se prikaze to\n}\nsf::Sound sound;\nsound.setBuffer(buffer);//nastavimo nas zvok na to kaj je v bufferju\n\n/*sf::Font font;\nif (!font.loadFromFile("font.tff"))\n cout << "ERROR LOADING FONT" << endl;\nsf::Text text;\ntext.setFont(font);\ntext.setString("hello");\n// sf::String scoredis;*/\n\nsf::RenderWindow window(sf::VideoMode(200, 75), "Score");\n\n\n\nwhile (window.isOpen()) {\n\n sf::Event event;\n while (window.pollEvent(event))\n {\n if (event.type == sf::Event::Closed)\n window.close();\n }\n}\n\n int score = 0;\n int weight = 0;\n srand(time(0));\n narisi(); //draw map\n setup();\n\n thread NitZaVnos(spremembaSmeri); //ustvari in za\xc5\xbeene se nova nit, ki opravlja delo funkcije spremembaSmeri\n\n do\n {\n if (weight>50)\n {\n changed = false;\n premik(preberiSmer());\n weight = 0;\n }\n if (fruitPickup())//Funkcija ki pogleda ce je glava kace na sadezu\n {\n genFruit();//generira novi sadez\n score += 10;//dodamo tocke\n sSize++;//povecamo velikost kace\n sound.play();//predvajamo zvok\n }\n\n weight++;\n if (zalet())// Pogledamo ce se glava zaleti v telo ce vrne funkcija true skocimo izben zanke\n break;\n //stringstream ss;\n // ss << score;\n //scoredis.SetText(ss.str().c_str());\n\n window.clear();\n //window.draw(text);\n window.display();\n\n Sleep(5); //program pocaka 5 ms\n\n } while (!gameOver());\n\n\n\n gotoxy(0, visinaM + 1);\n run = false; //nastavi se vrednost spremenljivke run na false, da se lahko stranska nit zakljuci\n NitZaVnos.join(); //stranska nit ze sedaj sinhronizira z glavnim programom\n return 0;\n}\nRun Code Online (Sandbox Code Playgroud)\n