메뉴 건너뛰기

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

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
공지 (대피소) 혼돈과 어둠의 디스코드 노루발 143   2023-09-05 2023-09-05 16:05
공지 글 작성을 위해서는 회원 가입이 필요합니다. 노루발 4701   2016-02-22 2021-07-06 09:43
14748 학교에서 또 졸았엉 [1] 이소룡선생 240   2004-06-18 2008-03-19 09:34
학교에서 요즘 매일 조넹 매일 아 시험공부 해야되는데 졸음아 물러가라~~~  
14747 크헉...방법당했다. [3] 매직둘리 324   2004-06-18 2008-03-19 09:34
디지캐럿 노래중 Welcome이라는 곡이 있는데 USA버전. 그러니까 영어 버전을 들어버렸다 크핫... 도저히 이 충격은 어떻게 설명을...(머엉...) 슬레이어즈 Somewhere 영어버전같이 원판과 비슷한게 아니라 이건 도저히...우와아아아아앙!  
14746 심심해서. [8] file 검룡 281   2004-06-18 2008-03-19 09:34
 
14745 철없는 아이 색히님 [4] 매직둘리 247   2004-06-18 2008-03-19 09:34
컴퓨터를 자주 하는게 아니라 제대로 활동하는게 문제가 아니라 좀 제대로 된 활동을 부탁하라는 겁니다 쓸데없는 글을 자꾸 올리지 말고 한꺼번에 올리던가 사람 스트레스받게시리.  
14744 가곡 마왕 [3] 검룡 252   2004-06-18 2008-03-19 09:34
마왕 바람부는 늦은 밤 누가 말을 달리는가? 그것은 아버지와 그 아이로다. 그는 소년을 품에 꼭 껴안고, 든든히 붙들고, 포근히 감싼다. - 아들아, 네 얼굴이 불안해 보이는구나? - 아버지, 저 마왕이 보이지 않으세요? 왕관에다 긴 옷을 늘인 저 마왕이? - ...  
14743 가는세월 [3] 과학자 221   2004-06-18 2008-03-19 09:34
어찌 잡으리오.  
14742 이런.. [2] 사과 279   2004-06-18 2008-03-19 09:34
델타님 홈피가 트래픽초과를 해버렸다며 잠자리 한마리가 말해주었지요.  
14741 이열치열! [4] 행방불명 281   2004-06-18 2008-03-19 09:34
삼계탕 사먹을 돈은 없고, 해서 구한게 바로 떡볶이. 너무 감미로운 양념에 혀가 매료됩니다. 역시 무더위엔 건더기수프를 넣은 떡볶이가 최고.  
14740 아, 쇼킹하다. 야후 검색... [3] 혼돈 331   2004-06-18 2008-03-19 09:34
박동흥이란 이름이 그렇게 없나... 박동흥으로 검색하면 11개의 결과 중 9개가 나에 관련되 것이다. 정말 황당하기 짝이 없다...  
14739 그림은 언제나 진화하고 있다!!!!(어쩌라고....) [7] Kadalin 399   2004-06-19 2008-03-19 09:34
~(~_~)~ 후르바~ 후르바~  
14738 아아, 하루 빨리 게임을 완성하고 싶거늘 [3] 大슬라임 309   2004-06-19 2008-03-19 09:34
오늘도 숙제가 나를 압박한다. 다시 한창 수행평가철이라.. 점수를 걱정하는 건 아니지만 어쨌든 하기는 귀찮구나. "大슬라임의 즐거운 새 사냥"은 이제 새의 생성과 움직임, 그리고 죽음만 처리하면 완성 됨. 점수 표시는 하려고 했으나 문자열 출력을 몰라...  
14737 슬라임 자네 [4] file 검룡 292   2004-06-19 2008-03-19 09:34
 
14736 대한민국. [9] 검룡 332   2004-06-19 2008-03-19 09:34
<대한민국의 특징> 1. 세계 경제를 쥐락펴락하는 일본을 “쪽바리”라 하며 우습게 보는 유일한 종족 2. 세계 유일의 분단국가 3. 세계에서 보기드문 단일민족 4. 암 사망율, 음주 소비량, 양주 수입율, 교통사고, 청소년 흡연율, 국가 부채,각종 악덕 타이틀에...  
14735 으아아악-! [2] 과학자 235   2004-06-19 2008-03-19 09:34
절권도 수련중에 발목부상.  
14734 야채죽 게임 가지고 계신 분 [4] 혼돈 402   2004-06-19 2008-03-19 09:34
잡통으로 올려주시길... 생각해보니 이제 용량문제도 없으니 게임&애니에 넣어도 될 듯...  
14733 아무리 지도를 들여다 봐도 [5] 검룡 390   2004-06-19 2008-03-19 09:34
남극 초원섬에... 내가 원하는 들판은 있을 데가 없어 보인다.[특히 고놈의 산이 한몫] 없는걸까..? 넓은 들판. 덧. 7세기 지도. 들여다 봤더니 왜 이름없는 산맥께서 외로워지신 겁니까?  
14732 잡통에 미니게임 <大슬라임 씨의 즐거운 새 학살>을 올렸습니다. [2] 大슬라임 250   2004-06-20 2008-03-19 09:34
해볼려면 하시고, 말려면 말고.. 그냥 하염없이 쏴죽이는 할 일 없는 게임이지만 다른 컴퓨터에서는 어느 정도 속도인지 알아보기 위해서라도 다른 분들께 공개.  
14731 C언어 말입니다만,,[혼돈님,大슬라임님] [3] 초싸릿골인 285   2004-06-20 2008-03-19 09:34
C 언어 지금부터 배우려고 합니다, 무엇이 필요로 합니까? 프로그램 이름,,좀 가르쳐주세요, 다른 준비물들도, 지금부터 열심히해도, 커서 프로그래머 될 정도 될까요? 간단한 미니게임 만드는게 얼마정도 걸릴까요?  
14730 슬라임 판타지 리메이크 [2] file 초싸릿골인 231   2004-06-20 2008-03-19 09:34
 
14729 혼돈님 가르쳐 달라는것이 아니라, [5] 초싸릿골인 280   2004-06-20 2008-03-19 09:34
흐음,,강의는 ,,다음카페 같은데서 찾아보면 돼구요, 모르는건 가끔 물어볼께요,, 준비해야 할것좀,,가르쳐주세요