메뉴 바로가기

서브메뉴 바로가기

본문 바로가기

logo

MFC테트리스 만들기
조회 수 27,483 추천 수 0 댓글 6
?

단축키

Prev이전 문서

Next다음 문서

위로 아래로 댓글로 가기 인쇄 첨부 목록
?

단축키

Prev이전 문서

Next다음 문서

위로 아래로 댓글로 가기 인쇄 첨부 목록
?
  • 똑똑 2010.07.24 17:45 SECRET

    "비밀글입니다."

  • WhiteAT 2010.07.24 18:35 글쓴이

    똑똑 님에게 달린 댓글

    먼저 이건 3년전에 작성했고 지금은 코드를 보지 않아 가물가물하다는 말씀을 드립니다.^^ 

     

    1. 게임 종료

        보드의 특정 위치(아마도 위쪽의 가운데)에 벽돌이 걸리면 게임이 종료됩니다.

        현재 특정 메세지는 출력하지 않고, 그냥 타이머 종료로 끝낼겁니다.

        IsGameEnd() 함수가 게임 끝인지 검사할겁니다.

        그 부분에 Messagebox("끝"); 하면 됩니다.^^

     

    2. 게임 스피드

        스피드는 SetTimer 함수를 수정하면 됩니다.

        SetTimer(1000,......) 하면 1초마다 벽돌이 떨어지는 것이고,

         Settimer(500,......) 하면 0.5초마다 벽돌이 떨어지는 겁니다.^^

     

    3. 1인용 게임

        1인용 게임은 View 에서 하나의  CTetris 클래스만 사용하면 되고,

         가운데위치에서 출력하려면...  보드를 생성할때, 위치를 설정해 주면 됩니다.^^

       

     

  • 창공적연가 2011.06.03 23:59

    지금 미리보기가 현 블록모양의 바로 앞에 것을 보여주는데..

     

    만약 미리보기를 현 블록모양의 2단계 뒤의 블록을 보여줄려면

     

    어떤 변수를 수정해야되나요

     

    제 생각엔 GetColorByNUM(m_iNextBlockShape+1  을 GetColorByNUM(m_iNextBlockShape+2 로 고치면 되지 않을까 싶은데..

     

    설명 부탁드려요

  • WhiteAT 2011.06.04 07:35 글쓴이

    창공적연가 님에게 달린 댓글

    GetColorByNUM(m_iNextBlockShape+1 ) 색상을 구하는 함수입니다.^^

    여기서는 블럭 모양으로 블럭색상이 결정됩니다.

     

     

    정확하지는 않겠지만,

    0 는 회색,

    1 는 빨간색,

    2 는 xxx색, 일 겁니다.

     

    2단계 뒤의 블럭을 보려면 m_iNext2Blockshape 라는 변수를 하나 더 만들던가.

    m_iNextBlockShape[] 형태의 배열로 만들어 여러 단계로 뒤의 블럭 정보를 가질수 있습니다.

     

    2단계 뒤의 블럭 정보를 얻으려면 m_iNextBlockShape 이 생성되는 부분을 찾으시면 됩니다.~~

  • 창공적연가 2011.06.04 19:36

    WhiteAT 님에게 달린 댓글

    설명해주신대로 m_iNextBlockShape2 변수 만들고

     

    for(tempY=0;tempY<4;tempY++)
     {
      for( tempX=0; tempX<4; tempX++)
      {
       if (0 != g_NowBlockInfo[m_iNextBlockShape2][0][tempY][tempX])
       {
        DrawOneBlockbyCDC( 10+tempY, BOARD_X_SIZE+3+tempX,m_iOneBlockSize,pDrawDC,GetColorByNUM(m_iNextBlockShape2+1));
       }
      }
     } 으로  함수를 만들었고

     

    void CWATOneTetris::GameStart(int iTimer) 클래스에

    m_iNextBlockShape2  = 0;

     m_iNextBlockShape2 = rand()%10;

     

    void CWATOneTetris::OnTimer() 클래스에

     m_iNextBlockShape2 = rand()%10;

     

    이렇게 메세지를 추가했는데,,

     

    2단계 앞의 블록이 나오는것이 아닌 그냥 랜덤으로 블록 모양이 나오네요.

     

    어디서 틀린건지... 가르쳐주세요

  • WhiteAT 2011.06.04 23:47 글쓴이

    2단계까지 보이게 하려면 m_iNextBlockShape 는 2단계에서 생성된 것을 받아서 사용해야 합니다.^^

     

    m_iNextBlockShape   =  m_iNextBlockShape2  ;

     m_iNextBlockShape2   = rand();;.....