#include "miro_H.h"
//해당함수는 콘솔(도스)창에 맵을 그려주기 위한 함수로 사용됨.
void Main_Date::Map_Print()
{
if(S_level == 1)
{
for(int i = 0; i < S_1_M_width; i++)
{
for(int j = 0; j < S_1_M_height; j++)
{
//맵은 int형 배열로 선언되어 있으며, 각 배열마다 0과 1로 초기화가 되어있는데
//해당 숫자에 맞춰 빈공간(캐릭터가 움직일 부분)과 벽으로 체크할 부분을
//나누어 화면에 뿌려주게 하는 기능을 함.
//빈 공간을 두번 띄운 이유는 벽으로 사용한 한글 'ㅁ'자는 2바이트이기 때문에
//맵의 모양을 원하는 대로 맞추어 뿌리기 위하여 두 칸을 띄워 2바트를 맞췄기 때문에.
if(test[i][j] == 3)
{
Map_Color(7,12);
cout << "★";
player_X = i;
player_Y = j;
}
if(test[i][j] == 1)
{
Map_Color(0, 10);
cout << "ㅁ";
}
else if(test[i][j] == 0 )
{
Map_Color(7, 0);
cout << " ";
}
else if(test[i][j] ==4)
{
Map_Color(0, 14);
cout << "탈";
}
else if(test[i][j] ==5)
{
Map_Color(0, 14);
cout << "출";
}
}
cout << endl;
}
}
else if(S_level == 2)
{
for(int i = 0; i < S_2_M_width; i++)
{
for(int j = 0; j < S_2_M_height; j++)
{
if(test[i][j] == 3)
{
Map_Color(7,12);
cout << "★";
player_X = i;
player_Y = j;
}
if(test[i][j] == 1)
{
Map_Color(0, 10);
cout << "ㅁ";
}
else if(test[i][j] ==0)
{
Map_Color(7, 0);
cout << " ";
}
else if(test[i][j] ==4)
{
Map_Color(0, 14);
cout << "탈";
}
else if(test[i][j] ==5)
{
Map_Color(0, 14);
cout << "출";
}
}
cout << endl;
}
}
else if(S_level == 3) {
for(int i = 0; i < S_3_M_width; i++)
{
for(int j = 0; j < S_3_M_height; j++)
{
if(test[i][j] == 3)
{
Map_Color(7,12);
cout << "★";
player_X = i;
player_Y = j;
}
if(test[i][j] == 1)
{
Map_Color(0, 10);
cout << "ㅁ";
}
else if(test[i][j] ==0)
{
Map_Color(7, 0);
cout << " ";
}
else if(test[i][j] == 4)
{
cout << "탈";
}
else if(test[i][j] == 5)
{
cout << "출";
}
}
cout << endl;
}
}
}
void Main_Date::C_Move()
{
int key;
int MAX_X , MAX_Y;
key = getch();
int x = player_X, y = player_Y;
if(S_level == 1)
{
MAX_X = S_1_M_width;
MAX_Y = S_1_M_height;
}
else if(S_level == 2)
{
MAX_X = S_2_M_width;
MAX_Y = S_2_M_height;
}
else if(S_level == 3)
{
MAX_X = S_3_M_width;
MAX_Y = S_3_M_height;
}
switch(key)
{
// 119 - 상, 하 - 115, 97 - 좌,100 - 우
//상
case 119:
if(player_X > 0)
//오류 - x y 값이 뒤바뀜..
//플레이어의 하단에 위치한 공간이 0 (비어잇을경우) 플레이어와 위치변경 후 위치좌표 값 재설정
if( test[player_X - 1][player_Y] == 0){
test[player_X][player_Y] = 0;
test[player_X - 1][player_Y] = 3;
player_X--;
} else if(test[player_X - 1][player_Y] == 4) {
S_level++;
G_map();
}
break;
//하
case 115:
if(player_X < S_3_M_height)
if( test[player_X + 1][player_Y] == 0) {
test[player_X][player_Y] = 0;
test[player_X + 1][player_Y] = 3;
player_X++;
}else if(test[player_X + 1][player_Y] == 4) {
S_level++;
G_map();
}
break;
//좌
case 97:
if(player_Y > 0)
if( test[player_X][player_Y - 1] == 0) {
test[player_X][player_Y] = 0;
test[player_X][player_Y-1] = 3;
player_Y -= 1;
}else if(test[player_X][player_Y - 1] == 4) {
S_level++;
G_map();
}
break;
//우
case 100:
if(player_Y < S_3_M_width)
if( test[player_X][player_Y + 1] == 0) {
test[player_X][player_Y] = 0;
test[player_X][player_Y + 1] = 3;
player_Y += 1;
}else if(test[player_X][player_Y + 1] == 4) {
S_level++;
G_map();
}
break;
}
}
해당 소스는 c와 c++을 공부했던 이들이라면 쉽게 이해될 거라 생각됩니다.
c와 c++을 공부하기 시작하는 분들에게도 도움이 되었으면 하는 바램에 가져왔습니담.
참고로 자세한 설명은 기재되어 있지 않습니다~ ㅎ
처음 공부하는 이들이라면 '왜 이렇게 되는지'라는 의문을 가지고 검색해보고 고민해봤으면 하는 바램이기 때문이죠 ㅎ
모두 화이팅!!!!
'지식창고 > 프로그래밍' 카테고리의 다른 글
C++ 언어를 사용하여 간단한 미로게임 구현하기 _4(miro.cpp) (0) | 2019.08.12 |
---|---|
C++ 언어를 사용하여 간단한 미로게임 구현하기 2_(main.cpp) (0) | 2019.08.12 |
C++ 언어를 사용하여 간단한 미로게임 구현하기 1_(miro_h) (0) | 2019.08.12 |
(C++)범위지정연산자란? (0) | 2019.08.03 |
(C, C++)객체라는 의미는? (0) | 2019.08.03 |