메뉴 바로가기

서브메뉴 바로가기

본문 바로가기

logo

MFC테트리스 만들기
조회 수 18,982 추천 수 0 댓글 7
?

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

위로 아래로 댓글로 가기 인쇄 첨부 목록
?
  • 심플e 2010.10.30 12:46

    선생님~~ 질문잇습니다 ^^;;

     

    void CWATTetrisView::OnTimer(UINT nIDEvent)
    {
     m_iNowBlockY +=1;
     if(m_iNowBlockY>=20){
      m_iNowBlockY = 0;
      m_iNowBlockShape = (++m_iNowBlockShape)%7;
     }
     Invalidate();
       
     CFormView::OnTimer(nIDEvent);
    }

     

    아까도 질문했었는데요^^;;

    이 부분에서요~

     

    m_iNowBlockShape = (++m_iNowBlockShape)%7;


    %7이 의미하는것은 7가지의 모양인가요??

    a

    그리구요 OnPaint 함수부분에서

     

       if (1 == g_NowBlockInfo[m_iNowBlockShape][m_iNowBlockDir][tempY][tempX])

     

    이 부분이요~

     

    g_NowBlockInfo == 1 이라는 말이 무슨말인지 모르겠어요;

     

    제가 생각하기론 g_NowBlockInfo 의 배열 전부가 1이면 {} 을 수행하라

    아니면 else {} 이 부분을 수행하라라고 이해되는데 잘못이해한거 같아서요^^;;

     

    아 그리구 강의 너무 감사하게 잘 보구 있습니다 ^^*

    답변 기다리겠습니다!

  • WhiteAT 2010.10.30 15:03 글쓴이

    %7이 의미하는것은 7가지의 모양인가요??

       => 네 7가지 모양 입니다.

     

    위에 내용 보시면 7가지 모양을 그림으로 그려놓은게 있는데

    색깔이 칠해져 있으면 (즉, 벽돌이 있으면) 1이고, 벽돌이 없으면 0으로 처리습니다

     

    예를 들어,

    {0,0,0,0}

    {1,1,1,1}

    {0,0,0,0}

    {0,0,0,0}

    이면 긴 막대가 눕혀져 있는 모양이고,

     

    {0,1,0,0}

    {0,1,0,0}

    {0,1,0,0}

    {0,1,0,0} 이면 막대가 세워져 있는 모양입니다.~~

     

  • 소마 2011.11.08 02:29

    0 != g_NowBlockInfo[m_iNowBlockShape][m_iNowBlockDir][tempY][tempX]

    선생님 이거요 배열을 변수로 바꾸셨는데 그냥 알아보기 쉽게 배열 각 부분이 무슨 역활하는걸 나타내신거죠// 그대로[7][4][4][4]해도 되죠////

  • WhiteAT 2011.11.08 10:06 글쓴이

    소마 님에게 달린 댓글

    g_NowBlockInfo[m_iNowBlockShape][m_iNowBlockDir][tempY][tempX]
     
    이 테트리스에서 가장 중요한 변수인데^^
    m_iNowBlockShape 는 벽돌 모양을 나타냅니다.
    0, 1, 2, 3, 4, 5, 6,  으로 7가지 모양을 가집니다.
     

     

     

    m_iNowBlockDir 는 벽돌의 회전 모양을 나타냅니다.
    0 이면 기본모양
    1이면 90도 회전 모양
    2 이면 180도 회전 모양
    3 이면 270 도 회전 모양
     

    tempY , tempX  는 [4][4] 인데,

    벽돌의 한칸 한칸을 검사하려는 변수입니다.

    즉 아래처럼 벽돌 16칸을 모두 검사해서 벽돌이 있는 칸인지 알려는 겁니다.~

     

    [0][0]

    [0][1]

    [0][2]

    [0][3]

     

    [1][0]

    [1][1]

    [1][2]

    [1][3]

     

    [2][0]

    [2][1]

    [2][2]

    [2][3]

     

    [3][0]

    [3][1]

    [3][2]

    [3][3]

     
     
    그대로[7][4][4][4] 로 하시면 프로그램 다운될 겁니다.^^;;;
     
     
     
     
  • 소마 2011.11.09 17:37

    if (0 != g_NowBlockInfo[m_iNowBlockShape][m_iNowBlockDir][tempY][tempX])

    선생님 이부분에서 m_iNowBlockShape는 0~6 이고 m_iNowBlockDir은 0~3인데 이건 관계연산자가 어떻게 반응하는거죠//// tempY와  tempX는 1과 0으로 배열 되어있어 0 != 1 이면 참이기 때문에 색깔이 나오잖아요...

  • WhiteAT 2011.11.09 19:43 글쓴이

    소마 님에게 달린 댓글

    g_NowBlockInfo[m_iNowBlockShape][m_iNowBlockDir][tempY][tempX]이 0이 아니면 벽돌이 나오고 0이면 안나오는 거죠^^

  • 소마 2011.11.09 17:38

    그리고 4x4배열이니깐 tempX,Y는 가로줄 세로줄로 반응하는건가요// 그래서 for문 범위가 0에서 3까지 인거죠///


  1. read more
  2. read more
  3. [01]윈도우 프로그램 껍데기 만들기.

    Category :방법1 Reply36
    Read More
  4. [02]간단한 소스 분석 & 간단한 기능 추가

    Category :방법1 Reply2
    Read More
  5. [03]도형,글씨 나타내기.

    Category :방법1 Reply10
    Read More
  6. [04]키보드로 벽돌 움직이기

    Category :방법1 Reply7
    Read More
  7. [05]타이머로 벽돌 떨어뜨리기 & 벽돌 이동을 함수로

    Category :방법1 Reply14
    Read More
  8. [06]벽돌 모양 만들기 & 벽돌회전

    Category :방법1 Reply30
    Read More
  9. [07]여러모양 만들기

    Category :방법1 Reply7
    Read More
  10. [08]보드 만들기 & 벽돌이동 범위체크

    Category :방법1 Reply18
    Read More
  11. [09]벽돌을 바닥에 쌓기 & 한줄없애기

    Category :방법1 Reply37
    Read More
  12. 클래스 필요성 & 클래스 구조

    Category :방법2
    Read More
  13. 테트리스 클래스 만들기

    Category :방법2 Reply2
    Read More
  14. 보드 그리기 & 타이머

    Category :방법2
    Read More
  15. 벽돌 움직이기

    Category :방법2
    Read More
목록
Board Pagination Prev 1 2 Next
/ 2