수다닷컴

  • 해외여행
    • 괌
    • 태국
    • 유럽
    • 일본
    • 필리핀
    • 미국
    • 중국
    • 기타여행
    • 싱가폴
  • 건강
    • 다이어트
    • 당뇨
    • 헬스
    • 건강음식
    • 건강기타
  • 컴퓨터
    • 프로그램 개발일반
    • C언어
    • 비주얼베이직
  • 결혼생활
    • 출산/육아
    • 결혼준비
    • 엄마이야기방
  • 일상생활
    • 면접
    • 취업
    • 진로선택
  • 교육
    • 교육일반
    • 아이교육
    • 토익
    • 해외연수
    • 영어
  • 취미생활
    • 음악
    • 자전거
    • 수영
    • 바이크
    • 축구
  • 기타
    • 강아지
    • 제주도여행
    • 국내여행
    • 기타일상
    • 애플
    • 휴대폰관련
  • 프로그램 개발일반
  • C언어
  • 비주얼베이직

똥피하기 소스 질문합니다.

수예

2025.08.15


질문 제목 : 똥피하기 소스인데 질문 드립니다.

질문 내용 : 똥피하기 소스를 구해서 연구중인데 잘모르 겠습니다. 고수님들 질문 드립니다. 각각의 함수가 무슨 역할을 하는지
주석이나 설명좀 부탁드리겠습니다. 파일 첨부 할테니 한번 봐주시고 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;
}

신청하기





COMMENT

댓글을 입력해주세요. 비속어와 욕설은 삼가해주세요.

번호 제 목 글쓴이 날짜
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
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

수다닷컴 | 여러분과 함께하는 수다토크 커뮤니티 수다닷컴에 오신것을 환영합니다.
사업자등록번호 : 117-07-92748 상호 : 진달래여행사 대표자 : 명현재 서울시 강서구 방화동 890번지 푸르지오 107동 306호
copyright 2011 게시글 삭제 및 기타 문의 : clairacademy@naver.com