SFML и C++ Уроки \ Разработка игр › Форумы › Логика игр › действие, зависящее от элемента массива
Помечено: игра sfml visual studio 2015 с++
В этой теме 1 ответ, 2 участника, последнее обновление KindRedSand 7 года/лет, 4 мес. назад.
-
АвторСообщения
-
Добрый день!
Создаю игру в visual studio 2015 c++ с помощью sfml. Смысл игры почти скопирован с Mario, но я уже 2 недели не могу воплотить идею, что при столкновении и кубиком(в массиве карты обозначен буквой s) на экран выводилось облако(из файла png), в котором написан пример(рандомное число плюс рандомное число), и если ты правильно решишь, введешь число и нажмешь enter, то наверху в score у тебя прибавится очко, а если нет-просто продолжаешь играть. Может у кто-нибудь знает, как это сделать???
На MSDN же было TimedMathQuiz
Вобще тебе придётся позаботиться о переключении управления и использовать в window.poolEvent(event)
C++12345678910111213141516171819202122232425262728293031//В 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++123456789101112131415161718//При проверке коллизии игрока проверяй с чем сталкиваешся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 так что не факт что проверка на символы юникода будет работать. Если текст вводится вовсе не будет убери ту проверку.
-
АвторСообщения
Для ответа в этой теме необходимо авторизоваться.