안녕하세요
이번 강좌에서는 프로젝트를 생성하고 메인화면을 개발해보도록 하겠습니다.
저는 Dev C++로 강좌를 진행할것입니다.
Dev C++을 설치하고싶으시면 이전 강좌를 참고하시기 바랍니다.
[목차]
1. 프로젝트 생성하기
2. 타이틀 출력하기
3. 콘솔창 크기 조절하기
4. 기능별로 함수 분할하기
5. 커서 위치 이동하는 함수 구현하기
6. 메인메뉴 구현하기
[1 프로젝트 생성하기]
Dev C++을 실행하고 왼쪽상단의 메뉴바 중 파일을 선택합니다.
파일 > 새로만들기 > 프로젝트
위와같은 창이 뜨면
콘솔 어플리케이션을 선택하시고 C(또는 C++)체크,
프로젝트명은 여러분들이 원하는것으로 정해주시면 됩니다.
그리고 확인버튼을 눌러주세요
그러면 좌측 리스트에 아래와같이 main.c 소스코드가 생성됩니다.
메인 함수부분을 아래처럼 간단히 줄여줍니다.
이제 메인화면을 출력해볼건데요
printf 함수로 출력해보도록 하겠습니다.
[2 타이틀 출력하기]
출력하고싶은 글자 또는 모양을 직접 타이핑하여 출력합니다.
공백도 출력되므로 적절히 조절하면서 원하는 방식으로 만들어주시면 됩니다.
F11을 눌러주시면 컴파일 후 실행이 됩니다 (Dev C++ 기준)
원하는대로 출력이 될것입니다.
하지만 메뉴글자가 너무 작거나 커서 콘솔창에 잘 맞지 않습니다.
콘솔창 크기를 조절해봅시다.
[3 콘솔창 크기 조절하기]
system("mode con cols=가로 lines=세로 | title 창 제목");
을 추가해줍시다.
가로길이, 세로길이, 제목을 적절히 설정하시고 다시 F11로 컴파일 후 실행시켜보면 변경된 내용을 확인하실 수 있습니다.
위 과정까지 마쳤으면 계속 진행해봅시다.
[4 기능별 함수 분할하기]
초보자들에게는 말이 어려워보일수도 있습니다.
하지만 어려운게 아니라 종류별로 정리한다고 생각하시면 됩니다.
처음의 소스코드는 모두 메인함수안에서 작성되었습니다.
메인함수에 모두 작성하는것보다는 기능별로 함수로 나누어서 작성하는것이 더욱 효율적이고 확인하기 쉽습니다.
위와같이 함수를 나누어서 작성해봅시다.
titleDraw 함수는 타이틀 글자를 출력하는 함수이고
init 함수는 프로그램 실행 직후 초기화작업을 진행할 함수입니다.
두 함수를 메인함수에서 호출하기만하면 간단하게 사용할 수 있습니다.
이런식으로 자주 사용되는 기능을 함수로 나누어서 코드를 작성하시면 됩니다.
이제 메인화면의 타이틀이 잘 출력되었으니
메뉴를 제작해보도록 하겠습니다.
게임시작
게임정보
종료
이 세가지를 메인화면에 추가할건데요
새로운 함수가 하나 필요합니다.
콘솔게임의 가장 핵심이라고 할 수 있는 함수입니다.
커서의 위치를 직접 원하는 위치로 옮길 수 있는 함수입니다.
한번 선언해두고 호출해서 사용하면 되므로 초기 작업에 미리 선언하여 사용해보도록 하겠습니다.
[5 커서 위치 이동하는 함수 구현하기]
전체 강좌의 핵심 함수입니다
한번 선언해두고 이후로도 계속 사용할 함수입니다.
맨 위에 windows.h 헤더파일 인클루드 하시고
하단에 함수를 작성하시면 됩니다.
(함수이름은 마음대로 정하셔도 됩니다. 저는 편하게 gotoxy로 했습니다. 상단에 함수선언도 추가해주세요)
매개변수는 int x, int y 두개인데요
gotoxy(3, 7)로 호출하게되면
x위치가 3, y위치가 7인 지점으로 커서가 이동하게됩니다.
이동한 위치에서 출력하는 방식으로 사용될 함수입니다.
간단한 사용법을 익히기위해 아래 코드를 추가해봅시다.
위에서 구현한 gotoxy 함수를 호출하여 사용하는 모습입니다.
x, y의 위치값을 전달하면 해당 위치로 이동하는 모습을 알 수 있습니다.
(임시 테스트이므로 확인 후에 13~16행 코드는 지워주세요)
콘솔창의 좌표는 실제 수학의 좌표와 다릅니다.
x축은 수학과 같지만
y축은 정 반대입니다.
좌측 맨 위가 0, 0 원점입니다.
x는 오른쪽으로 갈수록 증가하고
y는 아래로 갈수록 증가합니다.
x, y 둘다 0미만인 음수로 가게되면 콘솔창 범위에서 벗어나 보이지 않게됩니다.
예를들어 gotoxy(20, 13)를 호출하면 위 사진의 점선이 만나는 지점쯤으로 이동하게될것입니다.
콘솔창 좌표의 최대 범위는 위에서 창크기 지정할때의 cols, lines의 길이와 동일합니다.
최소범위는 x, y 둘다 0으로 동일합니다.
[ 이동방향 ]
왼쪽: x감소
오른쪽: x증가
아래: y증가
위: y감소
어떤식으로 사용할지 이해하셨을거라 생각합니다.
잘 숙지하시길 바랍니다.
다음으로 진행해봅시다.
[6 메인메뉴 구현하기]
커서위치를 옮기는 함수를 사용하여 메인메뉴 기능을 구현해볼것입니다.
함수를 하나 더 추가해보도록 하겠습니다.
상단에 함수를 선언하고 그 아래에서 구현(31~38행)합니다.
적당한 위치로 커서를 이동하고 게임의 메뉴를 출력하면 됩니다.
저는 게임시작, 게임정보, 종료 이 세가지만 추가하도록 하겠습니다.
함수를 구현하셨으면 메인함수에서 호출하시면 됩니다.
저는 함수이름을 menuDraw 라는 이름으로 선언하였습니다.
이런식으로 메인화면을 마음대로 만들 수 있습니다.
위치가 마음에 안든다면 gotoxy 함수에서 x, y 좌표값을 조금씩 바꿔가면서 원하는 위치를 찾으시면 됩니다.
이번 강좌는 여기까지 진행하고
다음 강좌에서 키보드를 눌렀을 때 화살표가 움직이는 기능을 구현해보도록 하겠습니다.
감사합니다.