2017-02-03 3 views
0

私は別の質問がありますので、RPGに取り組んでいて、一度にポップアップするポケモンゲームタイプのテキストを使用しようとしています。ここに私のコードです:遅延テキスト(より効率的に遅れている必要があります)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;  

} 

これは明らかに非効率的です。それは仕事をするが、コードの行が多すぎる。私は永遠に実行されるコードのほんの一行だけを望んでいません。私はたぶん私が服を置いて、すべての文字を.050秒またはスリープ(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

関連する問題