메뉴 건너뛰기

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

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
공지 (대피소) 혼돈과 어둠의 디스코드 노루발 116   2023-09-05 2023-09-05 16:05
공지 글 작성을 위해서는 회원 가입이 필요합니다. 노루발 4679   2016-02-22 2021-07-06 09:43
485 똥똥배님한테 글남겨 달라고 했는데 [2] 아리포 74   2018-11-15 2018-11-16 11:04
ㅠㅠㅠ 거절당했음  
484 이곳이 자유개시판 같군요 [7] file 룰루 66   2018-11-15 2018-11-16 18:35
 
483 옛날 알피지툴로 만든 게임인데 [8] file 룰루 75   2018-11-17 2018-11-23 18:32
 
482 좀 많이 임시방편이긴 한데 file 흑곰 41   2018-11-20 2018-11-20 13:46
 
481 모바일 첨부 테스트 흑곰 27   2018-11-20 2018-11-20 13:58
모바일 첨부 테스트입니다.  
480 드디어 모바일 첨부가 되는군요 [3] 노루발 43   2018-11-20 2018-11-21 21:04
오홍홍 조아용 ㅎㅎ  
479 혼돈과 어둠의 땅 연말모임 [9] 장펭돌 104   2018-11-21 2018-11-29 22:11
새로운 참여자는 언제나 환영이야! 일시 : 2018년 12월 15일 (토) 장소 : 천안 목적 : 노는데 이유가 어딨어 그냥 노는거지 현재 참여자 (예정) : 폴랑, 쿠로쇼우, 펭돌, 대슬, 흑곰, 백곰, 노루발, 라컨 혹시나 해서 또 기록 남겨둡니다. 언제든지 댓글 달아...  
478 15,000 [5] 장펭돌 55   2018-11-24 2018-11-29 05:30
그럼 20,000  
477 다들 게시판? 하나씩 가지고 계시네요. [6] file 룰루 63   2018-11-29 2018-11-30 18:47
 
476 한가해졌으면 [4] 흑곰 47   2018-11-30 2018-12-03 20:23
지난달에 시간 많았는데 이런저런 개발한답시고 허송세월하고... 이번달에 시간없으니까 지난달에 혼둠 리뉴얼 할걸 이러고 있네요. 요새 너무 피곤하고 업무 스트레스도 너무 심해서 휴식이 간절합니다. 12월 중순엔 한가해졌으면.  
475 11월의 마지막 [5] file 룰루 76   2018-11-30 2018-12-14 01:15
 
474 12월도 만만치 않을듯 합니다 [2] 흑곰 49   2018-12-10 2018-12-11 01:09
12월은 한가하게 보내고 싶었지만 (12월엔 조금 한가해지지 않을까 싶었지만) 역시 만만치 않을듯 합니다. 음... 그렇습니다.  
473 12월이 되었으니 [1] 흑곰 34   2018-12-12 2018-12-13 18:24
12월이 되었으니 원래 생각대로 취미 개발 프로세스를 가동해볼까 합니다. 회사는 여전히 소환사의 협곡입니다만 11월에 공부하던 자격증 시험이 끝났으니 짬을 내보려 합니다. 첫번째 프로젝트는 당연히(?) 혼둠 관련이 될 것 같네요.  
472 와 밖에 눈내림 [6] file 룰루 50   2018-12-13 2018-12-15 22:04
 
471 혼둠 단체티 시안들 [6] file 흑곰 177   2018-12-14 2018-12-16 20:39
 
470 감기에 걸렸어요. [4] 외계생물체 43   2018-12-16 2018-12-17 23:21
두통은 거의 가셨는데 목이 아직 아픕니다. 여러분도 감기 조심하세요 ㅎㅎ  
469 정신없는 주말이 지나고... [2] 흑곰 29   2018-12-17 2018-12-17 21:08
정신없는 주말이 지나고... 월요일 아침이 밝았습니다.  
468 뻘글 많이 써주세요 [1] 흑곰 28   2018-12-17 2018-12-17 18:19
뻘글 많이 써주세요 달리 할일도 없지 않습니까?!  
467 글바위 주인 룰루입니다. [8] 룰루 57   2018-12-17 2018-12-18 23:08
뻘글엔 룰루 사진 업로드가 아까우니 글만 남깁니다. 댓글 10개 미만으로 달릴시 글바위 폭파시킴  
466 혼돈과 어둠의 땅 새 메뉴 공개 [4] 흑곰 47   2018-12-17 2018-12-18 20:05
혼돈과 어둠의 땅 새 메뉴 공개. 새 메뉴래봤자 게시판이지만... 아카이브 동굴. 쯤이 어떨까 합니다. 혼둠의 과거 자료(스크린샷, 그림, 만화, 게임 등)을 공유하기 위한 공간. 개인적으로 소장(?) 중이신 옛날 자료들을 심심할 때 업로드해주시면 되겠습니다...