텀프로젝트 - C로 만든 콘솔게임

Hyeonu_J·2022년 7월 16일
0
post-thumbnail

2학년때 텀프로젝트로 만든 게임

플레이 영상 :
https://youtu.be/NADOnFOJbJA

옛날에 모바일에서 길건너 친구들을 재밋게 즐겼던 기억이 나서 교내 텀프로젝트로 만들게 되었다. 여러 기능들을 구현하는 과정은 비록 힘들었지만 문제를 해결하고, 버그를 수정하는 개발 작업은 개발자로써의 역량을 키울 수 있어 보람차고 의미있던 프로젝트였다.

구현한 기능들 :

(1) 1인 Play (방향키, AWSD 이용)

가) 사용자가 누른 방향키대로 플레이어 이동
나) 플레이어 다음 위치가 자동차 / 강 일 때 게임오버
다) 이동 시 플레이어 현재 위치 (도로, 통나무) 기억 후 플레이어 이동시 필드 다시 칠함
라) 플레이어가 위치할 수 있는 필드는 잔디(0), 도로(2), 통나무(4)
마) 플레이어 다음 위치가 나무(1)면 이동 불가
바) 플레이어 마크(▲▶▼◀)는 이동 방향대로 출력되는 모양이 바뀜

(2) 도로

가) 자동차가 다니는 길
나) 사전에 정의한 프리셋(왼쪽/오른쪽 방향 차 1,2,3)이 왼쪽/오른쪽에서 끝으로 이동 반복
1) 차 프리셋 1 (경차) : 느린 스피드, 3x5
2) 차 프리셋 2 (승용차) : 보통 스피드, 3x6
3) 차 프리셋 3 (트럭) : 빠른 스피드, 3x8
다) 랜덤으로 3칸(1줄)의 도로 1~6줄 생성
라) 자동차 다음 위치에 플레이어 위치 시 / 플레이어가 차에 부딪힐 시 → 게임오버

(3) 강

가) 통나무가 다니는 길
나) 랜덤 생성된 통나무(길이 4~8, 왼쪽/오른쪽 방향)이 왼쪽/오른쪽에서 끝으로 이동 반복
1) 생성되는 통나무 길이, 스피드, 방향 = 랜덤
2) 플레이어는 통나무에 올라탈 수 있음
3) 통나무가 흘러가는 방향대로 플레이어도 같이 이동
다) 랜덤으로 3칸(1줄)의 도로 1~6줄 생성
라) 플레이어가 강에 빠질 시 → 게임오버
마) 플레이어가 통나무에 실려 맵 끝까지 갈 시 → 게임오버

(4) 사잇길

가) 도로/강 라인(랜덤1~6줄) 생성 후 2칸의 잔디/나무 으로 이루어진 필드
나) 자동차나 통나무 등 위험요소 없음
다) 랜덤 위치에 골드 생성

(5) 화면 오토스크롤

가) 사전에 정의한 맵(25x100000) / 실제 유저에게 보여지는 맵(25x35)을 각각 따로 만들어 구현
나) 플레이어 게임 오버 시 오토스크롤 정지
다) 스크롤 한번 할 때마다 화면 좌측상단 점수 증가
라) 유저에게 보여지는 화면은 더블 버퍼링으로 구현
마) 실제 유저에게 보여지는 맵(화면)에 플레이어 없을 시 → 게임오버(타임오버)

(6) 프로그램 시작시 맵 랜덤생성

가) 맵 구성은 도로/강/사잇길 로 구성
나) 도로/강 랜덤 생성 시 자동차/통나무 움직일 수 있게 랜덤 생성된 도로/강 위치, 개수 저장


총 1400줄 가까운 코드를 작성했다.

Microsoft Visual studio 라는 IDE 개발환경에서 제작했다.
전체 코드는 깃허브에

https://github.com/hyeonuJ/crossyRoad

profile
흔한 컴공러 / 3학년

0개의 댓글