SFML и C++ Уроки \ Разработка игр › Форумы › Логика игр › действие, зависящее от элемента массива › Ответ в теме: действие, зависящее от элемента массива
На MSDN же было TimedMathQuiz
Вобще тебе придётся позаботиться о переключении управления и использовать в window.poolEvent(event)
C++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
//В while (window.pollEvent(event)) if (true /*bool который тригерится при столкновении с блоком 's' */) { if (event.type == sf::Event::TextEntered) { if (event.text.unicode == '0' || event.text.unicode == '1' || event.text.unicode == '2' || event.text.unicode == '3' || event.text.unicode == '4' || event.text.unicode == '5' || event.text.unicode == '6' || event.text.unicode == '7' || event.text.unicode == '8' || event.text.unicode == '9') { result.setString(result.getString() + event.text.unicode); } } if (event.type == sf::Event::KeyPressed) { if (event.key.code == sf::Keyboard::Return)//Enter { if (resCheck == std::stoi(result.getString().toAnsiString())) { //Ввод верный } else { //Ввод неверный } } } } else { //...// } |
C++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
//При проверке коллизии игрока проверяй с чем сталкиваешся if (true /*При столкновении с блоком 's' */) { std::srand(time(0));//Это сбрасывает таблицу псевдослучайных чисел /*Тригерим bool*/ string buf; std::stringstream ss; ss << std::rand(); ss >> buf;//Здесь число ограничено [0; std::numeric_limits<int>::infinity();] var1.setString(buf);//Первое рандомное число ss << (std::rand() % 100); ss >> buf;//Здесь случайное число ограничено в диапазоне [0; 99] var2.setString(buf);//Второе рандомное число result.setString("");//Обнуляем ответ resCheck = std::stoi(var1.getString().toAnsiString()) + std::stoi(var2.getString().toAnsiString()); } |
Код набросан на вскидку как помню статью с MSDN так что не факт что проверка на символы юникода будет работать. Если текст вводится вовсе не будет убери ту проверку.