2016-06-07 133 views
1

嗨,大家好,我試圖編寫一個可以從左到右移動的笑臉。我設法編寫了笑臉並打印出來。但我沒有把它編碼,所以它可以從左到右移動。將char數組從左向右移動

這裏是我的代碼直到現在:

#include <stdio.h> 
#include <stdlib.h> 

int charprint(char x[][8], int X, int Y) 
{ 
    for (int i = 0 ; i<X ; i++) 
    { 
     for (int j = 0; j<Y; j++) 
     { 
      if(x[i][j]== '1') 
      { 
       printf(" "); 
     } 
     else 
     { 
      printf("%c", 219); 
      } 

     } 
     printf("\n"); 
    } 

} 
int main() 
{ 
    char bitmap [8][8] = 
    { 
     {'1', 'X', 'X', '1', '1', 'X', 'X','1'}, 
     {'1', 'X', 'X', '1', '1', 'X', 'X','1'}, 
     {'1', '1', '1', '1', '1', '1', '1','1'}, 
     {'X', '1', '1', '1', '1', '1', '1','X'}, 
     {'1', 'X', '1', '1', '1', '1', 'X','1'}, 
     {'1', '1', 'X', 'X', 'X', 'X', '1','1'}, 
     {'1', '1', '1', '1', '1', '1', '1','1'}, 
     {'1', '1', '1', '1', '1', '1', '1','1'}, 
    }; 
    charprint(bitmap, 8, 8); 
    return 0; 
} 
+1

的memmove()每行不是添加你必須移動在每行 –

+0

這樣做的主要問題將是移動顯卡真的不順利與控制檯輸出在一起的一個字符。您需要使用一些操作系統特定的庫才能使圖形部件正常工作。 – Lundin

+0

你必須做一些「終端魔術」來讓它看起來不錯=>轉義序列在打印後清除屏幕,並使用sleep()延遲一些毫秒。 –

回答

0

你必須要考慮「移動和移動後填補空白」和「環繞運動」之間的區別。

for each line: 
    temp = wrap ? (moveleft() ? line[0] : line[7]) : '1' 
    memmove(line + moveleft() ? 0 : 1, line + moveleft() ? 1 : 0, 7) 
    line[moveleft() ? 7 : 0] = temp