Мое приложение требует, чтобы консоль была в вложенной в окне приложения, пример был бы в такой программе, как autoCAD, где консоль находится в нижней части окна, ожидая команд.Написание консоли в приложении
мне нужна консоль в моем приложении, так что я могу изменить переменные и другие вещи, так что консоль не нуждаясь быть полностью выдувается оболочкой.
На данный момент у меня есть простая консоль в моем приложении, но она кажется очень неуклюжей по сравнению с терминалом (оболочкой), что и является желанием консоли.
То, как я сделал это с консолью у меня есть, когда пользователь нажимает TAB
ключ на консоль показывает, то они могут ввести в свою команду/строку; После нажатия клавиши Return
строка, которую они набрали, обрабатывается и команда обрабатывается.
Я использую sf::Text
объекты для распечатки текста в окне приложения. В общей сложности используются 5 sf::Text
объектов, 4 для предыдущих команд/сообщений об ошибках и 1 для текущей командной строки. Когда клавиша Return
нажата, четвертый sf::Text
изменяет свою текущую строку на 3-й, 3-й на 2-й, 2-й и 1-й на текущую командную строку, после чего текущая строка команд очищается и снова готова к вводу. Таким образом, есть место для 4 'истории' команд и/или ошибок. Не самое большое, но это было лучшее, что я мог придумать. Конечно, количество истории можно было бы изменить, добавив еще sf::Text
объектов. Таким образом, в конце концов, это, как я сделать консоль на экран
sf::RectangleShape rectangle;
rectangle.setSize(sf::Vector2f(App->getSize().x, App->getSize().y/3));
rectangle.setPosition(0, 0);
rectangle.setFillColor(sf::Color::black);
App->draw(rectangle); // This renders the console looking background rectangle
App->draw(CLine); // This renders the current command line
for(int i = 4; i >= 0; --i) // This renders the history as described above, their idevidual positions are setup earlier on in the program
{
CHistory[i].setString(CS[i]);
App->draw(CHistory[i]);
}
App
просто sf::RenderWindow*
Мой общий вопрос, Есть ли способ, что я могу встроить консоль в мой SFML window без необходимости просто быть образ текстовых объектов, которые выглядят как консоль, как я уже говорил выше. Я бы предпочел иметь реальную консоль/оболочку/терминал в своем приложении. Как и стандартная оболочка bash, но, конечно, мой собственный интерпретатор оболочки.
Я не после sfml, чтобы сделать это для меня, я добавил sfml в качестве тега и в примерах кода, чтобы показать, что я использовал sfml. Я знаю, что я должен написать это сам, то, что мне нужно, - это руководство о том, как это сделать. Как другие люди начали писать консоль в своем приложении. : D – Elgoog
Я бы предложил уточнить ваш вопрос на несколько более мелких частей, как только вы определили, чего именно вы хотите достичь. Каковы ваши требования? Попробуйте использовать ту, что есть в Quake или Unreal Tournament или в любой другой игре, в которой вы заинтересованы. –
Вольфрих разработал что-то, основанное на Webkit, по-видимому: http://www.youtube.com/watch?v=c-4WdtTGIkg&feature=relmfu –