의도 컬렉션에 들어 있는 객체별로 한 프레임 단위의 작업을 진행하라고 알려줘서 전체를 시뮬레이션한다. 쉽게 말하자면 게임에 존재하는 객체들의 동작이나 상태를 한 프레임씩 업데이트 하는 것이다. 동기 던전을 지키는 해골 전사가 있고 이 전사가 문 주위를 순찰한다고 해보자. 해골 전사를 왔다갔다하는 코드를 가장 간단하게 만든다면 다음과 같을 것이다. while(true) { // 오른쪽으로 간다. for(double x = 0; x 0; x--) skeleton.setX(x); } 하지만 이 코드는 무한루프가 있어서 해골 전사가 순찰도는 걸 플레이어는 볼 수 없다는 문제가 있다. 우리가 원하..
분류 전체보기
의도 게임 시간 진행을 유저 입력, 프로세서 속도와 디커플링 한다. 동기 대화형 프로그램 게임 루프에 대해서 살펴보기 전에, 과거에는 프로그램이 배치 모드로 동작했다. 코드를 입력해 넣은 뒤 한참 뒤에 결과를 볼 수 있었다. 즉각적인 피드백을 원했던 프로그래머들은 대화형 프로그램(interactive)을 만들었다. 초기 대화형 프로그램 중에선 게임도 있었다. 예를 들면 다음과 같은 텍스트 어드벤처 게임이다. 당신은 던전 안에서 해골 전사와 마주쳤다. 해골 전사는 뼈 부딪히는 소리를 내며 당신에게 다가오고 있다. > 공격한다 당신은 해골 전사를 공격해 산산조각 냈다! 경험치 10 획득 이제 프로그램과 실시간으로 대화를 나눌 수 있게 되었다. 프로그램은 입력을 기다렸다가 응답한다. 코드로 표현하면 다음과 같..
문제 https://www.acmicpc.net/problem/17136 17136번: 색종이 붙이기 과 같이 정사각형 모양을 한 다섯 종류의 색종이가 있다. 색종이의 크기는 1×1, 2×2, 3×3, 4×4, 5×5로 총 다섯 종류가 있으며, 각 종류의 색종이는 5개씩 가지고 있다. 색종이를 크 www.acmicpc.net 풀이 방법 (0,0)부터 시작해서 (10,10)까지 종이에 1이 적혀있으면 큰 색종이부터 작은 색종이까지 붙일 수 있는 종이를 다 붙혔다 뗐다하면서(백트래킹) 깊이 우선 탐색을 한다. 2580번 스도쿠와 비슷할 수도 있는 문제. 코드 #include #include #include using namespace std; int answer = 0x6FFFFFFF; void dfs(ve..
문제 https://www.acmicpc.net/problem/1039 1039번: 교환 첫째 줄에 정수 N과 K가 주어진다. N은 1,000,000보다 작거나 같은 자연수이고, K는 10보다 작거나 같은 자연수이다. www.acmicpc.net 풀이 방법 문제에 설명되어있는 것처럼 i번 위치와 j번 위치를 바꾸는 연산을 K번 했을 때 나오는 수들의 최댓값을 구하면 된다. 헷갈릴 수 있는데, 탐색 과정 중의 최댓값을 구하는 게 아니라 탐색을 K번한 후의 최댓값을 구하는 것이다. 예를 들면 예제 입력2의 132 3에서 연산을 2번 했을 때의 수는 132, 213, 321이고 이 중 최댓값은 321이지만 연산을 3번 했을 때는 123, 231, 312로 최댓값은 312가 나온다. 그리고 132->123 , ..