이근둥
근둥이의 블로그
이근둥
전체 방문자
874,952
오늘
323
어제
187

공지사항

  • 전체보기 (107)
    • 웹 (9)
    • 언어 & 프레임워크 (53)
      • JavaScript (7)
      • TypeScript (0)
      • Node.js (11)
      • Vue.js (3)
      • React (0)
      • React Native (0)
      • C & C++ (19)
      • Java & JSP (9)
      • Python (4)
    • 컴퓨터 과학 (3)
      • 알고리즘 (0)
      • 자료구조 (3)
    • 기타 (9)
      • Linux (1)
      • Git (2)
      • DialogFlow (4)
    • 일상 (13)
      • 게임 (13)
    • 칼럼 (9)
      • 회고 (0)
      • 나만의 글 (0)
      • 제품 리뷰 (9)
    • __Dev__ (9)
      • Release (9)
반응형

인기 글

  • 웹 푸시 알림(Web Push Notification)
    2022.06.13
    웹 푸시 알림(Web Push Notification)
  • [Tomcat] 아파치 톰캣 서버 포트 변경하기
    2018.08.24
    [Tomcat] 아파치 톰캣 서버 포트 변경하기
  • [Node.js] 실시간 채팅 서비스 만들기(5) - 채팅⋯
    2018.05.31
    [Node.js] 실시간 채팅 서비스 만들기(5) - 채팅⋯
  • [C/C++] 콘솔게임 프로그래밍 (1) - 프로젝트 생성⋯
    2017.12.19
    [C/C++] 콘솔게임 프로그래밍 (1) - 프로젝트 생성⋯
  • [Vue 3] Composition API와 템플릿 참조(⋯
    2020.10.02
    [Vue 3] Composition API와 템플릿 참조(⋯

태그

  • vue
  • vuex
  • 자바 프로젝트
  • 이클립스
  • Composition API
  • 출간
  • java
  • AstroWar
  • 웹 확장
  • 프로그레시브 웹 앱
  • Deemo
  • composition-api
  • javascript
  • 전개 구문
  • 자바
  • pwa
  • self
  • Vue 3
  • Java FX
  • spread syntax
  • 파티클
  • vue-next
  • vue.js
  • 이펙트
  • WWDC
  • WWDC20
  • ES6
  • vue3
  • Scanner
  • Hello World!

최근 댓글

  • 어디에서도 이런 친절한 설명은 받을 수 없었습니다. 응용⋯
    미쳤다...
  • 정말 너무 감사합니다 선생님 많은 도움이 되고있습니다 어떻⋯
    김준태
  • 커서 위치이동 함수까지 했는데 컴파일하면 Makefile.⋯
    Qour94
  • iOS의 경우 애플에서 개발하고 있는 webkit 엔진을 ⋯
    이근둥
  • android, IOS에서 된다고 했는데 Notifica⋯
    삽자루부대

최근 글

  • 웹 푸시 알림(Web Push Notification)
    2022.06.13
    웹 푸시 알림(Web Push Notification)
  • 스택(Stack)
    2022.05.26
    스택(Stack)
  • 배열(Array)
    2022.05.25
    배열(Array)
  • C언어로 배우는 자료구조
    2022.05.24
    C언어로 배우는 자료구조
  • [Vue 3] Composition API와 템플릿 참조(⋯
    2020.10.02
    [Vue 3] Composition API와 템플릿 참조(⋯

블로그 메뉴

  • 홈
  • 미디어로그
  • 방명록
hELLO · Designed By 정상우.
이근둥

근둥이의 블로그

[C/C++] 콘솔게임 프로그래밍 (10) - 하단 UI 및 게임중단 기능
언어 & 프레임워크/C & C++

[C/C++] 콘솔게임 프로그래밍 (10) - 하단 UI 및 게임중단 기능

2017. 12. 22. 23:03
반응형

안녕하세요



이번 강좌에서는 게임 하단에 좌표값 아이템 갯수 등(현재 아이템 구현은 안했지만)을 출력하는 기능을 구현하고

게임 도중 나갈 수 있도록 기능을 추가해보도록 하겠습니다.



[ 목차 ]


1. 하단에 정보 출력할 함수 구현


2. 게임 중단기능 구현






[1 하단에 정보 출력할 함수 구현 ]



저는 게임 하단에 플레이어의 위치와 보유하고있는 아이템의 갯수(추후에 열쇠 아이템을 추가할 예정입니다)를


사용자에게 보여주도록 할 예정입니다.




예상 결과는 위와 같습니다.



위치와 현재 보유하고있는 아이템을 출력하기만 하면 되죠.


크게 어렵지 않으니 잘 따라와주시기 바랍니다.






먼저 game.h 에 함수를 하나 정의합니다.

저는 drawUI 라는 이름으로 정의하였습니다.


매개변수는 int* 형 2개를 받습니다.

(플레이어의 x, y 위치를 출력할것이기 때문에)

(왜 하필 포인터변수를 사용하는지 이해가 안가신다면 이전 강좌를 확인해주세요)



정의하였으면 이제 구현해봅시다.


game.c 소스코드에 함수를 구현합니다.



먼저 색을 기본값으로 설정해줍니다.


그리고 gotoxy로 적절한 위치를 찾아줍니다.

(이 부분은 여러분들이 값을 변경해가면서 찾아주시면 됩니다)


적절한 위치가 어디냐면 제 기준으로

위 사진의 화살표 부분입니다.


저는 저쪽에다가 출력할 예정입니다.





위치를 설정한 후 플레이어의 위치를 출력합니다.


%02d 는 정수 형태로 출력 + 2글자로 출력한다는 의미입니다.



플레이어 좌표를 출력하였으면 아래에 아이템도 추가해줍니다. (현재 아이템 기능이 없으므로 이부분은 건너뛰어도 됩니다.)




함수를 모두 구현하였으면 함수를 사용해봅시다.




게임 루프내에 아래와 같이 작성합니다.



키 이벤트 받기 전에 방금 구현한 UI 그리는 함수를 호출합니다.


인자로는 플레이어의 x, y 값을 저장해두는 변수의 주소값을 전달하면 됩니다.



한번 컴파일 후 실행하여 결과를 확인해봅시다.




(실행결과)


위와같이 하단에 정보가 출력되고 있습니다.

(위치가 마음에 안들거나 이상하게 출력되면 gotoxy의 좌표값을 계속 변경해보면서 적절한 위치를 찾으세요)



이제 하단 정보영역은 어느정도 구현했으니 게임 중단기능을 구현해봅시다.





[2 게임 중단기능 구현]


현재상태로는 게임을 시작하면 창을 닫지 않는이상 프로그램 내에서 중단할 수 없습니다.



사용자가 특정 키를 누르면 게임에서 빠져나올 수 있도록 기능을 구현해봅시다.



저는 게임 중단 키를 스페이스바로 사용할것입니다.


이전에 스페이스바는 메인메뉴에서 선택하는 용도로 사용하였지만

게임 내에서는 종료하는 기능으로 사용하겠습니다.


(다른 키를 사용하고싶으시면 키보드값을 정의하시고 사용하시면 됩니다)




키보드값 정의에 대한 설명은 아래 강좌에 있습니다.

http://codevkr.tistory.com/15






게임루프 안에 case 를 추가해줍니다.


입력한 키에 대한 값이 SUBMIT일 경우 playing 변수를 0으로 설정합니다.


playing 변수는 게임 루프(while)의 조건을 제어하는 변수인데요


1일때는 참(게임 진행), 0이면 거짓(게임 종료)입니다.

그래서 playing = 0 명령을 작성하였습니다.




위와같이 작성하였으면 한번 컴파일시키고 테스트해보세요!


게임 중 중단키(저의 경우는 스페이스바)를 누르면 다시 메인화면으로 돌아오게됩니다!





이번 강좌는 크게 어려운 부분이 없었습니다.


앞으로 남은 강좌도 크게 어렵지 않으니 잘 보시고 본인만의 콘솔게임을 개발해보세요!




다음 강좌에서는 맵 오브젝트 제어(1) 에 대해 설명하도록 하겠습니다.


[맵 오브젝트 제어는 크게 3가지 주제로 나눠서 진행합니다]

(1 - 벽 통과 못하게 제어)

(2 - 열쇠 아이템 추가 및 잠긴문 추가)

(3 - 목적지에 도착시 탈출(클리어)기능)



감사합니다.


반응형
저작자표시 비영리 동일조건
    '언어 & 프레임워크/C & C++' 카테고리의 다른 글
    • [C/C++] 콘솔게임 프로그래밍 (12) - 맵 오브젝트 제어[2]
    • [C/C++] 콘솔게임 프로그래밍 (11) - 맵 오브젝트 제어[1]
    • [C/C++] 콘솔게임 프로그래밍 (9) - 플레이어 이동
    • [C/C++] 콘솔게임 프로그래밍 (8) - 게임루프
    이근둥
    이근둥
    새로운 것을 좋아하는 프론트엔드 개발자 ✨
    댓글쓰기

    티스토리툴바