메뉴 바로가기

서브메뉴 바로가기

본문 바로가기

logo

묻고 답하기
C++왕초보2011.05.17 23:54

아 답변은 감사한데, 제 질문과는 조금 다르네요..

 

전 2007년도 버전을 보고 있는데...

 

일단 제가 이해가 안되는 것은

  for(tempY = 0;tempY<BOARD_Y_SIZE+1;tempY++)
 {
   for(int tempX=0; tempX<BOARD_X_SIZE+2; tempX++)
  {
   if(0 != g_BoardInfo[tempY][tempX])
   {
     DrawOneBlock((BOARD_Y_POS+tempY),BOARD_X_POS+tempX,m_iOneBlockSize,&pDC,RGB(200,200,200));
 
    }
  }
  }

이 함수에서 보면,

 

y값을 0부터 BOARD_Y_SIZE까지 증가시키면서, 회색판을 그리는 건데,...

 

그러면 제일 마지막에 한줄이 그려지는데

 

지금 제가 궁금한것은

 

제일 마지막줄이 제일 위에 그려지고, 밑에가 뚫려있는 그 보드를 그리는 함수가 필요합니다.

 

그리고 난 뒤에, 벽을 그리는 함수(실제로 게임상에서 벽돌을 못들어가게 하는 함수)를 보려고 합니다.

 

언제나 빠른 답변 감사합니다.

 

아 추가적으로,

 

void CWATTetrisView::OnPaint()
{
 CPaintDC dc(this); // device context for painting
 
 CClientDC pDC(this); // 현재 화면의 정보를 얻음
 CPen penLine; // 사용할 pen 의 셋팅
 CPen *OldPen; // 기존에 사용하던 설정으로 복구할 변수
 penLine.CreatePen(0,3,RGB(0,0,0));
 OldPen = pDC.SelectObject((&penLine));
 
 //////////////////////////////////////////////////////////////////////////
 // 실제 출력될 내용

 for(int tempY=0;tempY<4;tempY++)
 {
  for(int tempX=0; tempX<4; tempX++)
  {
   if (0 != g_NowBlockInfo[m_iNowBlockShape][m_iNowBlockDir][tempY][tempX])
   {
    DrawOneBlock(BOARD_Y_POS + m_iNowBlockY+tempY,BOARD_X_POS + m_iNowBlockX+tempX,m_iOneBlockSize,&pDC,RGB(250,050,250));
   }
   else
   {
    // 벽돌이 아닌 곳을 회색으로 표시
//    DrawOneBlock(BOARD_Y_POS + m_iNowBlockY+tempY, BOARD_X_POS+m_iNowBlockX+tempX,m_iOneBlockSize,&pDC,RGB(200,200,200));
   }
  }
 }
 //////////////////////////////////////////////////////////////////////////


  for(tempY = 0;tempY<BOARD_Y_SIZE+1;tempY++)
 {
   for(int tempX=0; tempX<BOARD_X_SIZE+2; tempX++)
  {
   if(0 != g_BoardInfo[tempY][tempX])
   {
     DrawOneBlock((BOARD_Y_POS+tempY),BOARD_X_POS+tempX,m_iOneBlockSize,&pDC,RGB(200,200,200));
 
    }
  }
  }

 

이 함수대로 넣고 실행을하면, 제일 처음 벽돌이 생성되는 위치가 위에서 부터 생성이 되는데, 조절되게 하는 방법좀 부탁드립니다...

 

최초에 시작되는 것만 수정하면 될것같던데..

 

못찾겠어요...

사진 및 파일 첨부

여기에 파일을 끌어 놓거나 왼쪽의 버튼을 클릭하세요.

파일 용량 제한 : 0MB (허용 확장자 : *.*)

0개 첨부 됨 ( / )