2012-06-22 3 views
0

Я хочу сделать мой 2D semi_text на основе сцены игры, в консоли (CMD), как мой выходной кадр ...Как рисовать мой простой мир 2D игр, в консоли, гладко?

Я сделал это печати 2D-массив простого характера, которые представляют свой игровой мир , (например, «-» и «|»)

, но каждый кадр (= каждый цикл) Я хочу очистить экран, чтобы перерисовать мою матрицу. и теперь я использую систему («cls») ... Но это слишком медленно! Вот моя функция визуализации:

void Engine::engineRender() 
{  
    system("cls");   
    // Render Background   
    for(int i=0; i<10 ; i++) 
    {  
     for (int j=0 ; j<40 ; j++) 
     {   
      printf("%c",map[i][j]);    
      if((int)(player1->yPos)==i && (int)(player1->xPos)==j) 
       printf("\b&");   

     }   
     printf("\n");   
    } 
} 

И мой основной цикл игры заключается в следующем:

while(true) 
    { 
     _ftime(&cur); 
     elapsMili += (cur.time - last.time)*1000 + (cur.millitm - last.millitm) ; 

     if (elapsMili >= 1000/frameRate){ 
      elapsMili -= 1000/frameRate ; 
      last=cur; 
      needRender = true ; 
     } 
     engineUpdate(); 
     if (needRender){ 
      engineRender(); 
      needRender=false; 
     } 
    } 

любая идея, что более гладкой рендеринга?

+0

Вы должны вставить свой код, чтобы получить лучшую помощь. – ControlAltDel

+1

Возможно, попробуйте не очищать экран каждый раз, а обновлять те символы, которые были изменены после рисования предыдущего кадра и должны быть нарисованы по-разному в текущем. –

ответ

0

Вы можете попробовать a little library Я сделал именно для этой цели (быстрая гладкая консольная рендеринга). Это должно быть довольно просто использовать. Он работает только на окнах.

+0

Извините, но для меня это немного поздно, и я просто взглянул на ваш код. хорошая работа ! Надеюсь, что ваш код работает для других людей;) – Emadpres