디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

이거 한번 봐주세요~쓰래드!!!ㅠㅠㅠㅠㅠ

뵤뵤구(221.163) 2011.12.19 04:12:02
조회 75 추천 0 댓글 1

// ChildView.cpp : implementation of the CChildView class
//

#include "stdafx.h"
#include "1.h"
#include "ChildView.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

int rx, ry, tx, ty, dir1, dir2;

CWinThread *pbr1;
CWinThread *pbr2;
CWinThread *pblock;
CWinThread *pball;
 

UINT br1(LPVOID arg);
UINT br2(LPVOID arg);
UINT block(LPVOID arg);
UINT ball(LPVOID arg);


BITMAP info1;
BITMAP info2;
BITMAP info3;

CDC dcmem1;
CDC dcmem2;
CDC dcmem3;

// 필요한 변수들 선언
#define R 10
#define STEP 5
#define STEP_SIDE_X 7
#define STEP_SIDE_Y 3
#define BAR_STEP 10
#define BAR_HALF 50
#define TOP_SPACE 50 // 위에 공간 높이

int movex = STEP;
int movey = STEP;
int bar_top;
int bar_middle;
int direction = 1;
int box[112];

 

int nX = 340, nY = 370;
int nCX = STEP, nCY = -STEP;

int gameon = 0; // 게임이 진행중이면 1
bool bKeyDown = false; // 키가 눌리고 있는지 체크하는 변수

CBrush brush, *blockBrush;

/////////////////////////////////////////////////////////////////////////////
// CChildView

CChildView::CChildView()
{
}

CChildView::~CChildView()
{
}


BEGIN_MESSAGE_MAP(CChildView,CWnd )
//{{AFX_MSG_MAP(CChildView)
ON_WM_PAINT()
ON_COMMAND(ID_INIT, OnInit)
ON_COMMAND(ID_START, OnStart)
ON_WM_KEYDOWN()
 //}}AFX_MSG_MAP
END_MESSAGE_MAP()


/////////////////////////////////////////////////////////////////////////////
// CChildView message handlers

BOOL CChildView::PreCreateWindow(CREATESTRUCT& cs)
{
 if (!CWnd::PreCreateWindow(cs))
  return FALSE;
 
 cs.dwExStyle |= WS_EX_CLIENTEDGE;
 cs.style &= ~WS_BORDER;
 cs.lpszClass = AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS,
  ::LoadCursor(NULL, IDC_ARROW), HBRUSH(COLOR_WINDOW+1), NULL);
 
 return TRUE;
}

void CChildView::OnPaint()
{
 CPaintDC dc(this); // device context for painting
 
 // TODO: Add your message handler code here
 
 // Do not call CWnd::OnPaint() for painting messages
}

UINT br1(LPVOID arg)// 막대기
{
 CDC dc;
 HDC hdc=::GetDC((HWND) arg);
 dc.Attach(hdc);
 
 dc.SelectStockObject(NULL_PEN);
 

 while(1)
 {
  dc.BitBlt(rx, ry, info3.bmWidth, info3.bmHeight, &dcmem3, rx, ry, SRCCOPY);
  switch(dir1)
  {
  case 1:
   rx-=10;
   if(rx<10)
   {
    rx+=10;
    dir1=1;
   }
   break;
   
  case 2:
   rx+=10;
   if(rx+info1.bmWidth>680)
   {
    rx-=10;
    dir1=2;
   }
   break;
   
  }
  
  dc.BitBlt(rx, ry, info1.bmWidth, info1.bmHeight, &dcmem1, 0, 0, SRCCOPY);
  Sleep(30);
  
 }
 
 dc.Detach();
 ::ReleaseDC((HWND) arg, hdc);
 return 0;
 
}


void CChildView::OnInit()
{
 // TODO: Add your command handler code here
 CClientDC dc(this);
 
 rx=300;
 ry=400;
 
 CBitmap back;
 back.LoadBitmap(IDB_BACK);
 back.GetBitmap(&info3);
 dcmem3.CreateCompatibleDC(&dc);
 dcmem3.SelectObject(&back);
 dc.BitBlt(0, 0, info3.bmWidth, info3.bmHeight, &dcmem3, 0, 0, SRCCOPY);
 
 CBitmap bar1;
 bar1.LoadBitmap(IDB_BAR1);
 bar1.GetBitmap(&info1);
 dcmem1.CreateCompatibleDC(&dc);
 dcmem1.SelectObject(&bar1);
 dc.BitBlt(rx, ry, info1.bmWidth, info1.bmHeight, &dcmem1, 0, 0, SRCCOPY);
 
 
 CBrush brush, *blockbrush;
 CPoint boxpt(0,0);

 for(int i = 0; i < 112; i++)
 {
  dc.SelectStockObject(NULL_PEN);
  box[i] = 1; // 존재상태로 값 설정
  boxpt.x = (i % 16) * 43;
  boxpt.y = (int)(i / 16) * 18 + TOP_SPACE;
  if(box[i] == 1) { // 박스가 아직 활성화 상태라면,
   if(i / 16 == 0) brush.CreateSolidBrush(RGB(180,100,10));
   else if(i / 16 == 1) brush.CreateSolidBrush(RGB(190,120,50));
   else if(i / 16 == 2) brush.CreateSolidBrush(RGB(200,140,90));
   else if(i / 16 == 3) brush.CreateSolidBrush(RGB(210,160,130));
   else if(i / 16 == 4) brush.CreateSolidBrush(RGB(220,180,170));
   else if(i / 16 == 5) brush.CreateSolidBrush(RGB(230,200,210));
   else if(i / 16 == 6) brush.CreateSolidBrush(RGB(230,200,210));
  } else { // 박스가 없어진 것이라면.
   brush.CreateSolidBrush(RGB(255,255,255));
  }
  blockbrush = (CBrush *) dc.SelectObject(&brush);
  dc.Rectangle(boxpt.x, boxpt.y, boxpt.x + 40, boxpt.y + 15);
  dc.SelectObject(blockbrush);
  brush.DeleteObject();
 }

 brush.CreateSolidBrush(RGB(255, 0, 0));
 dc.SelectStockObject(NULL_PEN);
 blockbrush = (CBrush *) dc.SelectObject(&brush);
 dc.Ellipse(nX-R,nY-R,nX+R, nY+R);
 dc.SelectObject(blockbrush);
 brush.DeleteObject();


 pbr1=AfxBeginThread(br1, this->m_hWnd, THREAD_PRIORITY_NORMAL, 0, CREATE_SUSPENDED);
 pblock=AfxBeginThread(block, this->m_hWnd, THREAD_PRIORITY_NORMAL, 0, CREATE_SUSPENDED);
 pball=AfxBeginThread(ball, this->m_hWnd, THREAD_PRIORITY_NORMAL, 0, CREATE_SUSPENDED);
 
}


void CChildView::OnStart()
{
 // TODO: Add your command handler code here
 pbr1->ResumeThread();
 pblock->ResumeThread();
 pball->ResumeThread();

 
}

 

void CChildView::(UINT nChar, UINT nRepCnt, UINT nFlags)
{
 // TODO: Add your message handler code here and/or call default
 
 switch(nChar)
 {
 case VK_LEFT: dir1=1; break;
 case VK_RIGHT: dir1=2; break;
 }
 
 CWnd ::(nChar, nRepCnt, nFlags);
}

UINT block(LPVOID arg)// block
{
 CDC dc;
 HDC hdc = ::GetDC ( ( HWND ) arg );
 dc.Attach( hdc );


 CRect rect; 
 
 // 박스 그리기
 CPoint boxpt(0,0);
 CBrush brush, *blockBrush;
 for(int i = 0; i < 112; i++) {
  
  boxpt.x = (i % 16) * 43;
  boxpt.y = (int)(i / 16) * 18 + TOP_SPACE;
  
  // 충돌체크
  CRect tmp_box(boxpt.x, boxpt.y, boxpt.x + 40, boxpt.y + 15);
  CRect tmp_ball(nX-R,nY-R,nX+R, nY+R);
  CRect r;
  if(IntersectRect(&r, &tmp_box, &tmp_ball) && box[i] == 1) {
  
   // 아래쪽 벽에 맞았을 때
   if(nY <= boxpt.y + 15 && (nX >= boxpt.x && nX <= boxpt.x + 40)) {
    movey = (-1) * movey;
    
   }
   // 위쪽 벽에 맞았을 때
   if(nY >= boxpt.y && (nX >= boxpt.x && nX <= boxpt.x + 40)) {
    movey = (-1) * movey;
   }
   // 왼쪽 벽에 맞았을 때
   if(nX >= boxpt.x && (nY >= boxpt.y && nY <= boxpt.y + 15)) {
    direction = (-1) * direction;
    //movex = (-1) * movex;
   }
   // 오른쪽 벽에 맞았을 때
   if(nX <= boxpt.x + 40 && (nY >= boxpt.y && nY <= boxpt.y + 15)) {
    direction = (-1) * direction;
    //movex = (-1) * movex;
   }

   box[i] = 0;
  }
  
  if(box[i] == 1) { // 박스가 아직 활성화 상태라면,
   if(i / 16 == 0) brush.CreateSolidBrush(RGB(180,100,10));
   else if(i / 16 == 1) brush.CreateSolidBrush(RGB(190,120,50));
   else if(i / 16 == 2) brush.CreateSolidBrush(RGB(200,140,90));
   else if(i / 16 == 3) brush.CreateSolidBrush(RGB(210,160,130));
   else if(i / 16 == 4) brush.CreateSolidBrush(RGB(220,180,170));
   else if(i / 16 == 5) brush.CreateSolidBrush(RGB(230,200,210));
   else if(i / 16 == 6) brush.CreateSolidBrush(RGB(230,200,210));
  } else { // 박스가 없어진 것이라면.
   brush.CreateSolidBrush(RGB(255,255,255));
  }
  blockBrush = (CBrush *) dc.SelectObject(&brush);
  dc.Rectangle(boxpt.x, boxpt.y, boxpt.x + 40, boxpt.y + 15);
  dc.SelectObject(blockBrush);
  brush.DeleteObject();
  
 }

 if(nX <= R) direction = 1;
 else if(nX >= rect.Width() - R) direction = -1;
 nX += (movex * direction);

 
 if(nY < R) movey = (-1) * movey;
 else if(nY > bar_top - R && ( nX >= bar_middle - BAR_HALF && nX <= bar_middle + BAR_HALF )) {
 
  if(bKeyDown == false) {
   movex = STEP;
   movey = -STEP;
  } else if(bKeyDown == true) {
   movex = STEP_SIDE_X;
   movey = -STEP_SIDE_Y;   
  }
   
 }
 
 nY += movey;

 dc.Detach ();
 ::ReleaseDC ( ( HWND ) arg, hdc );
 return 0;
}

UINT ball(LPVOID arg)// 공
{
 CDC dc;
 HDC hdc=::GetDC((HWND) arg);
 dc.Attach(hdc);

 

 dc.Detach ();
 ::ReleaseDC ( ( HWND ) arg, hdc );
 return 0;
}
 
이게만든 프로그램 인데 이제 맨밑에 공 쓰래드에다가 어케 해야 벽돌깨고 튕기고 할까요,ㅠㅠㅠㅠㅠㅠㅠ
이거만하면 될꺼 같은데 어케 써야할지갈피를 못잡겠어요 ....
조언 감사히 받겠습니다.

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 이성 보는 눈 없어서 걱정되는 스타는? 운영자 25/11/10 - -
AD 겨울가전 SALE! 쿨한 겨울 HOT세일 운영자 25/11/12 - -
296243 홈페이지 제작...기초부터 탄탄히 공부 해볼려고 합니다. [2] 홈페이지 배(183.105) 11.12.28 128 0
296242 죶뻔데기 글만 싸지르고 튀니까 재미없다.... dlbo갤로그로 이동합니다. 11.12.28 47 0
296241 프로그래밍 시작할 생각입니다 도와주세용 ㅋㅋ; [11] 일단코더부터(222.114) 11.12.28 210 0
296240 대학 학부과정만 따라가면 잉여는 면할수없음??? [5] ㅇㅇㅇㅇㅇㅇ(211.37) 11.12.28 168 0
296239 PHP / 자바 가능하신 재택 프리랜서 모십니다. [3] 유동식(119.179) 11.12.28 102 0
296238 혹시 영어 입력하면 애너그램해주는거 있음? [1] 이힝(121.177) 11.12.28 57 0
296236 도쿄에 두 달간 머물러야 되는데 [2] 분당살람갤로그로 이동합니다. 11.12.28 117 0
296234 일본어 공부하는 횽아들 있뜸?? (안드로이드) [4] 시불라미갤로그로 이동합니다. 11.12.28 151 0
296233 네트워크 쪽 전망이 어떰 [3] Reki_갤로그로 이동합니다. 11.12.28 151 0
296232 아 밑에 php 알바 글좀 댓글좀달아라 시발라마들아 [3] 니 코 가 뭐갤로그로 이동합니다. 11.12.28 111 0
296231 난 섹스와 사랑중에 선택하라면 사랑 [3] Lover♥갤로그로 이동합니다. 11.12.28 154 0
296230 컴퓨터과의미래 신비의섬죶도갤로그로 이동합니다. 11.12.28 97 0
296229 구글님께서 디씨에 악성코드가있다네요? [1] 데헷(119.82) 11.12.28 73 0
296226 여친이 할머닌데 몸매가 쥑임 VS 여친이 몸매가 쥑이는데 할머니임 ㅁㄴㅇㄹ(115.137) 11.12.27 162 0
296223 형들 어플만드는데 제발 좀 도와주세요 흑흑 [22] 흑흑(121.183) 11.12.27 398 0
296221 금융SI 면접보고옴 ㅡ,.ㅡ [3] 흐잌ㅋ(119.65) 11.12.27 280 0
296220 형들은 나처럼 살지마 +어게인갤로그로 이동합니다. 11.12.27 83 0
296219 1인기업하면 돈좀 버냐? [2] 헐헐(58.122) 11.12.27 89 0
296218 PHP알바 전화왔는데 (좀봐줘봐 경력자들) 니 코 가 뭐갤로그로 이동합니다. 11.12.27 101 0
296215 테헤란로에 왜 IT회사가 많은겨? [1] K(125.186) 11.12.27 131 0
296213 야근도중 빡쳐서 아오 [5] 개발4년차갤로그로 이동합니다. 11.12.27 169 0
296212 우리나라IT로 부자가 못 되는건.. [4] 므해?갤로그로 이동합니다. 11.12.27 221 0
296211 불쌍한 yomiko ......... [3] (125.188) 11.12.27 136 0
296210 남자들이 키를 중요하게 생각하는 이유.jpg ㅇㅇ(121.133) 11.12.27 167 0
296209 챗방어찌만듬? [1] ㅋㅋㅋ(182.214) 11.12.27 77 0
296207 네트워크 관리사 공부하고있는데 내용이 부족해서 추가적으로 볼만한책 없나요 [5] 나는scv갤로그로 이동합니다. 11.12.27 197 0
296206 PHP / 자바 가능하신 재택 프리랜서 모십니다. [3] 유동식(119.179) 11.12.27 116 0
296205 형들 게임에서 도박하다가 천만원일엇어..... 핵같은거같은대 미치겟어 ㅠ [18] (183.100) 11.12.27 395 0
296204 프갤 횽들아 나 정말 힘들어.. [1] y녀6디리(220.118) 11.12.27 88 0
296203 이런 암호문해독은 프로그램을 이용해서 푸는건가요? [11] 도와주세요.(175.127) 11.12.27 376 0
296202 형들 나 요번에 경영정보학과 경영정보학과(121.88) 11.12.27 78 0
296201 디씨가 공격 사이트래! [1] 분당살람갤로그로 이동합니다. 11.12.27 144 0
296199 yomiko 니마 봐주쎄영 얘드라(125.188) 11.12.27 69 1
296198 프로그래밍 알바 지원해봤는데 ㅋㅋㅋ되려나? [7] 뇌지랄갤로그로 이동합니다. 11.12.27 508 0
296197 mcitp 쓸만허냐 [6] vr(211.243) 11.12.27 64 0
296195 퇴쵝!그만하고 퇴근하자 개심심(61.73) 11.12.27 54 0
296194 능력자들아 내글좀 봐줘 잘되면 피자보내줄께 레알 ㅡㅡ [35] 얘드라(125.188) 11.12.27 460 0
296192 C에서 달팽이배열 힌트점 주세영.. [8] 이힝(121.177) 11.12.27 148 0
296191 잡스 = 위대한 경영자이자 마케터 [1] ㅇㅇ(210.90) 11.12.27 95 0
296190 c언어 빈도수 다시 짜봤습니다. 도움좀 부탁드립니다. [14] 도와주세요.(175.127) 11.12.27 375 0
296189 여자친구가 33일째 생리를 안함... [25] ah...(112.223) 11.12.27 904 0
296187 퇴근 30분 전이다 소시 택시나 보자 [3] 거칠게갤로그로 이동합니다. 11.12.27 97 0
296186 진짜 맘잡고 공부할려고 모아둔 야동 다 지웠다.. [3] 므해?갤로그로 이동합니다. 11.12.27 125 0
296185 횽들은 연상이 좋아 연하가 좋아??? [10] 거칠게갤로그로 이동합니다. 11.12.27 296 0
296184 이거 만들기 쉽나 [2] 코코(118.6) 11.12.27 125 0
296183 아 ㅅㅂ 속았다...;;;; ㅅㄱㅅㄱㅅㄱ갤로그로 이동합니다. 11.12.27 75 0
296182 오늘은 시간이 유난히 안간다 뮤비나 보자 [1] 거칠게갤로그로 이동합니다. 11.12.27 77 0
296181 c언어 빈도수 관련 문제입니다.. 도와주세요! [7] 도와주세요.(175.127) 11.12.27 178 0
296180 오랜만이요 ㅋㅋ [12] 딘윈체스터.갤로그로 이동합니다. 11.12.27 203 0
296179 winapi 이 사이트 존내 좋은듯ㅎㅎ [1] 1(118.220) 11.12.27 121 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2