메뉴 건너뛰기

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

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개 선언할 것 없이
일사천리로 할 수 있었을텐데, 왜 그랬지.

원하시면 각 변수나 배열이 무슨 역할인지 설명해드리죠.
조회 수 :
596
등록일 :
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 날짜 최근 수정일
공지 (대피소) 혼돈과 어둠의 디스코드 노루발 5628   2023-09-05 2023-09-05 16:05
공지 글 작성을 위해서는 회원 가입이 필요합니다. 노루발 8028   2016-02-22 2021-07-06 09:43
2090 지구가 각졌나 봅니다. [6] file 똥똥배 1404   2010-06-07 2010-06-07 17:56
 
2089 Sunglasses At Night lc 141   2004-12-14 2008-03-19 09:37
http://www.maxmp3.co.kr/link_miniplayer/gateway.php?str=23223747200605111D79435E1E725F1A23282B7F250B4B014B2C12064C250A" 바이스시티에도 나오는 음악인데 제목그대로 분위기 좋은노래  
2088 제 msn메일주소아시는분~ [4] 카와이 172   2004-12-14 2008-03-19 09:37
msn로그인할려니까 메일주소를 모르겠내요  
2087 군대 잘 다녀오세요 [3] lc 101   2004-12-13 2008-03-19 09:37
2년후에 다시 만나요  
2086 건물신청 번호에 81~89번이 빠진 이유는? [1] TATATA 148   2004-12-12 2008-03-19 09:37
무엇 입네까  
2085 =플스판으로 새로나온 gta 산 언드레스 동영상들= [1] lc 304   2004-12-12 2008-03-19 09:37
클릭 하면 볼수 있고 시간있을때 천천히 보는게 좋고 보면서 감탄이 절로 나옵니다 Big Smoke<br /> Ryder<br /> <br /> [Sweet 미션] <br /> Tagging Up Turf<br /> Cleaning The Hood<br /> Drive-Thru<br /> Nines And AK's<br /> Drive-By<br /> Sweet's ...  
2084 이거이거,,,, [1] 이재철 128   2004-12-12 2008-03-19 09:37
저거저거  
2083 제 건물좀 없애주십쇼 [4] 이상무 147   2004-12-11 2015-10-09 13:11
제발 닭맑은아이주는바에 차라리 없애는게  
2082 이제 누군가가 [1] lc 102   2004-12-11 2008-03-19 09:37
도배를 할것이다  
2081 자랑스런 내~ [4] 원죄 140   2004-12-11 2008-03-19 09:37
들어보셈  
2080 으음 사칭 사건 이걸로 마무리합시다 [8] file 콘크리트공작 209   2004-12-11 2008-03-19 09:37
 
2079 악마의 교주 (이하 정보판매원)이 1인 2역이라는 증거 [8] file MC DeltaMK 280   2004-12-11 2008-03-19 09:37
 
2078 아리포님 축하해요 [3] lc 114   2004-12-11 2008-03-19 09:37
저 2등 님 인기상  
2077 안녕하세요^^ [2] 하얀도마뱀 178   2004-12-10 2008-03-19 09:37
미스터 고문왕을 보고 놀러왔습니다^^; 개인적으로 프리저를 좋아해서 반갑더군요^^ 저번에도 한번 왔었는데 홈페이지가 업데이트 된것같습니다 >_< 심플하게 바뀌었군요! 그런데 저번의 홈페이지때는 배경음악이 흘렀었는데 노래가 좋더군요^^ 어떤 노래인가...  
2076 오랜만에 들렀다가 [1] 카다린 142   2004-12-10 2008-03-19 09:37
왠 괴수(?)의 얼굴에 0.5초 경직. 누구얼굴인지 판독하는데 0.5초. 결국 혼돈의 얼굴임을 1초만에 알아냈다. (어쩌라고.)  
2075 이게 [2] file 워터보이즈 104   2004-12-10 2008-03-19 09:37
 
2074 마비노기 건물에 오시면 하는 바람입니다 워터보이즈 122   2004-12-10 2008-03-19 09:37
이유는.. 너무 썰렁해 추워 얼어 뒈지겠다!!  
2073 죵니 오랜만에왔음 [3] 게깡 198   2004-12-10 2008-03-19 09:37
elc병신 e를 빼고 델타 자자와 너그 미친3형제새끼 잘지내냐 씨발 잘 못지내라 그게 나의 바램이다 제발좀 아그치닥치고뇌사나 당해라 아무튼 난 절때 여기안온다  
2072 [건물]건물신청!! [1] file [정보 판매사]™ 178   2004-12-10 2008-03-19 09:37
 
2071 건물 이주 신청 lc 115   2004-12-10 2008-03-19 09:37
59번 자리로 부탁합니다