2012-02-09 5 views
0

안녕하세요 저는 C 프로그래밍에 익숙하지 않지만 게임을위한 메뉴를 만들고 있습니다. 나는 ascii 예술의 물고기를 표시하도록시킨다. 그리고 그것은 0.5 초마다 1 명의 성격을 움직이게된다. 나는 이것을 간단한 반복으로 완성하고 화면을 가로 지르며 끝까지 도달하면 물고기는 지워지고 다시 반복된다. 이제이 애니메이션이 진행되는 동안 사용자에게 입력을 요구하지만, getchar 또는 scanf를 사용하여 물고기 루프를 기다릴 때까지 기다렸다가 키를 누를 때까지 애니메이션이 멈 춥니 다. 누군가 내 문제에 대해 밝혀 줄까요?루프에서 멈추지 않고 루프 내부에서 문자를 가져 오는 방법은 무엇입니까?

감사합니다 - 당신이

답변

1

당신은 표준 입력 방법 중의 하나로이 작업을 수행 할 수 없습니다. 당신은 ncurses와 같은 것을 사용하거나 터미널을 raw mode로두고 꽤 멋진 조작을해야 할 것입니다. 어떤 플랫폼을 사용하고 있는지 알 수는 없지만 Linux에서는 원시 모드가 어렵고 Windows에서는 더 어려울 정도로 어렵습니다. 가능한 경우 라이브러리를 사용합니다.

+3

@ 존 린젤 바토 (JohnRiselvato). – Beta

+0

안녕하세요 Chris, 왜 스레드 대신이 코드를 사용해야하는지 자세히 설명해 주시겠습니까? –

+1

@JohnRiselvato : 큰 문제는 터미널이 여러 스레드가 쉽게 공유 할 수있는 것이 아니라는 것입니다. 쓰래드가 사용자가 타이핑을 시작하자마자 모든 문자가 왜곡되거나 이상하게 보일 수도 있습니다. 최소한의 에코를 끄는 것과 같은 것을 할 필요가 있습니다. 그리고 예, 실은 실제로 작업을 더 쉽게 만듭니다. 그러나 이러한 방식으로 수행하는 경우에는 필요하지 않으며 솔로 작업 스레드가 약간 중량급 인 것처럼 보입니다. 설명은 –

0

Threads에 오신 것을 환영합니다.

스레드가 컴퓨터의 작동 방식을 이해할 수 있도록합니다. 컴퓨터가 스레드없이 실행되는 경우 동시에 여러 응용 프로그램을 실행할 수 없습니다. 쓰레드는 프로그램이나 인터페이스의 여러 부분이 서로 의존하지 않고 동시에 실행되도록합니다.

귀하의 경우 입력을위한 스레드와 애니메이션을위한 별도의 스레드가 필요합니다. 따라서 둘 모두 별도로 실행할 수 있습니다.

+0

멀티 스레딩은 초보자가 프로그래밍 언어와 OS를 잘 알기 전까지는 피할 수없는 고급 주제입니다. – Lundin

관련 문제