Skip to content
Snippets Groups Projects

2048

I made a 2048 game that runs simply in the terminal with c++. 2219호_포스터-1

//

배경 square 나머지 - gamemanager - 2048 UI, 되돌리기 버튼, 게임 리셋 버튼, 현재 점수 버튼, 최고 점수 버튼

square 구현 wasd 버튼으로 1번 움직일 때를 1 move 단위로 설정한다.

시작: 랜덤한 위치에 4 1개와 2 1개로 시작한다.

이동: wasd 를 누른 방향으로 각 개체가 밀린다. move 알고리즘: w인 경우 위쪽이니 맨 윗줄부터 탐색하며 각 세로줄을 당긴다. 윗줄 첫 칸부터, 자신의 칸이 비어있으면 건너뛴다. 칸이 차있으면 윗 칸이 비어있으면 윗 칸으로 이동한다. 가장 위까지 또는 바로 위에 다른 칸이 있을 때까지 올라간다. 그 후 만난 바로 윗 칸과 숫자를 비교해서, 같으면 수를 합쳐 위 칸으로 올린다. 수가 다르면 넘어간다. 반복해서 아래 칸까지 4칸을 반복한다. 마지막에 개체가 없는 칸 중 하나에 80% 확률로 2 개체를, 20% 확률로 4 개체를 생성한다. 생성할 빈 칸이 없으면 GameOver메시지를 띄우고 종료한다. 현재 상태를 보고 네 방향 어디로 움직이든 빈 칸이 안만들어지는 것을 인식하고 바로 GameOver를 띄우는 기능은 미구현

현재 점수: 4 * 4 square 내의 모든 칸의 합 최고 점수: 현재까지 한 판중, 점수의 최댓값 되돌리기: 명령 1회 이전으로 이동. 1회 이전만 기억하고 있기 때문에 계속 이전으로는 갈 수 없다. 리셋: 현재 게임을 종료하고 메인 메뉴로 나간다.

구현 square size = 9 numberobject size = 2 obj간 간격 = 0.2 각 obj 위치 -4.5 ~ 4.5 => 0.2 -4.3/ 2 -2.3/ 0.2 -2.1/ 2 -0.1/ 0.2 0.1/ 2 2.1/ 0.2 2.3/ 2 4.3/ 0.2 => -3.3 / -1.1 / 1.1 / 3.3