2011-04-25 3 views
3

간단한 인터넷 채팅 프로그램을위한 간단한 ASCII 사용자 인터페이스를 만들려고합니다. I는 다음과 같이 그것을 계획입니다 :C++의 ASCII 사용자 인터페이스 (Unix PuTTY 터미널, 이스케이프 시퀀스 사용)

(이름) : 메시지
(이름) : 메시지
---------------------- -----------------------
(당신) : 메시지 | (커서)

나는 ASCII (ANSI?) 제어 문자를 사용할 것입니다. 이것을 달성하기 위해.

채팅 클라이언트가 서버에서 메시지를 수신 할 때마다 메시지가 대시 라인 위의 첫 번째 메시지로 표시되도록 업데이트 한 다음 커서를 이전 위치로 되돌려 사용자가 계속해서 입력 한 곳에서 계속 입력 할 수있게해야합니다 떨어져서.

내 초기 계획이었다 : 현재 커서 위치 저장
1. (\ E7)
2. 이동 (대시 라인)까지 커서를 한 라인과 그 라인 (\ 전자의 시작 [ (\ n)
4. 커서를 다시 한 줄 위로 이동하여 (빈 줄) (\ e [1A]
5. 서버에서 메시지를 인쇄하십시오
6. 모두 함께

를 이전 커서 위치 (\ E8)를 복원 "\ E7 \ E [층 \ n 개의 \ 전자 [1A"0123을 <메시지 < < "\ e8";

어디에서 문제가 발생하는지는 개행 문자가 커서를 다음 줄로 이동하는 것일뿐 실제로 빈 줄을 삽입하지 않는 것입니다. 이 동작을 어떻게 수행 할 수 있습니까?

이것은 숙제를위한 것입니다.하지만 이것은 제가 스스로 추가하고 싶어하는 것입니다. 실제 할당이 이미 완료되었습니다.

참고 : 사용자 입력을 자체 화면에서 처리하는 알고리즘은 이미 올바르게 처리됩니다.

답변

0

pdcurses과 같은 것을 찾으십시오. 그것은 크로스 플랫폼입니다. 그러면 모든 조작이 훨씬 쉬워 질 것입니다. 또한 코드가 이식 가능하지 않다면 * nix의 curses와 Windows의 고대 conio 라이브러리를 확인할 수 있습니다.

0

curses 라이브러리를 사용하는 것이 좋습니다 (자세한 내용은 Wikipedia 참조).

0

bash를 사용하는 경우 문자를 사용하는 특수 명령을 사용하여 이스케이프 처리를 수행 할 수 있습니다. 참조 http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x361.html

+0

PuTTY 터미널에서 bash를 사용할 수 있습니다. 나는 본질적으로 당신의 링크가 설명하는 것을하고있다. 단지 \ e의 8 진수 표현 인 \ 033 대신 \ e 이스케이프 문자를 사용한다. – Diggy

+0

및 ...? 이제 커서를 관리하는 데 필요한 모든 것이 있습니다. –

관련 문제