디시인사이드 갤러리

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

갤러리 본문 영역

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

뵤뵤구(221.163) 2011.12.19 04:12:02
조회 72 추천 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/03 - -
AD 저녁 뭐먹지? 오늘의 메뉴 추천! 운영자 25/10/31 - -
295240 횽들 C++ 하나만 물어볼께 ㅠㅠ [1] ㅇㅇ(124.50) 11.12.21 74 0
295239 난 회사 면접관이 뽑을 넘 없다는 말 정말 웃긴거 같애 [3] ...,(220.88) 11.12.21 221 0
295237 인서울 4년제 컴공졸 -> 6개월 아이티 학원 수료 학생 [3] 1010(58.145) 11.12.21 339 0
295236 형들아 티스토리 블로그 초대권좀 한장만 선물해주면 안되?ㅠㅠㅠ [5] 시그란♬갤로그로 이동합니다. 11.12.21 63 0
295235 형들 암호화 프로그램 만들었는데 앞으로 대화 이걸로할께요.swf [20] Stan(220.244) 11.12.20 228 0
295234 요기 재밌음 [1] 정수정•‿•갤로그로 이동합니다. 11.12.20 122 0
295233 횽들 여쭈어볼께 있는데 말입니다.... 부산시민(110.14) 11.12.20 60 0
295232 ★★★ 알고리즘 과제해주면 2만원 입금해줄께 ★★★ [13] 나를가져요(220.70) 11.12.20 213 0
295231 c++ 에서도 region 쓸수있구나..ㅋ [2] ㅋㄱ(183.96) 11.12.20 92 0
295229 모바일 면접후기 + 조언구걸 [3] 흐잌ㅋ(119.65) 11.12.20 327 0
295228 형들!! 데이터베이스 설계시 질문요!! 조공짤 투척!! [2] 콕찍(166.104) 11.12.20 152 0
295227 (수정)횽들아 이거대체 왜이런거야???ㅠㅠㅠ [3] 3(14.33) 11.12.20 105 0
295225 계절 책값,,,,-_- [3] ㅋㄱ(183.96) 11.12.20 100 0
295224 아 높고 높은 지식을 가지고 계신 컴돌이 분들이여 (은꼴) [4] 제발(211.186) 11.12.20 220 0
295222 성대아싸횽 소환 [13] 캐성대닭(115.92) 11.12.20 155 0
295221 써든어택 여고딩 랩 좀 쩌네 ㅋ [1] 캐서든닭(115.92) 11.12.20 108 0
295220 형들!! DB 설계에서 하나만 여쭤볼께 + (은꼴) [3] 콕찍(166.104) 11.12.20 189 0
295219 이거 건즈2 물리엔진인데 이런 수준 물리엔진 구현하기 힘듬? [1] 1(121.146) 11.12.20 130 0
295218 간단한 프로그램 만들려는데;;; SoLeaf(59.15) 11.12.20 71 0
295217 취미로 할수있는 프로그래밍 알려줄께 클릭해 취미생활(116.125) 11.12.20 90 0
295216 알고리즘 과제 해줌 2만원 입금해드림! [8] 나를가져요(220.70) 11.12.20 186 0
295215 아 내 취미가 프로그래밍 이었으면 좋겠다 [1] 1(121.146) 11.12.20 76 0
295214 그나저나 Mr. Doob 횽 데모중 GLSL Sandbox는 저도 만들려 [1] [성대아싸]갤로그로 이동합니다. 11.12.20 86 0
295211 분노의 파워코딩 2일차 , 작업내용 [1] [성대아싸]갤로그로 이동합니다. 11.12.20 164 0
295210 형님들 불쌍한 중생 한마리만 구제해주세요 ㅠㅠ [1] 간절소년(203.227) 11.12.20 114 0
295209 횽들 웹프로그래밍은 원래 좀 무시당하는 경향이라도 있어? [17] ㄷㄱ(118.37) 11.12.20 379 0
295208 아....슈ㅣ발...ㅋㅋㅋㅋㅋㅋㅋㅋㅋ 제기랄 [2] 캐시풋닭(115.92) 11.12.20 74 0
295207 프로그래머들아 야상좀 그만 입어 [1] 123(125.7) 11.12.20 120 0
295205 자바 게이들 보라 [11] 줫밥(122.49) 11.12.20 217 0
295204 캐꼬랑 쿄스케 소환 [1] 프갤했(115.90) 11.12.20 60 0
295203 게임 프로그래머가 되려면 뭐부터 시작해야 하나요..??;; [5] Otiel(121.157) 11.12.20 204 0
295202 근대 신입 초봉 4년제 나오면 왜 더 쳐주는거냐 [11] 줫밥(122.49) 11.12.20 273 0
295201 파견나오셨다가 복귀하신 분에게 대화걸었는데... [2] 9m(203.236) 11.12.20 101 0
295198 드림위버, php 질문요~ [15] ㅁㄴㅇㄹ(213.55) 11.12.20 182 0
295197 횽들 저물어볼께잇는데요 ㅜㅜ [7] 잉여잉간이양(116.40) 11.12.20 102 0
295196 기사 자격증 졸업 후에도 딸 수 있는거?? [5] 에이시아(203.90) 11.12.20 120 0
295195 야호 ! 서류 통과 됌 [2] 좋은아버지갤로그로 이동합니다. 11.12.20 174 0
295194 성님들 ㅠㅠ 정말 기초 하나만 질문할게요. [4] 가을월식(203.253) 11.12.20 70 0
295193 반지갑 살꺼임.. 어떤게 젤 캐간지임? [9] 이문동쮸쮸바갤로그로 이동합니다. 11.12.20 149 0
295192 soap통신 관련 질문합니다. [1] 버릇없다갤로그로 이동합니다. 11.12.20 140 0
295190 안드로이드하까 ios하까.. [4] 차도컴공남갤로그로 이동합니다. 11.12.20 128 0
295189 데이터베이스랑 서버 보안 배우려면 [4] ㅇㅇ(210.90) 11.12.20 113 0
295188 우리 회사 직원이 나 포함 2명이야.. 내년 목표는 [1] iljeomobolt갤로그로 이동합니다. 11.12.20 151 0
295187 운동이나 할까나 [4] 이문동쮸쮸바갤로그로 이동합니다. 11.12.20 123 0
295186 인사하는것도 일인듯 9m(203.236) 11.12.20 56 0
295185 mybatis 거참 희안하다..커넥션 타임아웃...현상 겪으신분? [5] 캐자바닭(115.92) 11.12.20 147 0
295184 애용하는 키보드 [4] ㄱㄷㅈ(210.178) 11.12.20 142 0
295183 듀얼코어 노트북 + ssd [3] 123(125.7) 11.12.20 136 0
295182 이거 정확한 이유가 뭔지 아는횽 [11] McHello갤로그로 이동합니다. 11.12.20 199 0
295180 신입때 면접을 본적이있었는데.. [3] .3(36.38) 11.12.20 201 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2