<div>#include <stdio.h></div> <div>#include <stdlib.h></div> <div>#include <conio.h></div> <div><br /></div> <div>#define LEFT 75</div> <div>#define RIGHT 77</div> <div>#define UP 72</div> <div>#define DOWN 80</div> <div><br /></div> <div>struct POINT {</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>short x;</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>short y;</div> <div>};</div> <div><br /></div> <div>void main()</div> <div>{</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>struct POINT player;<span class="Apple-tab-span" style="white-space: pre"> </span>//플레이어 좌표</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>short **maze;<span class="Apple-tab-span" style="white-space: pre"> </span>//미로 배열</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>short i,j, width, height;<span class="Apple-tab-span" style="white-space: pre"> </span>//for문 제어변수(i, j), 배열 크기(width, height)</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>int key;<span class="Apple-tab-span" style="white-space: pre"> </span>//사용자의 키를 입력받을 변수</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>FILE* loadfile;<span class="Apple-tab-span" style="white-space: pre"> </span>//파일을 불러올 파일포인터</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>/*</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>maze.txt 파일</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>첫 줄에 미로의 너비와 높이 값이 기록되어 있으며, 그 다음 줄부터는 미로데이터들이 입력되어 있다.</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>아래는 데이터가 의미하는 바이다.</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>0: 공백</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>1: 벽</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>2: 출발지점</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>3: 도착지점</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>*/</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>loadfile = fopen("maze.txt","r");</div> <div><br /></div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>//maze.txt파일이 없을 시 실행 불가</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>if(loadfile == NULL)</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>{</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>fprintf(stderr, "ERROR: \"maze.txt\" does not exist");</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>return;</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>}</div> <div><br /></div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>fscanf(loadfile, "%d %d", &width, &height);</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>/*</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>2차원 배열 할당 알고리즘</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>포인터 배열 행의 크기만큼 할당하여 더블포인터변수에 주소를 받은 뒤</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>데이터 배열을 행*열의 크기만큼 할당하여 방금 할당한 포인터 배열의 첫칸에 주소를 넣는다.</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>포인터 배열 나머지 칸에는 첫칸 주소를 이용해 열의 크기만큼 건너뛰어 주소를 잡아준다.</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>*/</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>maze = (short**)malloc(sizeof(short*)*width);</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>*maze = (short*)malloc(sizeof(short)*width*height);</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>for(i=1;i<width;i++)<span class="Apple-tab-span" style="white-space: pre"> </span>*(maze+i) = *(maze+i-1)+height;</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span></div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>for(i=0;i<width;i++)</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>for(j=0;j<height;j++)</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>fscanf(loadfile, "%d", &maze[i][j]);</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span></div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>fclose(loadfile);</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span></div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>//플레이어의 시작위치를 찾는다.</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>for(i=0;i<width;i++)</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>for(j=0;j<height;j++)</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>if(maze[i][j] == 2)</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>{</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>player.x = i;</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>player.y = j;</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>}</div> <div><br /></div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>while(1)</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>{</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>system("cls");</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span></div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>//화면을 그린다.</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>for(i=0;i<width;i++)</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>{</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>for(j=0;j<height;j++)</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>{</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>if(player.x == i && player.y == j)<span class="Apple-tab-span" style="white-space: pre"> </span>//플레이어</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>printf("◎");</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>else if(maze[i][j] == 3)<span class="Apple-tab-span" style="white-space: pre"> </span>//도착지점</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>printf("★");</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>else if(maze[i][j] == 1)<span class="Apple-tab-span" style="white-space: pre"> </span>//벽</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>printf("■");</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>else<span class="Apple-tab-span" style="white-space: pre"> </span>//공백</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>printf(" ");</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>}</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>printf("\n");</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>}</div> <div><br /></div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>if(maze[player.x][player.y] == 3)</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>{</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>printf("\n\n\a클리어!!!\n");</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>break;</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>}</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span></div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>//키를 입력받는다.</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>key = getch();</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>switch(key)</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>{</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>case UP:</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>if(!(maze[player.x-1][player.y] == 1))</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>player.x--;</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>break;</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>case DOWN:</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>if(!(maze[player.x+1][player.y] == 1))</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>player.x++;</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>break;</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>case LEFT:</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>if(!(maze[player.x][player.y-1] == 1))</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>player.y--;</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>break;</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>case RIGHT:</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>if(!(maze[player.x][player.y+1] == 1))</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>player.y++;</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>}</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>}</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>free(*maze);</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>free(maze);</div> <div>}</div>
<a href="http://steamsignature.com"><img src="http://steamsignature.com/profile/koreana/76561198080940167.png" alt="" title="" /></a>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.