메뉴 건너뛰기

자유롭게 이야기를 적는 공간

int x=320,flag=0,flag2=0,flag3=0,missleX,missleY; //움직임 관련 변수
int bird[10]={0,},birdX[10]={0,},birdY[10]={0,},birdS[10]={0,},doa[10]={0,};

void animate_self() // 애니메이션 함수
{
        if(flag >= 0 && flag <= 10){jdd->DrawPicture(backbuffer,"s01",x,312,NULL);flag+=2;}
                else if(flag >= 10 && flag <= 20){jdd->DrawPicture(backbuffer,"s02",x,312,NULL);flag+=2;}
                else if(flag >= 20 && flag <= 30){jdd->DrawPicture(backbuffer,"s01",x,312,NULL);flag+=2;}
                else if(flag >= 30 && flag <= 40){jdd->DrawPicture(backbuffer,"s03",x,312,NULL);flag+=2;}
                else if(flag >= 40){jdd->DrawPicture(backbuffer,"s03",x,312,NULL);flag = 0;}
}

void missle()
{
        if(flag2 == 1){
                jdd->DrawPicture(backbuffer,"bull",missleX,missleY,NULL);
                missleX-=5;
                missleY-=15;
                if(missleY <= 10)flag2 = 0;
        }
}
void bird_rnd()
{
        jds->Play("woo");
        for(int i=0;i<10;i++){
                birdX[i] = 580;
                for(;;){
                        birdY[i] = rand()%280;
                        if(birdY[i] > 20)break;
                }
                for(;;){
                        birdS[i] = rand()%15;
                        if(birdS[i] > 5)break;
                }
                doa[i] = 1;
                jdd->DrawPicture(backbuffer,"bird",birdX[i],birdY[i],NULL);
        }
}
void bird_move()
{
        flag3=0;
        for(int i=0;i<10;i++){
                if(doa[i]==1){
                        if(birdX[i]>20)birdX[i]-=birdS[i];
                        else if(birdX[i]<=20)birdX[i] = 580;
                        jdd->DrawPicture(backbuffer,"bird",birdX[i],birdY[i],NULL);
                        flag3 = 1;
                }
        }
}
void chkcrash()
{
        for(int i=0;i<10;i++){
                if(birdX[i]<=missleX && birdX[i]+42>=missleX){
                        if(birdY[i]<=missleY && birdY[i]+22>=missleY && doa[i] == 1){
                                doa[i]=0;
                                jds->Play("ark");
                        }
                }
        }
}
int main()
{
        jdd=CreateDirectDraw();
        jds=CreateDirectSound();
        jre=CreateDXResourceManager(jdd,jds);

        HINSTANCE hInstance=(HINSTANCE)0x00400000;

        WNDCLASS wc={0};
        wc.hIcon=LoadIcon(hInstance,"PSYCCER.ico");
        wc.hCursor=LoadCursor(hInstance,IDC_ARROW);
        wc.lpfnWndProc=WndProc;
        wc.hInstance=hInstance;
        wc.style=CS_HREDRAW|CS_VREDRAW;
        wc.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
        wc.lpszClassName="Demo";
        RegisterClass(&wc);
        
        HWND hwnd=CreateWindow("Demo","새 사냥",WS_POPUP|WS_VISIBLE,0,0,640,480,NULL,NULL,hInstance,NULL);
    ShowCursor( FALSE );

        jdd->Initialize(NULL,hwnd,640,480,16,true);
        jds->Initialize(0,hwnd);
        
        //초기화
        backbuffer=jdd->GetBackBuffer();
        JFont font20=jdd->CreateFont("굴림체",20,true,false,false,false,false);
        srand( (unsigned)time( NULL ) );
        
        jdd->SetFrameRate(100,true);
        jdd->SetVerticalSync(false);

        //재료 불러오기
        JPictureInfo pi;
        pi.SetColorKey(JColor(0,0,255));
        jdd->LoadPicture("ground","ground.bmp",&pi); //땅 높이 52
        jdd->LoadPicture("s01","char.bmp",&pi); // 총구 x, y-5
        jdd->LoadPicture("s02","char2.bmp",&pi);
        jdd->LoadPicture("s03","char3.bmp",&pi);
        jdd->LoadPicture("bg","sky.jpg");
        jdd->LoadPicture("bull","bullet.bmp",&pi);
        jdd->LoadPicture("bird","bird.bmp",&pi);
        jds->LoadSound("music","bgsound.mid");
        jds->LoadSound("shot","shot.wav");
        jds->LoadSound("ark","uk.wav");
        jds->LoadSound("woo","revolt.wav");

        //새게임
        jds->Play("music");
        for(;;)
        {
                if(_GetKeyState(VK_LEFT))x-=5;
                        else if(_GetKeyState(VK_RIGHT))x+=5;
                        else if(_GetKeyState(VK_ESCAPE))break;
                
                if(_GetKeyPush(VK_SPACE) && flag2 == 0){
                        jds->Play("shot");
                        missleX = x;
                        missleY = 308;
                        flag2 = 1;
                }
        
                jdd->DrawPicture(backbuffer,"bg",0,0,NULL);
                jdd->DrawPicture(backbuffer,"ground",0,340,NULL);

                missle(); //총알 처리
                animate_self(); //슬라임 애니메이션        
                if(flag3 == 0)bird_rnd();
                bird_move();
                chkcrash();
                jdd->Render();
        }

        return 0;
}

----------------------------------------------------
거의 감각적으로 프로그램을 짜다보니 효율은 별로임.
그래도 알아보긴 쉬울 겁니다.

지금 생각해보면 2차원 배열로 하면 배열 3개 선언할 것 없이
일사천리로 할 수 있었을텐데, 왜 그랬지.

원하시면 각 변수나 배열이 무슨 역할인지 설명해드리죠.
조회 수 :
554
등록일 :
2004.06.20
21:23:54 (*.108.)
엮인글 :
게시글 주소 :
https://hondoom.com/zbxe/index.php?mid=free&document_srl=74363

우성호

2008.03.19
09:34:35
(*.117.113.197)
main.cpp 전체 공개하랬지 일부 공개하랬소? 맨 아랫 부분하고 윗 부분 어디갔소? 내 게임 오류의 근원을 찾으려면 main.cpp 전체가 있어야 하거늘!!!

우성호

2008.03.19
09:34:35
(*.117.113.197)
새 사냥 폴더 안에 필요 파일 싸그리 넣고 main.cpp에 이 내용 넣으면 에러 93개 납니다.

철없는 아이

2008.03.19
09:34:35
(*.81.198.146)
뭐예요?

행방불명

2008.03.19
09:34:35
(*.213.29.126)
그러게 말입니다.
List of Articles
번호 제목 글쓴이 조회 수sort 추천 수 날짜 최근 수정일
공지 (대피소) 혼돈과 어둠의 디스코드 노루발 121   2023-09-05 2023-09-05 16:05
공지 글 작성을 위해서는 회원 가입이 필요합니다. 노루발 4686   2016-02-22 2021-07-06 09:43
486 파견 갔다 왔습니다. [2] 장펭돌 1022   2010-09-20 2010-09-22 08:42
파견 이라기보다 복귀후 당직근무 서고 다음날 동원훈련 2박 3일로 갔다온... 훈련에 가깝지만 그래도 두돈반 (K-511) 차량 하나 가지고 파견 (308경비연대) 다녀왔습니다. 동원훈련 이다보니 예비군 들이 많았는데... 그렇게 많은 개구리 마크를 보기는 처음!...  
485 들렀습니다! ㅋ [4] 장펭돌 1022   2010-11-04 2010-11-06 02:46
흐음 휴가 복귀한지 얼마 안되서 그런지 아직도 집에 가고싶은 마음... 싱숭생숭 ㅠㅠ 그래도 다음달엔 병장! 이므로.. 집에 갈날이 얼마 안남은것 같이 보이는 착시현상을 일으킬 수 있습니다 하하하 하지만 사실은 멀었다는 것 ㅠㅠㅠ  
484 호롤로롤로.. [3] 대슬 1023   2008-05-19 2008-05-20 06:21
걍 자기 전에 심심해서 방송에 관한 잡담 및 기타 등등의 잡담을 하겠음. 일단 8시에 어떻게 맞춰오셨다는 얘기인지는 모르겠지만 8시에 맞춰오셨다는 똥똥배님께 사과의 말씀을 전해드리고요. 사실 제가 요즘 몸이 안 좋습니다. 순전히 놀겠다는 의지만으로 ...  
483 데몬즈 소울 드디어 엔딩 봤습니다. [1] 똥똥배 1024   2010-02-17 2010-02-20 03:16
플레이타임 49시간. 끝없이 강해지고 싶은 욕심도 있지만, 엔딩을 보고 나니 뭔가 허무해 지더라고요. 아무튼 이제 손 놨던 만화를 다시 그리기... 전에 파이널판타지13 엔딩 봐야 겠습니다.  
482 할 게임이없다 [6] 외계생물체 1026   2010-01-09 2010-01-10 05:15
보더랜드,프로토타입등 존나 해보고싶은 게임들이 많은데 사양이 딸린다 그래서 님들 램 512 MB Cpu 2.20 Ghz로 할수있는 존나재밋는게임을 말해주세여  
481 신만세 3기 op 번역해봤습니다 [5] file 서기 1026   2013-07-31 2013-08-03 23:04
 
480 만화를 그립니다. [1] 똥똥배 1027   2010-07-21 2010-07-21 09:20
늑대가 우는 밤 3화, 1페이지 그렸습니다. 그리고 다시 마작을 합니다. 이렇게 만화는 정성들여서 완성이 되어 갑니다.  
479 안녕? 휴가 나왔어염 [2] 장펭돌 1027   2010-10-24 2010-10-26 09:26
지난 한달간 부대 사지방이 통제되는 바람에... 혼둠을 못들어 오다가 오늘 휴가나와서 이렇게 글을 남깁니다! 물론 그저께 부터 사지방 통제도 풀렸구요! 우하하하 무튼 휴가는 좋은것이여  
478 턴테이블은 곧 나의 손아귀에!!! [7] 쿠로쇼우 1028   2008-05-16 2008-05-17 07:24
내일쯤 중고 제품보러 갈마동까지 ㄱㄱㄱ 대략 시가 120정도 되는 제품을 중고로 60에 사기로 했음 우왕 ㅋ 굳 ㅋ 마음에 들면 이번주 일요일에 살 예정 아싸 후덜덜덜 나의 손이 떨려오고 있어 조만간 나타날 나의!!!! 빚때문에 농담이고 빠른시일내에 혼둠에...  
477 아옹~ 빡쳥 ㅋ [6] 장펭돌 1028   2010-04-25 2010-05-09 00:25
진급시험 (사격) 실패 ㅠㅠ 일병 진급때는 체력측정이 나의 발목을 잡더니 이번에 상병진급 때는 체력측정을 잘 통과해서 됐구나! 했는데... 슈ㅣ바 ㅠㅠㅠㅠㅠ 실거리 사격이 아니라 축소사격이라 왠지 난 더 안된다 ㅠㅠ 클리크 수정도 해야 하는데... 내 총...  
476 엄마.. [68] 검룡 1029   2004-05-08 2008-03-19 09:33
어버이날에 이런 거나 올리다니.. 이봐. 표정에 압권을 넣어주시게.  
475 일병 장펭돌 [3] 장펭돌 1030   2009-12-07 2009-12-12 04:36
물 일병에서 빠져나와서 이미 일병 2개월~ 흠냐리... 역시 이등병 탈출은 기분 좋지만 막상 일병이 되고나서 바뀌는건 없다는게 시궁창 역시 상병을 향해 달려간다 아자자!! 하지만 아직 2010년 5월은 멀었도다  
474 크학~~살려줘 [4] 정동명 1032   2010-05-06 2010-05-09 00:27
바퀴벌레가 일단 2마리 발견했는데 못 잡고 놓쳤음. 장난 아니게 빠르네요. 이 좁은 크헉 한마리 또 지나갔는데 금방 그거인 것 같은데 못 잡았음. 아 도대체 이 놈들을 어떻게 해야하는거야. 도저히 이상태로는 잠을 못 자겠네요. 밖에서 노숙도 몇번해봤는데...  
473 오늘 하루종일 신만이 아는 세계를 봤습니다. [2] 똥똥배 1033   2011-03-12 2011-03-12 23:05
이름만 알던 작품이었는데, 형님이 산다고 해서 9권 전부 사서 보다보니 이것은 명작이다! 재미있는 설정과 빠져드는 전개, 그리고 갈 수록 드러나는 치밀한 설정들! 무엇보다 주인공의 삶의 자세에서 감동 받았습니다. 크윽, 나 역시 한 세계의 신을 자청하는...  
472 노루발님? [3] 흑곰 1034   2013-06-06 2013-06-06 07:11
어째서 카톡에서 요새 아무 말이 없으신지요  
471 저곧휴가나가요 [4] 장펭돌 1035   2010-08-28 2010-08-29 04:58
휴가 나감 9월 4일~ 9일 까지 5박 6일간의 휴가 후하하하  
470 뮤턴초밥 고소크리? [9] 백곰 1036   2010-06-01 2010-06-13 00:22
으음 우연히 알게된 사건인데 gall.dcinside.com/list.php?id=fantasy&no=1369503 진짜 뮤턴초밥이라면 좀 실망이네요. 설사 그렇다면 이번 사건으로 좀더 성숙해지길  
469 용사 레이스 이동헌으로 클리어 [4] 안씨 1037   2009-07-26 2009-07-26 09:26
마완도 사건 때 추억의 고문 시스템이 들어 있어서 다운로드 후 이동헌으로 클리어! 역시 악행은 재미있군요...(위험하다!)  
468 아 집에 가고 싶다... [2] 장펭돌 1039   2010-08-06 2010-08-06 07:14
입대날부터 하던 생각... 다음 휴가는 9월말 쯤에나 갈듯... 그것도 3박 4일 짜리 휴가 ㅠㅠㅠ 으아아앙!!!  
467 속도계가 고장났습니다. [2] 똥똥배 1040   2011-04-18 2019-03-19 23:10
어제 마트갔다가 집으로 돌아오던 길에 속도계를 보니, 오오오! 시속 150km! 내가 드디어 신세계에 들어섰구나! 이제 트루 드 프랑스로 갈 일만 남았군! ...은 헛소리이고, 속도계가 미쳐버린 것이었습니다. 그래서 리셋하고 셋팅했더니 이제 계속 시속 0km이...