|  |  |  |  | => |  |  |  |  | => |  |  |  |  | => |  |  |  |  | 
|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  | |||
|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  | |||
|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  | 
기존 배열에 벽돌의 종류를 추가하면 된다.
배열이 3차원에서 4차원으로 확장되었으니,
현재 벽돌 모양을 나타내는 변수 m_iNowBlockShape를 추가 하고,
OnPaint()함수도 변경해줘야 한다.
                  for(int tempY=0;tempY<4;tempY++)
                  {
                                   for(int tempX=0;
tempX<4;
tempX++)
                                   {
                                                     if
(1 == g_NowBlockInfo[m_iNowBlockShape][m_iNowBlockDir][tempY][tempX])
                                                     {
                                                                       pDC.FillSolidRect((m_iNowBlockX+tempX)*m_iOneBlockSize, (m_iNowBlockY+tempY)*m_iOneBlockSize,
                                                                                        m_iOneBlockSize, m_iOneBlockSize, RGB(250,250,250));
                                                     }else{
                                                                       // 벽돌이 아닌 곳을 회색으로 표시
                                                                       pDC.FillSolidRect((m_iNowBlockX+tempX)*m_iOneBlockSize, (m_iNowBlockY+tempY)*m_iOneBlockSize,
                                                                                        m_iOneBlockSize, m_iOneBlockSize, RGB(200,200,200));
                                                     }
                                   }
                  }
벽돌이 바닥에 닿았을 때 벽돌 모양을 바꿔보자.
void CWATTetrisView::OnTimer(UINT nIDEvent) 
{
                  m_iNowBlockY
+=1;
                  if(m_iNowBlockY>=20){
                                   m_iNowBlockY = 0;
                                   m_iNowBlockShape
= (++m_iNowBlockShape)%2;
                  }
                  Invalidate();
                                                      
                  CFormView::OnTimer(nIDEvent);
}
7가지 모양은 아래와 같다
0번 모양
|  |  |  |  | => |  |  |  |  | => |  |  |  |  | => |  |  |  |  | 
|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  | |||
|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  | |||
|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  | 
1번 모양
|  |  |  |  | => |  |  |  |  | => |  |  |  |  | => |  |  |  |  | 
|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  | |||
|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  | |||
|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  | 
2번 모양
|  |  |  |  | => |  |  |  |  | => |  |  |  |  | => |  |  |  |  | 
|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  | |||
|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  | |||
|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  | 
3번 모양
|  |  |  |  | => |  |  |  |  | => |  |  |  |  | => |  |  |  |  | 
|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  | |||
|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  | |||
|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  | 
4번 모양
|  |  |  |  | => |  |  |  |  | => |  |  |  |  | => |  |  |  |  | 
|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  | |||
|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  | |||
|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  | 
5번 모양
|  |  |  |  | => |  |  |  |  | => |  |  |  |  | => |  |  |  |  | 
|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  | |||
|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  | |||
|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  | 
6번 모양
|  |  |  |  | => |  |  |  |  | => |  |  |  |  | => |  |  |  |  | 
|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  | |||
|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  | |||
|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  | 
소스 : WATTetris_20071016.zip
..




선생님~~ 질문잇습니다 ^^;;
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 {} 이 부분을 수행하라라고 이해되는데 잘못이해한거 같아서요^^;;
아 그리구 강의 너무 감사하게 잘 보구 있습니다 ^^*
답변 기다리겠습니다!