2014-04-21 2 views
2

C로 게임을 만들려고하는데 터미널에 표시된 출력을 업데이트하는 프로세스에 익숙하지 않습니다.터미널에 표시된 텍스트 업데이트/새로 고침

예를 들어, 각 요소에 '#'또는 '-'가 포함될 2 차원 char 배열이 있습니다. 나는이 배열을 화면에 인쇄 할 것이지만, 상태 변경이있을 때마다 새로운 2 차원 배열을 인쇄하는 것이 아니라 터미널의 이전 배열을 새로운 상태로 덮어 쓰려고합니다.

나는 이것을하기위한 방법을 찾았지만 행운이별로 없었다. 필자가 찾은 가장 가까운 것은 printf 함수 (\ r)에서 캐리지 리턴이지만 잘하면 누군가가 나에게이 작업을 수행하는 가장 좋은 방법을 말할 수 있습니다.

특히 화면에 2 차원 배열을 인쇄하고 배열의 요소를 변경 한 다음 이전 배열의 TOP에 새 배열을 인쇄하는 방법 (예 : 덮어 쓰기)은 어떻게 할 수 있습니까? 난 정말 당신의 질문에 대답하는 경우

#include<stdio.h> 

int main(void) 
{ 

printf ("#####-----\r"); 
printf ("-#####----\r"); 

} 

확실하지 :

+1

당신이 특정 질문이 있으십니까 다음 배열을 쓰기? – this

+0

질문을 업데이트했습니다. –

+0

위에 무엇을 의미합니까? – this

답변

1

(이 링크의 일부는, 코드 조각은 리눅스, 그리고 다른 윈도우 있습니다)
특정 질문에을 감안할 때, (당신이 콘솔에 배열을 작성하는 방법을 알고 가정) :

1) 첫 번째 배열을 씁니다.

#include <stdlib.h> 

void main() 
{ 
    system("cls"); 
}  

또는 표준 출력에 다음 쓰기 : (리눅스)

write(1,"\E[H\E[2J",7); 

2) 지우기 콘솔 (또는 쓰기 콘솔)이 같은
뭔가 이상

이것은/usr/bin/clear과 다른 프로세스를 생성하지 않는다는 것입니다.
또는 둘 다 :

void clear_screen() 
{ 
    #ifdef WINDOWS 
    system ("CLS"); 
    #else 
    // Assume POSIX 
    system ("clear"); 
    #endif 
} 

More Options Here

3)

+0

라이 커 (Ryyker)는 더 일찍 논평하지 않았기 때문에 사과했다. 이게 정확히 제가 찾고 있었던 것처럼 보입니다! 나는 이것을 나중에 시험해보고 모든 것이 좋다면 해결책을. 것이다. 고마워요 :) –

+0

@syco_link - 네, 때로는 일하는 것을 좋아해요. – ryyker

+0

화면을 완전히 지 웠습니다. 정확히 내가 한 것입니다. 쓰기 함수에서 표현식을 설명 할 수있는 기회가 있습니까? 고맙습니다! –

0

당신은 이런 식으로 뭔가를 시도 할 수 있습니다. 그리고 이것이 당신의 대답이 아니면 당신은 분명히 ncurses과 같은 것을 찾고 있습니다.

+0

배열은 2 차원이므로 터미널에서 10 x 10 격자 일 수 있습니다.늘어나는만큼 내가 알고 \ r 한 줄만 더 처리 할 것입니다하지만 ncurses, 고마워 것입니다 감사합니다! –

관련 문제