전체 글

전체 글

    [C++] Hollow Escape

    안녕하세요 이번 포스팅에서는전에 개발한 Hollow Escape 라는 콘솔게임을 첨부하려고합니다. 제가 진행하였던 '콘솔게임 프로그래밍' 과 동일한 방식의 게임입니다.가장 큰 차이점은 사운드의 유무! 본 게임은 브금, 효과음이 있습니다.조금 덜 지루하게 플레이가 가능합니다. 스크린샷으로 확인해보도록하죠 메인화면입니다. 실제로 있는 Hollow Knight 라는 게임을 모티브로 개발하였습니다. (너무 똑같잖...읍읍) 도움말입니다. 이동은 화살표키입니다.게임 도중 ESC 키를 누르면 일시정지 메뉴가 나옵니다. 게임시작을 선택하면 맵을 고를 수 있습니다. (현재 1~3까지 완성됨, 4: 미완성, 5: 아무작업안함) 위 사진은 첫번째 맵인 잊혀진 교차로의 모습입니다. 알록달록해서 이쁘긴한데 몇분 하다보면 눈아..

    [C] 학생 성적관리 프로그램

    안녕하세요 본 포스트는 개발된 프로그램을 올리기위한 목적으로 작성된 글입니다. 개발해놓은지 꽤 지났는데 이제서야 올리네요(사실 신경도안씀) 간단한 설명을 드리자면.. 이름, 국어, 수학, 영어이 4가지 데이터를 입력하면 파일로 저장됩니다. 프로그램 실행시 저장된 데이터를 불러오고 조회, 수정, 삭제가 가능합니다. 스크린샷으로 보도록하겠습니다.메인화면 조회 데이터 추가 수정(삭제도 위와 비슷함) 알록달록하기만하지 유용하지는않네요 exe 파일과 소스코드를 첨부해두도록 하겠습니다 감사합니다

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

    안녕하세요 이번 강좌는 게임 클리어기능입니다. 이번 강좌가 마지막이 되겠네요 지금까지 잘 해오셨다면 마지막이 제일 쉬울것입니다. 먼저 game.h 헤더파일에서 move 함수에 int*형 매개변수를 추가합니다. 그리고 game.c 에서 move 함수를 호출하는 부분에서 마지막 인자로 playing의 메모리 주소를 전달해줍시다. 실제 move 함수에도 추가해줘야겠죠? 추가해줍니다. 맵 오브젝트 조건을 검사하는 if 문 맨 아래에 if else 문을 추가해줍니다. 저는 게임 종료(클리어) 맵 오브젝트를 q 로 정의했기때문에 조건에서 q인지 확인합니다. 만약 q가 맞으면 playing 의 값을 0으로 변경합니다. playing 변수는 게임 루프의 조건을 담당합니다. 1: 무한반복0: 반복종료 즉, 0이면 게임이..

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

    안녕하세요 이번 강좌에서는 잠긴 문과 열쇠 아이템을 추가해보도록 하겠습니다. 기존 코드를 수정하는 부분이 많으니 잘 확인하시길 바랍니다. [ 목차 ] 1. 맵 데이터 수정하기 2. drawMap 함수 수정하기 3. move 함수 수정하기 4. drawUI 함수 수정하기 [1 맵 데이터 수정하기] game.c 소스코드의 맵 데이터를 수정할겁니다. 열쇠 아이템과 잠긴문을 맵 데이터에 추가할 예정입니다. 저는 위와같이 수정하였습니다. k는 열쇠아이템의 위치, l(소문자 L)은 잠긴문의 위치입니다. 이부분에 대해서는 여러분들이 원하는 문자로 하셔도 됩니다. 제가 수정한 맵을 출력한다면 예상결과는 아래와 같습니다.위와같은 맵이 출력될 예정입니다. 맵 데이터를 수정하였으니 drawMap 함수를 수정해봅시다. [2 ..

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

    안녕하세요 이번 강좌에서는 맵 오브젝트 제어[1]입니다. 이전에는 벽을 그냥 뚫고 지나갈 수 있었지만 오늘 벽 부분에 대해서 제어를 할것입니다. [ 목차 ] 1. 벽 통과되는 이유 알기 2. 벽 통과 못하게 제어하기 [1 벽 통과되는 이유 알기] 이전에 drawMap 함수를 구현하여 맵을 출력하였습니다. 맵이 잘 출력되었는데요 벽으로 이동하면 멈추지않고 그냥 뚫고 지나가버립니다. 위 사진은 배열데이터를 기반으로하여 출력을 했을때의 상황입니다. 저는 1이 벽, 0이 빈 공간, p가 플레이어였으므로 위와같이 그렸습니다. 맵을 그렸기만했지 다른 처리를 하지않았습니다. 출력된 맵을 뷰(View)영역이라고 생각하고 이제부터는 배열데이터와 완전 다른 세계에 있다고 생각하셔야합니다. 뷰 영역은 그저 보이기만할뿐 아무..

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

    안녕하세요 이번 강좌에서는 게임 하단에 좌표값 아이템 갯수 등(현재 아이템 구현은 안했지만)을 출력하는 기능을 구현하고게임 도중 나갈 수 있도록 기능을 추가해보도록 하겠습니다. [ 목차 ] 1. 하단에 정보 출력할 함수 구현 2. 게임 중단기능 구현 [1 하단에 정보 출력할 함수 구현 ] 저는 게임 하단에 플레이어의 위치와 보유하고있는 아이템의 갯수(추후에 열쇠 아이템을 추가할 예정입니다)를 사용자에게 보여주도록 할 예정입니다. 예상 결과는 위와 같습니다. 위치와 현재 보유하고있는 아이템을 출력하기만 하면 되죠. 크게 어렵지 않으니 잘 따라와주시기 바랍니다. 먼저 game.h 에 함수를 하나 정의합니다.저는 drawUI 라는 이름으로 정의하였습니다. 매개변수는 int* 형 2개를 받습니다.(플레이어의 x..

    [C/C++] 콘솔게임 프로그래밍 (9) - 플레이어 이동

    안녕하세요 이번 강좌에서는 플레이어 이동기능을 구현할겁니다. 이 부분만 잘 이해하시고 마친다면 남은 과정들은 다 비슷하기때문에 편하게 따라오실 수 있습니다. [ 목차 ] 1. 플레이어 이동 구현방법 2. 플레이어 위치 저장하기 3. 플레이어 이동 구현하기 [1 플레이어 이동 구현방법] 먼저 기능을 구현하기전에 어떻게 구현할지 방법을 미리 생각해야합니다.잘 생각해보면 지난 강좌를을 보면서 키보드가 눌렸을 때 무언가가 움직이도록 구현한적이 있습니다. 바로 메뉴선택기능입니다. 플레이어 이동도 방법은 똑같습니다. 다만 이동 범위가 위, 아래뿐만 아니라 좌, 우까지 움직인다는것입니다. 전에 잘 이해하였으면 큰 어려움은 없으실겁니다. 혹시나 이해가 가지않는다면 이전 강좌 중 메뉴 선택기능 구현하는 강좌를 확인하시기..

    [C/C++] 콘솔게임 프로그래밍 (8) - 게임루프

    안녕하세요 이번 강좌에서는 게임의 전반적인 기능을 사용하고 관리하는 게임 루프를 구현하도록 하겠습니다. [ 목차 ] 1. 게임 루프 구현하기 2. 플레이어 이동 구현하기 [1 게임 루프 구현하기 ] 게임루프란 무엇일까요? 게임을 진행하기 위한 반복이라고 생각하시면 됩니다. 게임이 종료될때까지 무한정 반복을 하는것입니다. 지금까지 강좌를 진행하면서 커서 위치를 옮기고 색깔도 설정하고 키보드 입력도 받을 수 있게되었는데요이 기능들을 사용하여 게임을 개발해볼겁니다. 게임 루프는 위와같이 구성할 예정입니다. 메인메뉴에서 게임을 시작하고 맵을 선택하면 처음에 초기화를 합니다.그리고 맵을 출력하고나서 게임 루프에 진입합니다. 게임 루프에서는 게임이 종료될 때까지 계속 반복하며 키보드 이벤트를 처리하고화면을 업데이트..

    [C/C++] 콘솔게임 프로그래밍 (7) - 텍스트 색상 변경

    안녕하세요 이번 강좌에서는 콘솔창의 글자 색을 변경하는 기능구현에 대해 알아보도록 하겠습니다. [ 목차 ] 1. 색 열거형 정의하기 2. 색 설정함수 구현하기 [1 색 열거형 정의하기] 먼저 util.h 에 아래 코드를 추가합니다. 3~25행까지의 내용을 추가해주세요 #ifndef 는 이제 무엇인지 아시겠죠? 열거형을 한번만 정의하기 위한 작업입니다. 아래 링크에서 열거형에 대한 설명을 확인하실 수 있습니다. https://dojang.io/mod/page/view.php?id=480 그리고 29행에 보이는것처럼 int형 매개변수가 두개인 함수를 하나 정의합니다. 저는 setColor 라는 이름으로 정의했습니다. 함수를 정의했으면 구현해야겠죠?util.c 소스코드로 와서 setColor 함수를 구현해봅시..

    [C/C++] 콘솔게임 프로그래밍 (6) - 맵 제작 및 출력

    안녕하세요 이번 강좌에서는 맵을 직접 제작하고 출력하는 기능을 구현해보도록 하겠습니다. [목차] 1. 2차원 배열에 맵 만들기 2. 맵 출력기능 구현하기 [1 2차원 배열에 맵 만들기] game.c 소스파일의 상단에 2차원 배열을 생성합니다. 배열의 크기는 자신의 콘솔창 크기보다 작게 만들어야합니다 왜냐하면 콘솔창보다 맵이 더 클경우 출력할 때 글자가 밀려서 출력됩니다. 이렇게되면 맵이 이상하게 보이게 됩니다. 콘솔창 크기는 전에 구현해두었던 init 함수에서 확인하실 수 있습니다. cols: 가로 lines: 세로 저와 여러분들은 크기가 다를 수 있습니다. 크기에 맞춰서 56x20 짜리 배열을 생성해도 되지만 저는 여백을 조금 남기고 하단에 정보확인 영역을 추가할것이기 때문에 조금 더 작은 맵을 만들예..