onjo0127   8년 전

애니매이션은 어떻게 넣나요?

그리고 뭔가를 입력하고 엔터를 쳐야 다음 명령어가 실행되는데 방향 조작 같은 걸 할 때는 엔터를 치지 않고 입력되게 해야 하는데 어떻게 해야 하죠?

정보올림피아드 위주로 공부를 하다 보니 이런 건 잘 모르겠네요

도와주세요

ddaafftt   8년 전

이 부분은 C언어에 대해 아는게 거의 없을때에 조금 하고 말았지만... 시행착오를 줄이시는데 조금이나마 도움이될까 해서 글을 적어봅니다.

Windows의 콘솔 환경일시에는 <conio.h> 나 <Windows.h> 에 있는 함수를 이용합니다.

애니메이션이라면 글자가 움직이는것이 되겠는데요,

  1. 화면을 전부 지우고 다시 전체적인 화면을 출력 ( system("cls") )
  2. 변경되는 부분의 좌표에 커서를 옮겨 그 부분만 수정하는 것 ( gotoxy(x, y) )

이렇게 두가지 정도가 있습니다.

1번 방법이 쉽긴 하나 10x10 이상의 글자들이라면 지우고 그리느라 화면이 깜빡거리는게 보입니다. 경우에 따라선 거슬려보이긴 합니다.
2번 방법은 그런 문제점은 없으나 1번에 비해서는 다소 까다롭습니다.

엔터 없이 입력을 하는거면 보통 getch 같은 함수를 사용하곤 합니다.

주의하실점은 알파벳이나 숫자같은경우는 상관 없지만 방향키같은경우는 확장 아스키 코드를 사용하기 때문에 그부분에 대한 처리를 해주셔야합니다.

아마 방향키를 입력을 하면 char형 데이터가 두번 들어와서 마지막으로 들어오는 숫자를 빼서 쓰던가.. 할겁니다.

아니면 Win32 API쪽으로 들어가셔서 GetKeyState() 나 GetAsyncKeyState() 함수를 사용할수도 있습니다.
이 함수들을 사용하면 키가 눌렸는지 다시 올라갔는지나 정확히 어느 곳에 위치한 키를 눌렀는지를 파악할수 있을겁니다.

http://ideone.com/cwmIyV

제가 C언어를 배운지 3개월째에 만든것인데 좀 많이 부끄럽긴 하지만 (ㅠㅠ) 이 소스를 보시면 참고가 되실겁니다.

ddaafftt   8년 전

gotoxy() 함수가 실제로 존재하는것은 아니고 구현을 해야하는데,

아마 gotoxy 함수라고만 쳐도 사람들이 구현해놓은 함수들이 보일텐데 그걸 사용하시면 됩니다.

baekjoon   8년 전

저는 그래서 iOS 앱 개발을 시작했었죠

h0ngjun7   8년 전

저도 초딩 때 5목 콘솔 게임 만들어서 학교 컴퓨터실에서 애들이랑 같이 하고 그랬었는데ㅋㅋㅋ

MFC로 구현하면 편했던 것만 기억에 남네요.

indioindio   8년 전

ncurses 라이브러리로 만들었던 기억이 있네요

ddaafftt   8년 전

ncurses 라이브러리 말씀하시니 이 글이 생각나는군요..

귀찮으시면 http://tvpot.daum.net/v/v9f091eG18BBjSS1n170Lj7 주소로 가셔서 영상만 보시면 됩니다

댓글을 작성하려면 로그인해야 합니다.