<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=%EC%8A%A4%ED%84%B0%EB%94%94%2F%EA%B2%8C%EC%9E%84%EC%97%90_%EB%AF%B8%EC%B9%9C%EC%9D%B4%EB%93%A4%EC%9D%84_%EC%9C%84%ED%95%9C_%ED%9E%88%EC%B9%98%ED%95%98%EC%9D%B4%ED%82%B9%2F13-11-02</id>
	<title>스터디/게임에 미친이들을 위한 히치하이킹/13-11-02 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=%EC%8A%A4%ED%84%B0%EB%94%94%2F%EA%B2%8C%EC%9E%84%EC%97%90_%EB%AF%B8%EC%B9%9C%EC%9D%B4%EB%93%A4%EC%9D%84_%EC%9C%84%ED%95%9C_%ED%9E%88%EC%B9%98%ED%95%98%EC%9D%B4%ED%82%B9%2F13-11-02"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=%EC%8A%A4%ED%84%B0%EB%94%94/%EA%B2%8C%EC%9E%84%EC%97%90_%EB%AF%B8%EC%B9%9C%EC%9D%B4%EB%93%A4%EC%9D%84_%EC%9C%84%ED%95%9C_%ED%9E%88%EC%B9%98%ED%95%98%EC%9D%B4%ED%82%B9/13-11-02&amp;action=history"/>
	<updated>2026-05-15T21:07:29Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=%EC%8A%A4%ED%84%B0%EB%94%94/%EA%B2%8C%EC%9E%84%EC%97%90_%EB%AF%B8%EC%B9%9C%EC%9D%B4%EB%93%A4%EC%9D%84_%EC%9C%84%ED%95%9C_%ED%9E%88%EC%B9%98%ED%95%98%EC%9D%B4%ED%82%B9/13-11-02&amp;diff=62654&amp;oldid=prev</id>
		<title>imported&gt;hit0473 at 08:57, 16 November 2013</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=%EC%8A%A4%ED%84%B0%EB%94%94/%EA%B2%8C%EC%9E%84%EC%97%90_%EB%AF%B8%EC%B9%9C%EC%9D%B4%EB%93%A4%EC%9D%84_%EC%9C%84%ED%95%9C_%ED%9E%88%EC%B9%98%ED%95%98%EC%9D%B4%ED%82%B9/13-11-02&amp;diff=62654&amp;oldid=prev"/>
		<updated>2013-11-16T08:57:09Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Describe [[스터디/게임에 미친이들을 위한 히치하이킹/13-11-02]] here&lt;br /&gt;
&lt;br /&gt;
== 11월 2일 토요일 ==&lt;br /&gt;
* 참여 인원 : [[김윤환]], [[조영준]], [[장혁재]]&lt;br /&gt;
* 주제 : c++ 시작 + 배달맨 만들기&lt;br /&gt;
&lt;br /&gt;
 배달맨 소스 코드 &lt;br /&gt;
* [[장혁재]]&lt;br /&gt;
 #include &amp;amp;lt;iostream&amp;amp;gt;&lt;br /&gt;
 #include &amp;amp;lt;conio.h&amp;amp;gt;&lt;br /&gt;
 using namespace std;&lt;br /&gt;
 #define X 8&lt;br /&gt;
 #define Y 5&lt;br /&gt;
 //1=#(wall)&lt;br /&gt;
 //0=&amp;quot;&amp;quot;(space)&lt;br /&gt;
 //2=p(player)&lt;br /&gt;
 //3=.(wantedlocation)&lt;br /&gt;
 //4=o(box)&lt;br /&gt;
 //5=P(player_on_wanted_location)&lt;br /&gt;
 //6=O(movedbox)&lt;br /&gt;
 void printgame(int stage[][X]);&lt;br /&gt;
 void makegame(int stage[][X]);&lt;br /&gt;
 void input(int stage[][X]);&lt;br /&gt;
 int collision(int stage[][X], char movement, int x, int y);&lt;br /&gt;
 int main(){&lt;br /&gt;
 	int stage[Y][X] = { 0 };&lt;br /&gt;
 	makegame(stage);&lt;br /&gt;
 	while (1){&lt;br /&gt;
 		printgame(stage);&lt;br /&gt;
 		input(stage);&lt;br /&gt;
 	}&lt;br /&gt;
 	getchar();&lt;br /&gt;
 	return 0;&lt;br /&gt;
 }&lt;br /&gt;
 void printgame(int stage[][X]){&lt;br /&gt;
 	int i = 0;&lt;br /&gt;
 	int j = 0;&lt;br /&gt;
 	for (i = 0; i &amp;amp;lt; Y; i++){&lt;br /&gt;
 		for (j = 0; j &amp;amp;lt; X; j++){&lt;br /&gt;
 			/*if (stage[i][j] == 1)&lt;br /&gt;
 				printf(&amp;quot;#&amp;quot;);&lt;br /&gt;
 			else if (stage[i][j] == 0)&lt;br /&gt;
 				printf(&amp;quot; &amp;quot;);&lt;br /&gt;
 			else if (stage[i][j] == 2)&lt;br /&gt;
 				printf(&amp;quot;p&amp;quot;);&lt;br /&gt;
 			else if (stage[i][j] == 3)&lt;br /&gt;
 				printf(&amp;quot;.&amp;quot;);&lt;br /&gt;
 			else if (stage[i][j] == 4)&lt;br /&gt;
 				printf(&amp;quot;o&amp;quot;);&lt;br /&gt;
 			else if (stage[i][j] == 5)&lt;br /&gt;
 				printf(&amp;quot;P&amp;quot;);&lt;br /&gt;
 			else if (stage[i][j] == 6)&lt;br /&gt;
 				printf(&amp;quot;O&amp;quot;);*/&lt;br /&gt;
 			printf(&amp;quot;%d&amp;quot;, stage[i][j]);&lt;br /&gt;
 &lt;br /&gt;
 		}&lt;br /&gt;
 			printf(&amp;quot;\n&amp;quot;);&lt;br /&gt;
 		}&lt;br /&gt;
 }&lt;br /&gt;
 void makegame(int stage[][X]){&lt;br /&gt;
 	int i = 0, j = 0;&lt;br /&gt;
 		for (i = 0; i &amp;amp;lt; Y; i++){&lt;br /&gt;
 			for (j = 0; j &amp;amp;lt; X; j++){&lt;br /&gt;
 				if (i == 0 || i == 4)&lt;br /&gt;
 					stage[i][j] = 1;&lt;br /&gt;
 				else if (j == 0 || j == 7)&lt;br /&gt;
 					stage[i][j] = 1;&lt;br /&gt;
 				else&lt;br /&gt;
 					stage[i][j] = 0;&lt;br /&gt;
 			}&lt;br /&gt;
 		}&lt;br /&gt;
 	stage[1][5] = 2;&lt;br /&gt;
 	stage[1][2] = 3;&lt;br /&gt;
 	stage[1][3] = 3;&lt;br /&gt;
 	stage[2][2] = 4;&lt;br /&gt;
 	stage[2][3] = 4;&lt;br /&gt;
 }&lt;br /&gt;
 void input(int stage[][X]){&lt;br /&gt;
 	char movement;&lt;br /&gt;
 	int i = 0, j = 0;&lt;br /&gt;
 	printf(&amp;quot;a:left, w:up, s:down, d:right:&amp;quot;);&lt;br /&gt;
 	movement = getche();&lt;br /&gt;
 	for (i = 0; i &amp;amp;lt; Y; i++){&lt;br /&gt;
 		for (j = 0; j &amp;amp;lt; X; j++){&lt;br /&gt;
 			if (stage[i][j] == 2 || stage[i][j]==5){&lt;br /&gt;
 				switch (movement){&lt;br /&gt;
 					case &amp;#039;a&amp;#039;:&lt;br /&gt;
 						if (collision(stage, movement, j, i) == 1)&lt;br /&gt;
 							break;&lt;br /&gt;
 						else{&lt;br /&gt;
 							stage[i][j--] += stage[i][j];&lt;br /&gt;
 							stage[i][j] -= 2;&lt;br /&gt;
 						}&lt;br /&gt;
 						break;&lt;br /&gt;
 					case &amp;#039;w&amp;#039;:&lt;br /&gt;
 						if (collision(stage, movement, j, i) == 1)&lt;br /&gt;
 							break;&lt;br /&gt;
 						else{&lt;br /&gt;
 							stage[i--][j] += stage[i][j];&lt;br /&gt;
 							stage[i][j] -= 2;&lt;br /&gt;
 						}&lt;br /&gt;
 						break;&lt;br /&gt;
 					case &amp;#039;s&amp;#039;:&lt;br /&gt;
 						if (collision(stage, movement, j, i) == 1)&lt;br /&gt;
 							break;&lt;br /&gt;
 						else{&lt;br /&gt;
 							stage[i++][j] += stage[i][j];&lt;br /&gt;
 							stage[i][j] - 2;&lt;br /&gt;
 						}&lt;br /&gt;
 						break;&lt;br /&gt;
 					case &amp;#039;d&amp;#039;:&lt;br /&gt;
 						if (collision(stage, movement, j, i) == 1)&lt;br /&gt;
 							break;&lt;br /&gt;
 						else{&lt;br /&gt;
 							stage[i][j++] += stage[i][j];&lt;br /&gt;
 							stage[i][j] -= 2;&lt;br /&gt;
 						}&lt;br /&gt;
 						break;&lt;br /&gt;
 				}&lt;br /&gt;
 			}&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 	printf(&amp;quot;\n&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
 int collision(int stage[][X], char movement, int j, int i){&lt;br /&gt;
 	switch (movement){&lt;br /&gt;
 	case &amp;#039;a&amp;#039;:&lt;br /&gt;
 		if (stage[i][j--] == 1)&lt;br /&gt;
 			return 1;&lt;br /&gt;
 		else if (stage[i][j--] == 4){&lt;br /&gt;
 			if (stage[i][j - 2] == 4 || stage[i][j - 2] == 1)&lt;br /&gt;
 				return 1;&lt;br /&gt;
 			else&lt;br /&gt;
 				return 0;&lt;br /&gt;
 			//밑에 코드 모두 동일 조건&lt;br /&gt;
 		}&lt;br /&gt;
 		else&lt;br /&gt;
 			return 0;&lt;br /&gt;
 		break;&lt;br /&gt;
 	case &amp;#039;w&amp;#039;://i--, j&lt;br /&gt;
 		if (stage[i--][j] == 1)&lt;br /&gt;
 			return 1;&lt;br /&gt;
 		else if (stage[i--][j] == 4){&lt;br /&gt;
 			if (stage[i - 2][j] == 4 || stage[i - 2][j] == 1)&lt;br /&gt;
 				return 1;&lt;br /&gt;
 			else&lt;br /&gt;
 				return 0;&lt;br /&gt;
 		}&lt;br /&gt;
 		else&lt;br /&gt;
 			return 0;&lt;br /&gt;
 		break;&lt;br /&gt;
 	case &amp;#039;s&amp;#039;://i++, j&lt;br /&gt;
 		if (stage[i++][j] == 1){&lt;br /&gt;
 			return 1;&lt;br /&gt;
 		}&lt;br /&gt;
 		else if (stage[i++][j] == 4){&lt;br /&gt;
 			if (stage[i + 2][j] == 4 || stage[i + 2][j] == 1)&lt;br /&gt;
 				return 1;&lt;br /&gt;
 			else&lt;br /&gt;
 				return 0;&lt;br /&gt;
 			&lt;br /&gt;
 		}&lt;br /&gt;
 		else&lt;br /&gt;
 			return 0;&lt;br /&gt;
 &lt;br /&gt;
 		break;&lt;br /&gt;
 	case &amp;#039;d&amp;#039;://i,j++&lt;br /&gt;
 		if (stage[i][j++] == 1){&lt;br /&gt;
 			return 1;&lt;br /&gt;
 		}&lt;br /&gt;
 		else if (stage[i][j++] == 4){&lt;br /&gt;
 			if (stage[i][j + 2] == 4 || stage[i][j + 2] == 1)&lt;br /&gt;
 				return 1;&lt;br /&gt;
 			else&lt;br /&gt;
 				return 0;&lt;br /&gt;
 		}&lt;br /&gt;
 		else&lt;br /&gt;
 			return 0;&lt;br /&gt;
 		break;&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
* [[조영준]]&lt;br /&gt;
 #include &amp;amp;lt;stdio.h&amp;amp;gt;&lt;br /&gt;
 #include &amp;amp;lt;stdlib.h&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 enum FloorType {&lt;br /&gt;
 	floor, goal, wall&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 enum ObjectType {&lt;br /&gt;
 	box, player, empty&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 enum Direction {&lt;br /&gt;
 	up, right, down, left&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 class Sokoban;&lt;br /&gt;
 class Map;&lt;br /&gt;
 class MapManager;&lt;br /&gt;
 &lt;br /&gt;
 class Map {&lt;br /&gt;
 public:&lt;br /&gt;
 	int width;&lt;br /&gt;
 	int height;&lt;br /&gt;
 	FloorType **floorMatrix;&lt;br /&gt;
 	ObjectType **objectMatrix;&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 class MapManager {&lt;br /&gt;
 public :&lt;br /&gt;
 	void printMap(Map *map) {&lt;br /&gt;
 		int width = map-&amp;amp;gt;width;&lt;br /&gt;
 		int height = map-&amp;amp;gt;height;&lt;br /&gt;
 &lt;br /&gt;
 		for (int i = 0; i &amp;amp;lt; height; i++) {&lt;br /&gt;
 			for (int j = 0; j &amp;amp;lt; width; j++) {&lt;br /&gt;
 				char charToPrint;&lt;br /&gt;
 				if (map-&amp;amp;gt;floorMatrix[i][j] == floor &amp;amp;amp;&amp;amp;amp; map-&amp;amp;gt;objectMatrix[i][j] == empty) {&lt;br /&gt;
 					charToPrint = &amp;#039; &amp;#039;;&lt;br /&gt;
 				} else if (map-&amp;amp;gt;floorMatrix[i][j] == floor &amp;amp;amp;&amp;amp;amp; map-&amp;amp;gt;objectMatrix[i][j] == player) {&lt;br /&gt;
 					charToPrint = &amp;#039;p&amp;#039;;&lt;br /&gt;
 				} else if (map-&amp;amp;gt;floorMatrix[i][j] == floor &amp;amp;amp;&amp;amp;amp; map-&amp;amp;gt;objectMatrix[i][j] == box) {&lt;br /&gt;
 					charToPrint = &amp;#039;o&amp;#039;;&lt;br /&gt;
 				} else if (map-&amp;amp;gt;floorMatrix[i][j] == goal &amp;amp;amp;&amp;amp;amp; map-&amp;amp;gt;objectMatrix[i][j] == empty) {&lt;br /&gt;
 					charToPrint = &amp;#039;.&amp;#039;;&lt;br /&gt;
 				} else if (map-&amp;amp;gt;floorMatrix[i][j] == goal &amp;amp;amp;&amp;amp;amp; map-&amp;amp;gt;objectMatrix[i][j] == player) {&lt;br /&gt;
 					charToPrint = &amp;#039;P&amp;#039;;&lt;br /&gt;
 				} else if (map-&amp;amp;gt;floorMatrix[i][j] == goal &amp;amp;amp;&amp;amp;amp; map-&amp;amp;gt;objectMatrix[i][j] == box) {&lt;br /&gt;
 					charToPrint = &amp;#039;O&amp;#039;;&lt;br /&gt;
 				} else if (map-&amp;amp;gt;floorMatrix[i][j] == wall) {&lt;br /&gt;
 					charToPrint = &amp;#039;#&amp;#039;;&lt;br /&gt;
 				}&lt;br /&gt;
 				printf(&amp;quot;%c&amp;quot;, charToPrint);&lt;br /&gt;
 			}&lt;br /&gt;
 			printf(&amp;quot;\n&amp;quot;);&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	Map *phaseStringToMap(char *string[], int width, int height) {&lt;br /&gt;
 		Map *map = new Map();&lt;br /&gt;
 &lt;br /&gt;
 		map-&amp;amp;gt;width = width;&lt;br /&gt;
 		map-&amp;amp;gt;height = height;&lt;br /&gt;
 &lt;br /&gt;
 		map-&amp;amp;gt;floorMatrix = (FloorType**) (malloc(sizeof(FloorType*) * height));&lt;br /&gt;
 		map-&amp;amp;gt;objectMatrix = (ObjectType**) (malloc(sizeof(ObjectType*) * height));&lt;br /&gt;
 &lt;br /&gt;
 		for (int i = 0; i &amp;amp;lt; height; i++) {&lt;br /&gt;
 			map-&amp;amp;gt;floorMatrix[i] = (FloorType*) (malloc(sizeof(FloorType)* width));&lt;br /&gt;
 			map-&amp;amp;gt;objectMatrix[i] = (ObjectType*)(malloc(sizeof(ObjectType)* width));&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		for (int i = 0; i &amp;amp;lt; height; i++) {&lt;br /&gt;
 			for (int j = 0; j &amp;amp;lt; width; j++) {&lt;br /&gt;
 				if (string[i][j] == &amp;#039; &amp;#039;) {&lt;br /&gt;
 					map-&amp;amp;gt;floorMatrix[i][j] = floor;&lt;br /&gt;
 					map-&amp;amp;gt;objectMatrix[i][j] = empty;&lt;br /&gt;
 				} else if (string[i][j] == &amp;#039;#&amp;#039;) {&lt;br /&gt;
 					map-&amp;amp;gt;floorMatrix[i][j] = wall;&lt;br /&gt;
 					map-&amp;amp;gt;objectMatrix[i][j] = empty;&lt;br /&gt;
 				} else if (string[i][j] == &amp;#039;p&amp;#039;) {&lt;br /&gt;
 					map-&amp;amp;gt;floorMatrix[i][j] = floor;&lt;br /&gt;
 					map-&amp;amp;gt;objectMatrix[i][j] = player;&lt;br /&gt;
 				} else if (string[i][j] == &amp;#039;P&amp;#039;) {&lt;br /&gt;
 					map-&amp;amp;gt;floorMatrix[i][j] = goal;&lt;br /&gt;
 					map-&amp;amp;gt;objectMatrix[i][j] = player;&lt;br /&gt;
 				} else if (string[i][j] == &amp;#039;.&amp;#039;) {&lt;br /&gt;
 					map-&amp;amp;gt;floorMatrix[i][j] = goal;&lt;br /&gt;
 					map-&amp;amp;gt;objectMatrix[i][j] = empty;&lt;br /&gt;
 				} else if (string[i][j] == &amp;#039;o&amp;#039;) {&lt;br /&gt;
 					map-&amp;amp;gt;floorMatrix[i][j] = floor;&lt;br /&gt;
 					map-&amp;amp;gt;objectMatrix[i][j] = box;&lt;br /&gt;
 				} else if (string[i][j] == &amp;#039;O&amp;#039;) {&lt;br /&gt;
 					map-&amp;amp;gt;floorMatrix[i][j] = goal;&lt;br /&gt;
 					map-&amp;amp;gt;objectMatrix[i][j] = box;&lt;br /&gt;
 				} else {&lt;br /&gt;
 					map-&amp;amp;gt;floorMatrix[i][j] = floor;&lt;br /&gt;
 					map-&amp;amp;gt;objectMatrix[i][j] = empty;&lt;br /&gt;
 				}&lt;br /&gt;
 			}&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		return map;&lt;br /&gt;
 	}&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 class Sokoban {&lt;br /&gt;
 public:&lt;br /&gt;
 	Sokoban() {&lt;br /&gt;
 		mapManager = new MapManager();&lt;br /&gt;
 &lt;br /&gt;
 		map = NULL;&lt;br /&gt;
 		playerX = -1;&lt;br /&gt;
 		playerY = -1;&lt;br /&gt;
 		numberOfGoals = 0;&lt;br /&gt;
 		numberOfFilledGoals = 0;&lt;br /&gt;
 		numberOfMoves = 0;&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	void setGame(Map *newMap) {&lt;br /&gt;
 		map = newMap;&lt;br /&gt;
 &lt;br /&gt;
 		for (int i = 0; i &amp;amp;lt; map-&amp;amp;gt;height; i++) {&lt;br /&gt;
 			for (int j = 0; j &amp;amp;lt; map-&amp;amp;gt;width; j++) {&lt;br /&gt;
 				if (map-&amp;amp;gt;floorMatrix[i][j] == wall) {&lt;br /&gt;
 					map-&amp;amp;gt;objectMatrix[i][j] = empty;&lt;br /&gt;
 				} else if (map-&amp;amp;gt;floorMatrix[i][j] == goal) {&lt;br /&gt;
 					numberOfGoals++;&lt;br /&gt;
 				}&lt;br /&gt;
 				if (map-&amp;amp;gt;objectMatrix[i][j] == player) {&lt;br /&gt;
 					if (playerX &amp;amp;gt;= 0) {&lt;br /&gt;
 						map-&amp;amp;gt;objectMatrix[playerY][playerX] = empty;&lt;br /&gt;
 					}&lt;br /&gt;
 					playerX = j;&lt;br /&gt;
 					playerY = i;&lt;br /&gt;
 				}&lt;br /&gt;
 			}&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		update();&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	void movePlayer(Direction direction) {&lt;br /&gt;
 		if (moveObject(playerX, playerY, direction) == true) {&lt;br /&gt;
 			numberOfMoves++;&lt;br /&gt;
 			update();&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	void print() {&lt;br /&gt;
 		mapManager-&amp;amp;gt;printMap(map);&lt;br /&gt;
 		printf(&amp;quot;%d, %d, %d\n&amp;quot;, numberOfGoals, numberOfFilledGoals, numberOfMoves);&lt;br /&gt;
 	}&lt;br /&gt;
 private:&lt;br /&gt;
 	MapManager *mapManager;&lt;br /&gt;
 	Map *map;&lt;br /&gt;
 	int playerX;&lt;br /&gt;
 	int playerY;&lt;br /&gt;
 	int numberOfGoals;&lt;br /&gt;
 	int numberOfFilledGoals;&lt;br /&gt;
 	int numberOfMoves;&lt;br /&gt;
 &lt;br /&gt;
 	bool moveObject(int x, int y, Direction direction) {&lt;br /&gt;
 		int frontX = x;&lt;br /&gt;
 		int frontY = y;&lt;br /&gt;
 &lt;br /&gt;
 		if (direction == up) {&lt;br /&gt;
 			frontY -= 1;&lt;br /&gt;
 		}&lt;br /&gt;
 		else if (direction == right) {&lt;br /&gt;
 			frontX += 1;&lt;br /&gt;
 		}&lt;br /&gt;
 		else if (direction == down) {&lt;br /&gt;
 			frontY += 1;&lt;br /&gt;
 		}&lt;br /&gt;
 		else if (direction == left) {&lt;br /&gt;
 			frontX -= 1;&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		if (frontX &amp;amp;lt; 0 || frontX &amp;amp;gt;= map-&amp;amp;gt;width || frontY &amp;amp;lt; 0 || frontY &amp;amp;gt;= map-&amp;amp;gt;height) {&lt;br /&gt;
 			return false;&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		ObjectType thisObject = map-&amp;amp;gt;objectMatrix[y][x];&lt;br /&gt;
 		FloorType thisFloor = map-&amp;amp;gt;floorMatrix[y][x];&lt;br /&gt;
 		ObjectType frontObject = map-&amp;amp;gt;objectMatrix[frontY][frontX];&lt;br /&gt;
 		FloorType frontFloor = map-&amp;amp;gt;floorMatrix[frontY][frontX];&lt;br /&gt;
 &lt;br /&gt;
 		if (thisFloor == wall) {&lt;br /&gt;
 			return false;&lt;br /&gt;
 		}&lt;br /&gt;
 		else if (thisObject == empty) {&lt;br /&gt;
 			return true;&lt;br /&gt;
 		}&lt;br /&gt;
 		else if (thisObject == box &amp;amp;amp;&amp;amp;amp; (frontObject == box || frontFloor == wall)) {&lt;br /&gt;
 			return false;&lt;br /&gt;
 		}&lt;br /&gt;
 		else if (moveObject(frontX, frontY, direction) == true) {&lt;br /&gt;
 			map-&amp;amp;gt;objectMatrix[frontY][frontX] = map-&amp;amp;gt;objectMatrix[y][x];&lt;br /&gt;
 			map-&amp;amp;gt;objectMatrix[y][x] = empty;&lt;br /&gt;
 			return true;&lt;br /&gt;
 		}&lt;br /&gt;
 		else {&lt;br /&gt;
 			return false;&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	void update() {&lt;br /&gt;
 		numberOfFilledGoals = 0;&lt;br /&gt;
 		for (int i = 0; i &amp;amp;lt; map-&amp;amp;gt;height; i++) {&lt;br /&gt;
 			for (int j = 0; j &amp;amp;lt; map-&amp;amp;gt;width; j++) {&lt;br /&gt;
 				if (map-&amp;amp;gt;objectMatrix[i][j] == box) {&lt;br /&gt;
 					if (map-&amp;amp;gt;floorMatrix[i][j] == goal) {&lt;br /&gt;
 						numberOfFilledGoals++;&lt;br /&gt;
 					}&lt;br /&gt;
 				}&lt;br /&gt;
 				else if (map-&amp;amp;gt;objectMatrix[i][j] == player) {&lt;br /&gt;
 					playerY = i;&lt;br /&gt;
 					playerX = j;&lt;br /&gt;
 				}&lt;br /&gt;
 			}&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 int main() {&lt;br /&gt;
 	char *string[] = {&lt;br /&gt;
 		&amp;quot;########&amp;quot;,&lt;br /&gt;
 		&amp;quot;# .. p #&amp;quot;,&lt;br /&gt;
 		&amp;quot;# o o  #&amp;quot;,&lt;br /&gt;
 		&amp;quot;# p    #&amp;quot;,&lt;br /&gt;
 		&amp;quot;########&amp;quot;&lt;br /&gt;
 	};&lt;br /&gt;
 &lt;br /&gt;
 	char input;&lt;br /&gt;
 &lt;br /&gt;
 	MapManager *mapManager = new MapManager();&lt;br /&gt;
 	Map *map = mapManager-&amp;amp;gt;phaseStringToMap(string, 8, sizeof(string) / sizeof(string[0]));&lt;br /&gt;
 	Sokoban *sokoban = new Sokoban();&lt;br /&gt;
 &lt;br /&gt;
 	sokoban-&amp;amp;gt;setGame(map);&lt;br /&gt;
 &lt;br /&gt;
 	while (true) {&lt;br /&gt;
 		sokoban-&amp;amp;gt;print();&lt;br /&gt;
 		printf(&amp;quot;:&amp;quot;);&lt;br /&gt;
 		scanf_s(&amp;quot;%c%*c&amp;quot;, &amp;amp;amp;input);&lt;br /&gt;
 		if (input == &amp;#039;w&amp;#039;) {&lt;br /&gt;
 			sokoban-&amp;amp;gt;movePlayer(up);&lt;br /&gt;
 		} else if (input == &amp;#039;d&amp;#039;) {&lt;br /&gt;
 			sokoban-&amp;amp;gt;movePlayer(right);&lt;br /&gt;
 		} else if (input == &amp;#039;s&amp;#039;) {&lt;br /&gt;
 			sokoban-&amp;amp;gt;movePlayer(down);&lt;br /&gt;
 		} else if (input == &amp;#039;a&amp;#039;) {&lt;br /&gt;
 			sokoban-&amp;amp;gt;movePlayer(left);&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
* [[김윤환]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;hit0473</name></author>
	</entry>
</feed>