메뉴 건너뛰기

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

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
공지 글 작성을 위해서는 회원 가입이 필요합니다. 노루발 4687   2016-02-22 2021-07-06 09:43
2046 으아악! 죄송합니다. 사인팽&사람님... [3] 혼돈 99   2007-01-20 2008-03-21 15:43
심판을 하다가 실수로 두 분을 지워버렸음. 다시 가입해 주세요. 사과의 뜻으로 광석 5개 얹어 드리겠습니다. 아무튼 회원수는 42명으로 쓸모없는 사람들이 빠지고 확 줄었음.  
2045 쌀을 얻기 위해 글쓰는 것은 좋지만 [6] 니나노 99   2007-01-19 2008-03-21 15:43
도배는 좀 심한것 아닌가 싶네요. 조치가 필요할듯. 어쨋거나 미알 구상중  
2044 고고한눈님 슈퍼타이 99   2007-01-17 2008-03-21 15:43
정말 죄송하게됬습니다. 죄송해요. 돌아오세요. ㅠㅠ 제실수임.  
2043 쿠르꽈이의 비밀 [1] 아리포 99   2007-01-17 2008-03-21 15:43
아 안 알려 줄래 비밀은 나 혼자 알고 있어야지  
2042 슈퍼타이님의 도배실력은 정말! [2] 니나노 99   2007-01-06 2008-03-21 15:43
끝내줍니다 네 감칠맛나네요 그런 기념으로 우리마을은 대설주의보  
2041 심문 라컨 99   2007-01-06 2008-03-21 15:43
사실 저 경찰인데 심심해서 아무가게나 쳐들아가서 죄없는시민한테 생쇼한거임 ㅋㅋ  
2040 아니 나여 [1] 잠자는백곰 99   2007-01-01 2008-03-21 15:43
끼히히히힛  
2039 중천보고 옴~ [3] Eisenhower 99   2006-12-23 2008-03-21 15:43
얘들이랑 아침부터 만나서, 8:30분것을 8:28분에 아슬아슬하게 표끊음. 평가는 very 나쁘던데, 저랑 친구들은 very 재밌었음;; 김태희는 이뻣고, cg는 좋았고, 스토리는 .. 음 .. 좀 많이 엉성;;, 액션은 최고. 스토리랑 연기력 최고인 배우들 쓰면 대박났었을...  
2038 내일 미알농장도 세우고 작업하겠음 혼돈 99   2006-12-16 2008-03-21 15:42
미알 농장은 처음부터 만들려니 힘이 들어 과거의 미알농장 그대로 붙여 버리겠음. 그 상태에서 수정, 추가, 삭제하는 방식으로... 귀찮도다! 무엇보다 집에 오자마자 감기 걸려서 컨디션 최악. Visual Studio 2005에 적응 시간도 필요하니 개발은 또다시 뒷전...  
2037 드디어 Visual Studio 2005가 왔다! [3] 혼돈 99   2006-12-16 2008-03-21 15:42
인생놀이를 고치려고 소스를 변화시켜서(2003->2005) 고치려고 하는데... 뭐냣! 이건! 2005에서 문법이 약간 틀려지는 바람에 이곳 저곳 손 보고 있음. 이거... 더 에러가 많아지는 것 아냐? 아무튼 개발 들어가려면 아직 먼 것 같군요. 슈팅 똥똥배, 과...  
2036 게임 아이디어 kuro쇼우 99   2006-12-05 2008-03-21 07:07
비트매니아에서 위에서 내려오는 막대기를 자동차로 바꾸는것 계속 누르는것=기차 or 버스 잘못 누르면 벌금차감  
2035 크리스마스 때, [1] 외계생물체 99   2006-12-02 2008-03-21 07:07
꼭 PS2와 Smack Down Vs RAW 2007을 get할꺼.. [ 근데 스맥vs로 정발됐나..]  
2034 근데 [1] kuro쇼우 99   2006-11-10 2008-03-21 07:07
지도의 글바위의 링크를 자유탑으로 옮길수는 업는것인가.... 한달후면 다 바뀌지만....  
2033 혼둠땅에 [2] 슈퍼타이 99   2006-10-29 2008-03-21 07:06
진정한 혼돈과 어둠의 시기가 와야지만이 진정한 황금기를 맞이할수 있을것임. 그 시기를 못버틴다면 망했지만 이미 지나간 황금기도 불완전한 황금기  
2032 물어볼게 있는데 [1] 으업 99   2006-08-17 2008-03-21 07:06
자료실 왜 서버를 찾을수 없으삼? 공사하삼?  
2031 어디선가 본적이 있는것같은 동화... [3] KIRA 99   2006-08-06 2008-03-21 07:06
제팟트 할아버지는 인형을 만드는 사람이였어요 할아버지는 손자가 너무너무 갖고싶었답니다 그러던어느날 할아버지가 요정님께 빌면서 만든 피노키오가 갑자기 움직이고!! . . . . . . . . . . . . . . . . . . 있을리가 없잖아 결국 할아버지는 평생 혼자 썩...  
2030 하우징 [2] file ㅂㄱㄴ 99   2006-08-01 2008-03-21 07:06
 
2029 얼마전부터 kuro쇼우 99   2006-07-29 2008-03-21 07:06
독서실 에서 1시까지 공부하고 있다... 방학 안할때보다 공부를 더 열심히 하는 듯....  
2028 심각해yo [1] kuro쇼우 99   2006-07-27 2008-03-21 07:06
요즘 학원땜에 방학이 방학이 아니야.. 그리고 듀얼탑까지 사라졌다.... 이제 나도 소설을 써볼까....... 시간이 난다면..ㅠㅠ  
2027 배척적인데 [2] KIRA 99   2006-07-25 2008-03-21 07:06
ㅇㅅㅇ