MFC , C++를 이용한 2048 퍼즐게임 프로젝트(VS2015 프로젝트 파일, 결과레포트, 과제요구사항 포함)
*태*
다운로드
장바구니
소개글
MFC를 이용하여 구현한 2048 게임이다.C++을 이용해 전체 데이터구조를 구현하였다. 각각의 블록들은 더블 링크드리스트로 연결되었으며, 노드들이 바뀌는 방식은 노드들을 해당 자리로 SWAP하는 방식으로 구현하였다.
컴파일 실행환경
Zip archive data, OS: window 8.1, 10 , VS2015 Project본문내용
2048 Game프로젝트 개요 : 2048 게임은 퍼즐 게임의 일종이다. 정사각형 16개로 구성된 하나의 보드에서 매 턴이 끝날 때 마다 하나의 칸에 숫자 2가 생겨난다. 여기서 한번의 ‘턴’이란 유저가 방향키 (위, 아래, 오른쪽, 왼쪽)을 한번 누를 때이다. 방향키를 누르면 모든 숫자들이 해당 방향으로 몰린다. 이 때 만약 같은 숫자의 수가 겹치는 경우, 두 수는 합쳐지고 하나의 칸으로 병합된다.
이 과정을 반복하여 하나의 칸의 숫자가 2048이 되면 승리하는 게임이다. 만약 칸의 모든 숫자들이 인접한 칸의 숫자들과 다르다면 더 이상 병합도, 이동도 못하기 때문에 game over가 된다.
프로젝트 주요 기능:
[키보드이벤트] : 사용자는 방향키(↑, ↓, →, ←)를 누를 수 있다. 방향키를 누르면 해당 방향으로 모든 숫자들이 몰리게 된다. 만약 해당 방향으로 인접한 칸들의 숫자가 같으면 숫자가 병합된다.
[마우스 이벤트] : 사용자는 마우스를 드래그하여 보드 전체를 시계방향 또는 반시계방향으로 90도 회전시킬수 있다. 예시는 다음과 같다.
데이터 구조 : 본 프로젝트에서 구현할 보드는 총 16개의 블록으로 구성되어있다. 하나의 블록 당 한 개의 노드이며 각각의 노드는 인접한 노드들과 양방향으로 연결되어있다. 따라서 노드를 옮길 때는 숫자만 바꿔주는 것이 아닌 노드 전체를 옮겨야 한다. 숫자는 기본값으로 0이 들어가 있으며 이 값은 해당 노드가 아무 숫자를 가지지 않았을 때의 기본값이다.
프로젝트 기능메뉴 : 해당 프로젝트는 출력메뉴, 기록메뉴가 있다.
출력메뉴 – 사용자는 블록들의 색상을 On/Off 할 수 있다.
기록메뉴 – 사용자는 사용자가 입력하는 모든 이벤트를 로그기록으로 남길 수 있다. 이 메뉴가 On일 때의 이벤트들을 로그로 남긴다. 만약 Off라면 로그를 남기지 않는다.
압축파일 내 파일목록
2048_레포트.doc
요구사항.docx
프로젝트/.vs/MFCApplication1/v14/.suo
프로젝트/MFCApplication1/res/MFCApplication1.ico
프로젝트/MFCApplication1/res/MFCApplication1.rc2
프로젝트/MFCApplication1/res/MFCApplication1Doc.ico
프로젝트/MFCApplication1/res/Toolbar.bmp
프로젝트/MFCApplication1/res/toolbar1.bmp
프로젝트/MFCApplication1/Block.cpp
프로젝트/MFCApplication1/Block.h
프로젝트/MFCApplication1/Board.cpp
프로젝트/MFCApplication1/Board.h
프로젝트/MFCApplication1/ChildFrm.cpp
프로젝트/MFCApplication1/ChildFrm.h
프로젝트/MFCApplication1/MFCApplication1.aps
프로젝트/MFCApplication1/MFCApplication1.cpp
프로젝트/MFCApplication1/MFCApplication1.h
프로젝트/MFCApplication1/MFCApplication1.rc
프로젝트/MFCApplication1/MFCApplication1.vcxproj
프로젝트/MFCApplication1/MFCApplication1.vcxproj.filters
프로젝트/MFCApplication1/MFCApplication1.vcxproj.user
프로젝트/MFCApplication1/MFCApplication1Doc.cpp
프로젝트/MFCApplication1/MFCApplication1Doc.h
프로젝트/MFCApplication1/MFCApplication1View.cpp
프로젝트/MFCApplication1/MFCApplication1View.h
프로젝트/MFCApplication1/MainFrm.cpp
프로젝트/MFCApplication1/MainFrm.h
프로젝트/MFCApplication1/ReadMe.txt
프로젝트/MFCApplication1/resource.h
프로젝트/MFCApplication1/stdafx.cpp
프로젝트/MFCApplication1/stdafx.h
프로젝트/MFCApplication1/targetver.h
프로젝트/MFCApplication1.VC.db
프로젝트/MFCApplication1.sln
요구사항.docx
프로젝트/.vs/MFCApplication1/v14/.suo
프로젝트/MFCApplication1/res/MFCApplication1.ico
프로젝트/MFCApplication1/res/MFCApplication1.rc2
프로젝트/MFCApplication1/res/MFCApplication1Doc.ico
프로젝트/MFCApplication1/res/Toolbar.bmp
프로젝트/MFCApplication1/res/toolbar1.bmp
프로젝트/MFCApplication1/Block.cpp
프로젝트/MFCApplication1/Block.h
프로젝트/MFCApplication1/Board.cpp
프로젝트/MFCApplication1/Board.h
프로젝트/MFCApplication1/ChildFrm.cpp
프로젝트/MFCApplication1/ChildFrm.h
프로젝트/MFCApplication1/MFCApplication1.aps
프로젝트/MFCApplication1/MFCApplication1.cpp
프로젝트/MFCApplication1/MFCApplication1.h
프로젝트/MFCApplication1/MFCApplication1.rc
프로젝트/MFCApplication1/MFCApplication1.vcxproj
프로젝트/MFCApplication1/MFCApplication1.vcxproj.filters
프로젝트/MFCApplication1/MFCApplication1.vcxproj.user
프로젝트/MFCApplication1/MFCApplication1Doc.cpp
프로젝트/MFCApplication1/MFCApplication1Doc.h
프로젝트/MFCApplication1/MFCApplication1View.cpp
프로젝트/MFCApplication1/MFCApplication1View.h
프로젝트/MFCApplication1/MainFrm.cpp
프로젝트/MFCApplication1/MainFrm.h
프로젝트/MFCApplication1/ReadMe.txt
프로젝트/MFCApplication1/resource.h
프로젝트/MFCApplication1/stdafx.cpp
프로젝트/MFCApplication1/stdafx.h
프로젝트/MFCApplication1/targetver.h
프로젝트/MFCApplication1.VC.db
프로젝트/MFCApplication1.sln