본문으로 바로가기

[C언어] 미로 찾기 게임 제작

category C 2014. 6. 4. 11:32

[C언어] 미로 찾기 게임 제작


<단계1>




#define LEFT  75

#define RIGHT 77
#define UP  72
#define DOWN 80
#define PGUP 73
#define PGDN 81
#define ESC  27

 

<단계2>


 


<참고>

void CPushPushDlg::PlayerUp()
{
    if (m_bDeleteRest)
    {
        m_bDeleteRest = false;
        m_PosData.DeleteRest();
    }

    // 벽면1을 만났을때
    if (m_Map.nMap[m_nLevel][m_PlayerPos.y][m_PlayerPos.x] == 1)
        m_PlayerPos.y++; // 정지

    // 공6을 만났을때
    else if (m_Map.nMap[m_nLevel][m_PlayerPos.y][m_PlayerPos.x] == 6)
    {
        // 벽면 1이 있을때
        if (m_Map.nMap[m_nLevel][m_PlayerPos.y-1][m_PlayerPos.x] == 1 ||
        // 들어간 타켓4를 만났을때
            m_Map.nMap[m_nLevel][m_PlayerPos.y-1][m_PlayerPos.x] == 4 ||
        // 공6을 만났을때
            m_Map.nMap[m_nLevel][m_PlayerPos.y-1][m_PlayerPos.x] == 6)
            m_PlayerPos.y++; // 정지

        // 안들어간 타켓5를 만났을때
        if (m_Map.nMap[m_nLevel][m_PlayerPos.y-1][m_PlayerPos.x] == 5)
        {
            m_PosData.Insert(m_Map, m_PlayerOldPos, m_nLevel); // 이전정보백업
            // 들어간 타켓4로 만듬
            m_Map.nMap[m_nLevel][m_PlayerPos.y-1][m_PlayerPos.x] = 4;
            // 옮기전 자리를 안배경으로 만듬
            m_Map.nMap[m_nLevel][m_PlayerPos.y][m_PlayerPos.x] = 3;
        }
        // 빈자리 일때
        if (m_Map.nMap[m_nLevel][m_PlayerPos.y-1][m_PlayerPos.x] == 3)
        {
            m_PosData.Insert(m_Map, m_PlayerOldPos, m_nLevel); // 이전정보백업
            // 공을 옮김
            m_Map.nMap[m_nLevel][m_PlayerPos.y-1][m_PlayerPos.x] = 6;
            // 옮기기전 자리 안배경
            m_Map.nMap[m_nLevel][m_PlayerPos.y][m_PlayerPos.x] = 3;
        }
    }
    // 들어간 타켓4를 만났을때
    else if (m_Map.nMap[m_nLevel][m_PlayerPos.y][m_PlayerPos.x] == 4)
    {
        // 벽면 1이 있을때
        if (m_Map.nMap[m_nLevel][m_PlayerPos.y-1][m_PlayerPos.x] == 1 ||
        // 들어간 타켓4를 만났을때
            m_Map.nMap[m_nLevel][m_PlayerPos.y-1][m_PlayerPos.x] == 4 ||
        // 공6을 만났을때
            m_Map.nMap[m_nLevel][m_PlayerPos.y-1][m_PlayerPos.x] == 6)
            m_PlayerPos.y++; // 정지

        // 안들어간 타켓5를 만났을때
        if (m_Map.nMap[m_nLevel][m_PlayerPos.y-1][m_PlayerPos.x] == 5)
        {
            m_PosData.Insert(m_Map, m_PlayerOldPos, m_nLevel); // 이전정보백업
            // 들어간 타켓4로 만듬
            m_Map.nMap[m_nLevel][m_PlayerPos.y-1][m_PlayerPos.x] = 4;
            // 옮기전 자리를 안들어간 타켓5로 만듬
            m_Map.nMap[m_nLevel][m_PlayerPos.y][m_PlayerPos.x] = 5;
        }

        // 빈자리3을 만났을때
        if (m_Map.nMap[m_nLevel][m_PlayerPos.y-1][m_PlayerPos.x] == 3 )
        {
            m_PosData.Insert(m_Map, m_PlayerOldPos, m_nLevel); // 이전정보백업
            // 공을 만듬
            m_Map.nMap[m_nLevel][m_PlayerPos.y-1][m_PlayerPos.x] = 6;
            // 옮기전 자리를 안들어간 타켓5로 만듬
            m_Map.nMap[m_nLevel][m_PlayerPos.y][m_PlayerPos.x] = 5;
        }
    }
    // 들어간 타켓3, 5를 만났을때
    else if (m_Map.nMap[m_nLevel][m_PlayerPos.y][m_PlayerPos.x] == 3 ||
        m_Map.nMap[m_nLevel][m_PlayerPos.y][m_PlayerPos.x] == 5 )
        m_PosData.Insert(m_Map, m_PlayerOldPos, m_nLevel); // 이전정보백업
}

 

pushpushmap.txt


pushpush.exe