2017-02-03 3 views
0

Привет, ребята, у меня есть еще один вопрос, поэтому я работаю над RPG, и я пытаюсь использовать текст типа игры Pokemon, из-за чего появляется одна буква. Вот мой код:Отложенный текст (требуется более эффективная отсрочка) C++

#include <iostream> 
#include <string> 
#include <windows.h> 
#include <sys/types.h> 

using namespace std; 

string name; 

VOID WINAPI Sleep(
    _In_ DWORD dwMilliseconds 
); 

void pushX(int num) { 
    for (int i = 0;i<num;i++) 
     cout << " "; 
} 

void main() { 

    system("cls"); 
    cout << "H"; 
    Sleep(50); 
    cout << "e"; 
    Sleep(50); 
    cout << "l"; 
    Sleep(50); 
    cout << "l"; 
    Sleep(50); 
    cout << "o"; 
    Sleep(50); 
    cout << ","; 
    Sleep(50); 
    cout << " "; 
    Sleep(50); 
    cout << "W"; 
    Sleep(50); 
    cout << "e"; 
    Sleep(50); 
    cout << "l"; 
    Sleep(50); 
    cout << "c"; 
    Sleep(50); 
    cout << "o"; 
    Sleep(50); 
    cout << "m"; 
    Sleep(50); 
    cout << "e"; 
    Sleep(50); 
    cout << " "; 
    Sleep(50); 
    cout << "T"; 
    Sleep(50); 
    cout << "o"; 
    Sleep(50); 
    cout << " "; 
    Sleep(50); 
    cout << "T"; 
    Sleep(50); 
    cout << "h"; 
    Sleep(50); 
    cout << "e"; 
    Sleep(50); 
    cout << " "; 
    Sleep(50); 
    cout << "G"; 
    Sleep(50); 
    cout << "a"; 
    Sleep(50); 
    cout << "m"; 
    Sleep(50); 
    cout << "e"; 
    Sleep(50); 
    cout << "!\n"; 
    system("Pause"); 
    system("cls"); 
    Sleep(50); 
    cout << "P"; 
    Sleep(50); 
    cout << "l"; 
    Sleep(50); 
    cout << "e"; 
    Sleep(50); 
    cout << "a"; 
    Sleep(50); 
    cout << "s"; 
    Sleep(50); 
    cout << "e"; 
    Sleep(50); 
    cout << " "; 
    Sleep(50); 
    cout << "T"; 
    Sleep(50); 
    cout << "e"; 
    Sleep(50); 
    cout << "l"; 
    Sleep(50); 
    cout << "l"; 
    Sleep(50); 
    cout << " "; 
    Sleep(50); 
    cout << "M"; 
    Sleep(50); 
    cout << "e"; 
    Sleep(50); 
    cout << " "; 
    Sleep(50); 
    cout << "Y"; 
    Sleep(50); 
    cout << "o"; 
    Sleep(50); 
    cout << "u"; 
    Sleep(50); 
    cout << "r"; 
    Sleep(50); 
    cout << " "; 
    Sleep(50); 
    cout << "N"; 
    Sleep(50); 
    cout << "a"; 
    Sleep(50); 
    cout << "m"; 
    Sleep(50); 
    cout << "e"; 
    Sleep(50); 
    cout << "!\n>> "; 
    cin >> name; 
    system("cls"); 
    Sleep(50); 
    cout << "H"; 
    Sleep(50); 
    cout << "e"; 
    Sleep(50); 
    cout << "l"; 
    Sleep(50); 
    cout << "l"; 
    Sleep(50); 
    cout << "o"; 
    Sleep(50); 
    cout << ","; 
    Sleep(50); 
    cout << " "; 
    Sleep(50); 
    cout << name; 
    Sleep(50); 
    cout << "!\n"; 
    system("pause"); 
    return;  

} 

И это явно неэффективно. Это делает работу, но слишком много строк кода. Мне также не нужна только одна строка кода, которая работает навсегда. Я ищу, может быть, функцию, которая находит всякий раз, когда я кладу cout, и делает каждую букву на удалении 0,50 секунды или Sleep (50); спасибо за помощь U

+0

Обычно игры делают в непрерывном [игровом цикле] (http://gameprogrammingpatterns.com/game-loop.html), где бы каждый символ текста по расписанию, чтобы показать на несколько кадров, чтобы создать внешний вид «замедленного текста». –

+0

Используйте цикл for для итерации по массиву символов – awiebe

ответ

0
void pokeprint(char* s){ 
     int N = strlen(s); 
     system("cls"); 
     for(int i=0; i<N;i++) 
     { 
     Sleep(50); 
     cout << s[i]; 
     } 
     cout << "\n"; 
     system("Pause"); 
     system("cls"); 
} 
+0

Итак, я не так хорош в функциях, так как бы я это назвал? – ActiveGaming

+0

Хорошо, я вижу, как это работает. Он отлично работает, вы просто положили pokeprint («Привет, Добро пожаловать в игру!»); Спасибо за помощь :) – ActiveGaming

+0

Не могли бы вы рассказать мне, как использовать Строки вместе с ней для моей строки имени. Когда я использую cout << name; он пропускает это, затем переходит в систему («пауза»); затем он возвращается к cout << name; – ActiveGaming

Смежные вопросы