이근둥
근둥이의 블로그
이근둥
전체 방문자
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와 템플릿 참조(⋯

태그

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

최근 댓글

  • 어디에서도 이런 친절한 설명은 받을 수 없었습니다. 응용⋯
    미쳤다...
  • 정말 너무 감사합니다 선생님 많은 도움이 되고있습니다 어떻⋯
    김준태
  • 커서 위치이동 함수까지 했는데 컴파일하면 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++] 콘솔게임 프로그래밍 (11) - 맵 오브젝트 제어[1]
언어 & 프레임워크/C & C++

[C/C++] 콘솔게임 프로그래밍 (11) - 맵 오브젝트 제어[1]

2017. 12. 23. 20:36
반응형

안녕하세요




이번 강좌에서는 맵 오브젝트 제어[1]입니다.


이전에는 벽을 그냥 뚫고 지나갈 수 있었지만 오늘 벽 부분에 대해서 제어를 할것입니다.



[ 목차 ]


1. 벽 통과되는 이유 알기


2. 벽 통과 못하게 제어하기





[1 벽 통과되는 이유 알기]


이전에 drawMap 함수를 구현하여 맵을 출력하였습니다.


맵이 잘 출력되었는데요


벽으로 이동하면 멈추지않고 그냥 뚫고 지나가버립니다.






위 사진은 배열데이터를 기반으로하여 출력을 했을때의 상황입니다.


저는 1이 벽, 0이 빈 공간, p가 플레이어였으므로 위와같이 그렸습니다.




맵을 그렸기만했지 다른 처리를 하지않았습니다.


출력된 맵을 뷰(View)영역이라고 생각하고 이제부터는 

배열데이터와 완전 다른 세계에 있다고 생각하셔야합니다.




뷰 영역은 그저 보이기만할뿐 아무런 기능이 없습니다.

뷰를 출력하기 위한 내부 기능에 추가해야하는 사항입니다.


아래 사진은 실제 플레이어 이동을 담당하는 함수입니다.



w 키가 눌리면 무조건 위로 올라가고

a키가 눌리면 무조건 왼쪽으로 이동하게됩니다.


움직이는 부분에 벽, 아이템(추가예정)에 대한 제어부분이 없기때문에 벽을 통과하는

문제가 발생하는것입니다.


이제 이유를 알게되었으니 벽에대한 제어를 해봅시다.





[2 벽 통과 못하게 제어하기]


game.c 소스코드 내의 move 함수에 제어하는 기능을 추가해봅시다.



119행(빨간 밑줄)을 보시면 mapObject 라는 변수에 배열 값 한개를 가져오고있습니다.

맵 배열데이터 중 이동할 위치에 있는 데이터를 가져오는 부분입니다.


(저의 경우)

만약 d키를 눌렀으면 오른쪽으로 이동하도록 구현되어있습니다.

그러니 현재 위치에서 한칸 오른쪽에 있는 맵 데이터를 실제로 이동시키기 전에 임시로 가져오는 부분입니다.



그러면 이동할 위치의 맵 데이터가 mapObject 변수에 저장되어있겠죠?


이 mapObject 변수의 값을 판별하여 이동할지 이동하지 않을지 등등에 대한 제어를 하면 됩니다.



122행을 보시면 맵 데이터가 0일때만 움직이도록 되어있습니다.

132 부분의 else if 에는 1이면 아무런 동작을 하지 않게 되어있구요


아무런 동작도 하지않고 코드도 작성할 필요가 없기때문에 132행의 else if 부분은 다 지워도 됩니다. (132행~135행)



위처럼 소스코드를 수정하고 추가하신 후 실행시켜보시면 벽을 통과하던 문제가 해결됩니다!






다음 강좌에서는 맵 오브젝트 제어[2] 에 대해 진행하도록 하겠습니다.

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



감사합니다.




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

    티스토리툴바