똥피하기 소스 질문합니다.
수예
질문 제목 : 똥피하기 소스인데 질문 드립니다.
질문 내용 : 똥피하기 소스를 구해서 연구중인데 잘모르 겠습니다. 고수님들 질문 드립니다. 각각의 함수가 무슨 역할을 하는지
주석이나 설명좀 부탁드리겠습니다. 파일 첨부 할테니 한번 봐주시고 cpp에 주석 달아 주시면 너무 감사하겠습니다.
#include windows.h
#include time.h
#include resource.h
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
int game1(HWND,UINT,WPARAM,LPARAM);
HINSTANCE hInst;
HBITMAP hBackBit;
class game {
public:
int frame;
int ddddd;
int x;
int xp;
int y;
int dd[3000];
int dx[3000];
int dy[3000];
int dz[3000];
int dead;
int left,right;
int n;
};
int ss=0;
int px,py,score;
game gameb;
HBITMAP ddf[8],logo,men[7];
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance
,LPSTR lpszCmdParam,int nCmdShow)
{
HWND hWnd;
MSG Message;
WNDCLASS WndClass;
hInst=hInstance;
WndClass.cbClsExtra=0;
WndClass.cbWndExtra=0;
WndClass.hbrBackground=NULL;
WndClass.hCursor=LoadCursor(NULL,IDC_CROSS);
WndClass.hIcon=LoadIcon(hInstance, (LPCTSTR)IDI_ICON);
WndClass.hInstance=hInstance;
WndClass.lpfnWndProc=(WNDPROC)WndProc;
WndClass.lpszClassName=똥피하기 Class;
WndClass.lpszMenuName=(LPCSTR)IDR_MENU;
WndClass.style=CS_HREDRAW | CS_VREDRAW;
RegisterClass(&WndClass);
hWnd=CreateWindow(똥피하기 Class,똥피하기,WS_BORDER|WS_VISIBLE|WS_SYSMENU|WS_MINIMIZEBOX,
300,150,306,452,
NULL,(HMENU)NULL,hInstance,NULL);
ShowWindow(hWnd,nCmdShow);
ddf[0]=LoadBitmap(hInst, MAKEINTRESOURCE(ddd));
ddf[1]=LoadBitmap(hInst, MAKEINTRESOURCE(ddd2));
ddf[2]=LoadBitmap(hInst, MAKEINTRESOURCE(ddd2));
ddf[3]=LoadBitmap(hInst, MAKEINTRESOURCE(ddd3));
ddf[4]=LoadBitmap(hInst, MAKEINTRESOURCE(ddd3));
ddf[5]=LoadBitmap(hInst, MAKEINTRESOURCE(ddd3));
ddf[6]=LoadBitmap(hInst, MAKEINTRESOURCE(ddd3));
ddf[7]=LoadBitmap(hInst, MAKEINTRESOURCE(ddd3));
logo=LoadBitmap(hInst, MAKEINTRESOURCE(start));
men[0]=LoadBitmap(hInst, MAKEINTRESOURCE(stop));
men[1]=LoadBitmap(hInst, MAKEINTRESOURCE(stop2));
men[2]=LoadBitmap(hInst, MAKEINTRESOURCE(left1));
men[3]=LoadBitmap(hInst, MAKEINTRESOURCE(left2));
men[4]=LoadBitmap(hInst, MAKEINTRESOURCE(right1));
men[5]=LoadBitmap(hInst, MAKEINTRESOURCE(right2));
men[6]=LoadBitmap(hInst, MAKEINTRESOURCE(stop3));
int h;
for(h=0;h3000;h++) {
gameb.dd[h]=0;
gameb.dx[h]=0;
gameb.dy[h]=0;
gameb.dz[h]=0;
}
gameb.ddddd=0;
gameb.x=150;
gameb.y=372;
gameb.dead=0;
gameb.frame=0;
gameb.left=0;
gameb.right=0;
gameb.xp=0;
score=0;
gameb.n=5;
srand(time(NULL));
while(GetMessage(&Message,0,0,0)) {
TranslateMessage(&Message);
DispatchMessage(&Message);
}
return Message.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd,UINT Message,WPARAM wParam,LPARAM lParam)
{
int wmId, wmEvent;
HDC hdc, MemDC, BufDC;
HBITMAP MyBitmap, OldBitmap;
BITMAP bit;
PAINTSTRUCT ps;
RECT crt;
switch(ss) {
case 1:
if(game1(hWnd,Message,wParam,lParam)==0)
return 0;
break;
}
switch(Message) {
case WM_CREATE:
SetTimer(hWnd,1,30,NULL);
break;
case WM_MOUSEMOVE:
px=LOWORD(lParam);
py=HIWORD(lParam);
break;
case WM_KEYDOWN:
if(wParam==VK_RETURN)
ss=1;
if(wParam==VK_ESCAPE)
PostQuitMessage(0);
break;
case WM_COMMAND:
wmId=LOWORD(wParam);
wmEvent=HIWORD(wParam);
switch (wmId) {
case 10:
ss=1;
SendMessage(hWnd,WM_CREATE,0,0);
break;
case IDM_EXIT:
PostQuitMessage(0);
break;
default:
return 0;
}
break;
case WM_PAINT:
hdc=BeginPaint(hWnd, &ps);
BufDC=CreateCompatibleDC(hdc);
GetClientRect(hWnd,&crt);
if (hBackBit == NULL) {
hBackBit=CreateCompatibleBitmap(hdc,crt.right,crt.bottom);
}
OldBitmap=(HBITMAP)SelectObject(BufDC,hBackBit);
FillRect(BufDC,&crt,GetSysColorBrush(COLOR_WINDOW));
SelectObject(BufDC,hBackBit);
char msg[200];
wsprintf(msg,점수:%d,score);
TextOut(BufDC,0,0,msg,strlen(msg));
MemDC=CreateCompatibleDC(BufDC);
MyBitmap=logo;
OldBitmap=(HBITMAP)SelectObject(MemDC,MyBitmap);
GetObject(MyBitmap,sizeof(BITMAP),&bit);
TransparentBlt(BufDC,60,90,bit.bmWidth,bit.bmHeight,MemDC,0,0,bit.bmWidth,bit.bmHeight,RGB(255,255,255));
SelectObject(MemDC,OldBitmap);
DeleteDC(MemDC);
BitBlt(hdc, 0,0,700,700,BufDC,0,0,SRCCOPY);
DeleteDC(BufDC);
EndPaint(hWnd, &ps);
break;
case WM_TIMER:
InvalidateRect(hWnd,NULL,TRUE);
break;
case WM_DESTROY:
KillTimer(hWnd,1);
PostQuitMessage(0);
return 0;
}
return(DefWindowProc(hWnd,Message,wParam,lParam));
}
int game1(HWND hWnd,UINT Message,WPARAM wParam,LPARAM lParam)
{
int i;
HDC hdc, MemDC, BufDC;
HBITMAP MyBitmap, OldBitmap;
BITMAP bit;
PAINTSTRUCT ps;
RECT crt;
switch(Message) {
case WM_CREATE:
return 0;
case WM_KEYDOWN:
if(wParam==VK_RETURN) {
if(gameb.dead==1) {
{
int h;
for(h=0;h3000;h++) {
gameb.dd[h]=0;
gameb.dx[h]=0;
gameb.dy[h]=0;
gameb.dz[h]=0;
}
gameb.ddddd=0;
gameb.x=150;
gameb.y=372;
gameb.dead=0;
gameb.frame=0;
gameb.left=0;
gameb.right=0;
gameb.xp=0;
score=0;
gameb.n=5;
srand(time(NULL));
}
}
}
if(wParam==VK_ESCAPE)
PostQuitMessage(0);
if(wParam==VK_LEFT)
gameb.left=1;
if(wParam==VK_RIGHT)
gameb.right=1;
return 0;
case WM_KEYUP:
if(wParam==VK_LEFT)
gameb.left=0;
if(wParam==VK_RIGHT)
gameb.right=0;
return 0;
case WM_TIMER:
if(score==100) {//난이도
gameb.n=5;
}
if(score==150) {
gameb.n=4;
}
if(score==250) {
gameb.n=3;
}
if(score==450) {
gameb.n=2;
}
if(score==10000) {
gameb.n=1;
}
if(gameb.dead==0) {
gameb.frame++;
if(gameb.left==0&&gameb.right==0) {
if(gameb.frgameb.frame==3) {
if(gameb.ddddd==1) {
gameb.ddddd=0;
} else {
gameb.ddddd=1;
}
gameb.frame=0;
}
}
if(gameb.left==1) {//인간 이동
if(gameb.frame==3) {
if(gameb.ddddd==2) {
gameb.ddddd=3;
} else {
gameb.ddddd=2;
}
gameb.frame=0;
}
if(gameb.xp0) {
gameb.xp-=1;
}
gameb.xp-=1;
}
if(gameb.right==1) {
if(gameb.frame==3) {
if(gameb.ddddd==4) {
gameb.ddddd=5;
} else {
gameb.ddddd=4;
}
gameb.frame=0;
}
if(gameb.xp0) {
gameb.xp+=1;
}
gameb.xp+=1;
}
if(gameb.xp=-11) {
gameb.xp+=1;
}
if(gameb.xp=11) {
gameb.xp-=1;
}
if(gameb.left==0&&gameb.right==0) {
if(gameb.xp0) {
gameb.xp-=1;
}
if(gameb.xp0) {
gameb.xp+=1;
}
}
if(gameb.x+gameb.xp3) {
gameb.x=3;
gameb.xp=0;
}
if(gameb.x+gameb.xp280) {
gameb.x=280;
gameb.xp=0;
}
gameb.x+=gameb.xp;
}
if(rand()%gameb.n+1==1) {//똥 생성
for(i=0;gameb.dd[i]!=0;i++){}
gameb.dd[i]=1;
gameb.dx[i]=rand()%280;
gameb.dy[i]=-21;
gameb.dz[i]=0;
}
for(i=0;i3000;i++) {
if(gameb.dd[i]==1) {
gameb.dy[i]+=7;
if(gameb.dy[i]380) {
gameb.dy[i]-=7;
gameb.dz[i]++;
if(gameb.dz[i]==7) {
gameb.dd[i]=0;
gameb.dz[i]=0;
if(gameb.dead==0) {
score++;
}
}
}
}
}
for(i=0;i3000;i++) {
if(gameb.dd[i]==1) {
if(gameb.dz[i]==0||gameb.dz[i]==1) {
if(gameb.dy[i]357) {
if(gameb.dx[i]=gameb.x-14&&gameb.dx[i]=gameb.x+14) {
gameb.dead=1;
gameb.ddddd=6;
}
}
}
}
}
InvalidateRect(hWnd,NULL,TRUE);
return 0;
case WM_PAINT:
hdc=BeginPaint(hWnd, &ps);
BufDC=CreateCompatibleDC(hdc);
GetClientRect(hWnd,&crt);
if (hBackBit == NULL) {
hBackBit=CreateCompatibleBitmap(hdc,crt.right,crt.bottom);
}
OldBitmap=(HBITMAP)SelectObject(BufDC,hBackBit);
FillRect(BufDC,&crt,GetSysColorBrush(COLOR_WINDOW));
SelectObject(BufDC,hBackBit);
char msg[200];
wsprintf(msg,점수:%d,score);
TextOut(BufDC,0,0,msg,strlen(msg));
if(gameb.dead==1) {
TextOut(BufDC,30,70,다시하기:엔터,13);
}
for(i=0;i3000;i++) {
if(gameb.dz[i]!=0) {
MemDC=CreateCompatibleDC(BufDC);
MyBitmap=ddf[gameb.dz[i]];
OldBitmap=(HBITMAP)SelectObject(MemDC,MyBitmap);
GetObject(MyBitmap,sizeof(BITMAP),&bit);
TransparentBlt(BufDC,gameb.dx[i],gameb.dy[i],bit.bmWidth,bit.bmHeight,MemDC,0,0,bit.bmWidth,bit.bmHeight,RGB(255,255,255));
DeleteObject(OldBitmap);
SelectObject(MemDC,OldBitmap);
DeleteDC(MemDC);
continue;
}
if(gameb.dd[i]==1) {
MemDC=CreateCompatibleDC(BufDC);
MyBitmap=ddf[0];
OldBitmap=(HBITMAP)SelectObject(MemDC,MyBitmap);
GetObject(MyBitmap,sizeof(BITMAP),&bit);
TransparentBlt(BufDC,gameb.dx[i],gameb.dy[i],bit.bmWidth,bit.bmHeight,MemDC,0,0,bit.bmWidth,bit.bmHeight,RGB(255,255,255));
DeleteObject(OldBitmap);
SelectObject(MemDC,OldBitmap);
DeleteDC(MemDC);
}
}
//인간 출력
MemDC=CreateCompatibleDC(BufDC);
MyBitmap=men[gameb.ddddd];
OldBitmap=(HBITMAP)SelectObject(MemDC,MyBitmap);
GetObject(MyBitmap,sizeof(BITMAP),&bit);
TransparentBlt(BufDC,gameb.x,gameb.y,bit.bmWidth,bit.bmHeight,MemDC,0,0,bit.bmWidth,bit.bmHeight,RGB(255,255,255));
DeleteObject(OldBitmap);
SelectObject(MemDC,OldBitmap);
DeleteDC(MemDC);
BitBlt(hdc, 0,0,700,700,BufDC,0,0,SRCCOPY);
DeleteDC(BufDC);
EndPaint(hWnd, &ps);
return 0;
}
return 1;
}
| 번호 | 제 목 | 글쓴이 | 날짜 |
|---|---|---|---|
| 2752135 | [질문]칼라피커 콘트롤에 특정칼라를 선택된상태로만들려면 어떻게하면되나여? | 널위해 | 2026-10-21 |
| 2752110 | $box.find("img").width()에서 이미지에.. | 해뜰참 | 2026-10-21 |
| 2752024 | 소숫점 뺄셈 !! ㅠㅜ | 초롬 | 2026-10-20 |
| 2751970 | 자바 게임 만들려는데 부탁드립니다 (1) | 라온제나 | 2026-10-19 |
| 2751908 | 자바스크립트 처리속도를 체크할 수 있는 방법 있나요? (1) | 테이 | 2026-10-19 |
| 2751822 | 그누보드 아이프레임으로 구현했는데 제목 클릭해서 들어가면 푸터가 동동...떠다녀요 | 내꺼하자 | 2026-10-18 |
| 2751790 | 자바 그래픽 관련을 공부하고 싶은데요.. 어디 좋은 사이트나 책 없을까요?? (1) | 큰재 | 2026-10-18 |
| 2751733 | CTF가머죠? (5) | 두동 | 2026-10-17 |
| 2751709 | 배열부분 궁금한 부분이있습니다. | 딸기우유 | 2026-10-17 |
| 2751677 | 포인터 책을 보다가,,, (2) | 동백 | 2026-10-17 |
| 2751648 | 익스플로 버전에 따라서 생기는 공백.. (1) | 모아 | 2026-10-17 |
| 2751623 | DEL 태그의에서 선굵기 및 컬러지정이 가능한가 해서요~ (4) | 비치나 | 2026-10-16 |
| 2751573 | 테마 업로드 에러.. (1) | 꽃 | 2026-10-16 |
| 2751548 | 수학? 물리?? (3) | 찬늘 | 2026-10-16 |
| 2751461 | 상단네비 fixed ie6 핵 해결방안이 있을까요? | 맑다 | 2026-10-15 |
| 2751436 | 레이아웃을 잡고 코딩을 하는데 드림위버에서의 결과와 IE에서 결과가 다르게 나오네요. (3) | 키클 | 2026-10-15 |
| 2751403 | 형들좀도와주세요string compression (1) | 알렉산더 | 2026-10-14 |
| 2751349 | 링크 다운로드하기 | 팬지 | 2026-10-14 |
| 2751267 | 플래시8 사용에서 플레이어 만들었는데요 (1) | 블1랙캣 | 2026-10-13 |
| 2751182 | 회원가입 | 파랑새 | 2026-10-12 |
