메뉴 바로가기

서브메뉴 바로가기

본문 바로가기

logo

MFC테트리스 만들기
조회 수 27,484 추천 수 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();;.....

     

     

     

     

  1. No Image notice by WhiteAT

    [공지] MFC로 테트리스 게임만들기

  2. notice by WhiteAT

    [FAQ]자주 하는 질문을 정리했습니다.

  3. 09Nov
    by WhiteAT
    in 방법2
    Replies 6

    점수, 미리보기, 게임종료 기능 추가

  4. 30Oct
    by WhiteAT
    in 방법2

    벽돌색깔 유지&윈도우 크기에 따른 벽돌 크기 변경

  5. No Image 26Oct
    by WhiteAT
    in 방법2

    더블버퍼링 사용

  6. 25Oct
    by WhiteAT
    in 방법2

    벽돌 움직이기

  7. 25Oct
    by WhiteAT
    in 방법2

    보드 그리기 & 타이머

  8. 20Oct
    by WhiteAT
    in 방법2
    Replies 2

    테트리스 클래스 만들기

  9. 20Oct
    by WhiteAT
    in 방법2

    클래스 필요성 & 클래스 구조

목록
Board Pagination Prev 1 Next
/ 1