언어 & 프레임워크/C & C++

    [C/C++ 자료구조] 단일 연결리스트(Linked list) - 출력, 검색, 메모리 해제

    안녕하세요 이번 포스팅에서는 지난 포스팅에 이어서 출력함수검색함수메모리 해제 함수 를 구현해보도록 하겠습니다! 지난시간의 코드에서 조금 수정, 삭제를 해봅시다. 함수 선언 부분에 위와같이 3개의 함수를 선언해줍니다. 함수 이름은 원하시는걸로 하셔도 됩니다.저는 알기 쉽게하기 위해 관련 단어로 조합하였습니다. 선언해두었으면 맨 아래에 구현 부분을 위와같이 작성해줍니다. 메인함수는 위처럼 간단히 수정해줍니다. 기존의 출력 부분은 복사해서 출력함수에아래와 같이 붙여넣기해주세요 출력함수는 벌써 구현이 끝났습니다! 이전시간에 이미 다 만들어놓은것을 함수로 나누기만 했습니다. 이번 포스팅에서 실제 구현할 부분은 검색과 메모리 영역 해제(free) 부분입니다. 검색기능 구현 전에 아래 그림으로 어떻게 구현할지 생각해..

    [C/C++ 자료구조] 단일 연결리스트(Linked list) - 추가, 삭제

    안녕하세요 이번 포스팅에서는 이전 시간에 구현하였던 간단한 연결리스트 예제에서 노드 추가, 삭제 함수를 구현해보도록 하겠습니다! 연결리스트에 대해 개념만 잘 이해하셨다면 금방 이해하실 수 있습니다! 지난번 소스코드를 약간 수정하고 추가를 해봅시다. 메인함수 안의 코드는 머리노드 생성 부분과출력 부분만 남기고 지워주시구요 구조체 선언 아래에 함수 선언을 해주시면 됩니다! 그리고 맨 아래처럼 선언한 함수를 구현하기 위해 준비를 해주세요 지난 시간에도 간단히 설명했던 노드 추가 부분 입니다. 처음 노드는 HEAD 노드라고 칭합니다. 처음 HEAD 노드를 생성하면 다음 노드는 없습니다(NULL) 그래서 HEAD 노드는 다음 노드 주소로 NULL을 가리키고 있죠. HEAD 노드 다음에 새로운 노드를 추가를 한다면..

    [C/C++ 자료구조] 단일 연결리스트(Linked list) - 이해

    안녕하세요 C언어(C++)에서의 연결리스트 예제를 통해 어떻게 동작하는지 하나씩 알아보도록 합시다! 연결리스트(Linked list)란? 연결 리스트, 링크드 리스트 는 각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식으로 데이터를 저장하는 자료 구조이다. 이름에서 말하듯이 데이터를 담고 있는 노드들이 연결되어 있는데, 노드의 포인터가 다음이나 이전의 노드와의 연결을 담당하게 된다. https://ko.wikipedia.org/wiki/%EC%97%B0%EA%B2%B0_%EB%A6%AC%EC%8A%A4%ED%8A%B8 간단히 말하자면 하나의 노드(집)가 다른노집드의 주소를 가리키며 이어져나가는 형태로 데이터(사람)를 저장하는 자료구조입니다. 1번집에는 철수 2번집에는 짱구 3번집에는 훈이 ..

    [C/C++] 콘솔 프로그래스바(ProgressBar) 구현하기

    안녕하세요 이번 포스팅에서는 C/C++의 콘솔 환경에서 프로그레스바(진행바)를 구현하는 방법에 대해알아보도록 하겠습니다 소스코드 1000개의 전체 작업량 중 1개가 완료되었다면 진행률은 0.1%가 됩니다. 현재 진행량/전체 진행량 * 100 = 진행률(%) 100분율 계산법입니다 해당 연산은 코드의 19행에서 진행하고 있습니다. 현재 진행량은 코드상에서 count 변수전체 진행향은 코드상에서 MAX 변수입니다. 진행률을 계산했으면 해당 진행률을 기준으로 프로그레스바(진행바)를 출력해야합니다. 100(%)/프로그레스바 길이 = 몇 %마다 프로그레스바 1개 출력 만약 프로그레스바의 길이가 20이라고 하면 100/20 = 5 [====================] 100% 위의 모습일겁니다. 길이는 고정되어..

    [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 게임 루프 구현하기 ] 게임루프란 무엇일까요? 게임을 진행하기 위한 반복이라고 생각하시면 됩니다. 게임이 종료될때까지 무한정 반복을 하는것입니다. 지금까지 강좌를 진행하면서 커서 위치를 옮기고 색깔도 설정하고 키보드 입력도 받을 수 있게되었는데요이 기능들을 사용하여 게임을 개발해볼겁니다. 게임 루프는 위와같이 구성할 예정입니다. 메인메뉴에서 게임을 시작하고 맵을 선택하면 처음에 초기화를 합니다.그리고 맵을 출력하고나서 게임 루프에 진입합니다. 게임 루프에서는 게임이 종료될 때까지 계속 반복하며 키보드 이벤트를 처리하고화면을 업데이트..