모바일 오유 바로가기
http://m.todayhumor.co.kr
분류 게시판
베스트
  • 베스트오브베스트
  • 베스트
  • 오늘의베스트
  • 유머
  • 유머자료
  • 유머글
  • 이야기
  • 자유
  • 고민
  • 연애
  • 결혼생활
  • 좋은글
  • 자랑
  • 공포
  • 멘붕
  • 사이다
  • 군대
  • 밀리터리
  • 미스터리
  • 술한잔
  • 오늘있잖아요
  • 투표인증
  • 새해
  • 이슈
  • 시사
  • 시사아카이브
  • 사회면
  • 사건사고
  • 생활
  • 패션
  • 패션착샷
  • 아동패션착샷
  • 뷰티
  • 인테리어
  • DIY
  • 요리
  • 커피&차
  • 육아
  • 법률
  • 동물
  • 지식
  • 취업정보
  • 식물
  • 다이어트
  • 의료
  • 영어
  • 맛집
  • 추천사이트
  • 해외직구
  • 취미
  • 사진
  • 사진강좌
  • 카메라
  • 만화
  • 애니메이션
  • 포니
  • 자전거
  • 자동차
  • 여행
  • 바이크
  • 민물낚시
  • 바다낚시
  • 장난감
  • 그림판
  • 학술
  • 경제
  • 역사
  • 예술
  • 과학
  • 철학
  • 심리학
  • 방송연예
  • 연예
  • 음악
  • 음악찾기
  • 악기
  • 음향기기
  • 영화
  • 다큐멘터리
  • 국내드라마
  • 해외드라마
  • 예능
  • 팟케스트
  • 방송프로그램
  • 무한도전
  • 더지니어스
  • 개그콘서트
  • 런닝맨
  • 나가수
  • 디지털
  • 컴퓨터
  • 프로그래머
  • IT
  • 안티바이러스
  • 애플
  • 안드로이드
  • 스마트폰
  • 윈도우폰
  • 심비안
  • 스포츠
  • 스포츠
  • 축구
  • 야구
  • 농구
  • 바둑
  • 야구팀
  • 삼성
  • 두산
  • NC
  • 넥센
  • 한화
  • SK
  • 기아
  • 롯데
  • LG
  • KT
  • 메이저리그
  • 일본프로야구리그
  • 게임1
  • 플래시게임
  • 게임토론방
  • 엑스박스
  • 플레이스테이션
  • 닌텐도
  • 모바일게임
  • 게임2
  • 던전앤파이터
  • 마비노기
  • 마비노기영웅전
  • 하스스톤
  • 히어로즈오브더스톰
  • gta5
  • 디아블로
  • 디아블로2
  • 피파온라인2
  • 피파온라인3
  • 워크래프트
  • 월드오브워크래프트
  • 밀리언아서
  • 월드오브탱크
  • 블레이드앤소울
  • 검은사막
  • 스타크래프트
  • 스타크래프트2
  • 베틀필드3
  • 마인크래프트
  • 데이즈
  • 문명
  • 서든어택
  • 테라
  • 아이온
  • 심시티5
  • 프리스타일풋볼
  • 스페셜포스
  • 사이퍼즈
  • 도타2
  • 메이플스토리1
  • 메이플스토리2
  • 오버워치
  • 오버워치그룹모집
  • 포켓몬고
  • 파이널판타지14
  • 배틀그라운드
  • 기타
  • 종교
  • 단어장
  • 자료창고
  • 운영
  • 공지사항
  • 오유운영
  • 게시판신청
  • 보류
  • 임시게시판
  • 메르스
  • 세월호
  • 원전사고
  • 2016리오올림픽
  • 2018평창올림픽
  • 코로나19
  • 2020도쿄올림픽
  • 게시판찾기
  • 오유인페이지
    개인차단 상태
    토왕님의
    개인페이지입니다
    가입 : 15-09-16
    방문 : 36회
    닉네임변경 이력
    회원차단
    회원차단해제
    게시물ID : programmer_17535
    작성자 : 토왕
    추천 : 0
    조회수 : 3647
    IP : 122.44.***.185
    댓글 : 4개
    등록시간 : 2016/06/08 16:45:46
    http://todayhumor.com/?programmer_17535 모바일
    c++갤러그 소스분석중인데..
    옵션
    • 본인삭제금지
    #include <iostream> // 80,23
    #include <conio.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <time.h>
    #include <windows.h>
    #include <cstdio>
    #include "Player.h"
    #include "Enemy.h"
    #include "Bullet.h"
    #include "Game.h"

    #define SCREENX 80 // 화면 넓이
    #define SCREENY 24 // 화면 높이
    #define delay(n) Sleep(n) // n/1000초만큼 시간 지연
    #define ENEMYNUM 35 // 적기, 적총알 수
    using namespace std;

    void main()
    {
    HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE); // 핸들값 얻어오기
    Game *game;
    Player *player;
    CBullet *pbullet;
    CBullet *pDelBullet;
    Enemy *enemy[ENEMYNUM];
    CBullet *ebullet[ENEMYNUM];
    clock_t startTime, endTime;
    int count; // 프레임 카운트
    int i;
    int selectMenu;
    startTime = clock();
    // 메뉴 선택 변수
    bool cur_key = false; // 총알 발사 체크 변수
    bool old_key = false;
    bool check = 1; // 플레이어 총알 삭제 체크 변수
    CBullet *bullet_head = NULL; // 플레이어 총알 linked list 헤트
    CBullet *bullet_tail = NULL; // 플레이어 총알 linked list 테일

    for(;;)
    {
    SetConsoleTextAttribute(hStdOut, FOREGROUND_INTENSITY);
    cout<<endl<<endl<<endl<<endl<<endl;
    cout<<"\t\t//////////////////////////"<<endl;
    cout<<"\t\t//      난 이 도        //"<<endl;
    cout<<"\t\t//////////////////////////"<<endl;
    cout<<"\t\t//                      //"<<endl;
    cout<<"\t\t//      1. Easy         //"<<endl;
    cout<<"\t\t//                      //"<<endl;
    cout<<"\t\t//      2. Nomal        //"<<endl;
    cout<<"\t\t//                      //"<<endl;
    cout<<"\t\t//      3. Hard         //"<<endl;
    cout<<"\t\t//                      //"<<endl;
    cout<<"\t\t//      4. Exit         //"<<endl;
    cout<<"\t\t//////////////////////////"<<endl;
    cout<<"\t\t선택 하세요 : ";
    cin>>selectMenu;

    //////////////////////////////////////////////////////////////////////////////////
    //
    // 게임 초기화
    game = new Game(selectMenu);
    player = new Player(1,"<<A>>", SCREENX/2, SCREENY);
    game->SetCursorType(NOCURSOR); // 화면 에서 커서 안보이게함
    game->ScreenClear(); // 화면 지우기
    count = 0;
    for(i =0; i< ENEMYNUM; i++)
    {
    enemy[i] =NULL; // 적 객체 초기화
    ebullet[i] = NULL; // 적 총알 객체 초기화
    }

    if(selectMenu == 4) // 메뉴중 4번 이 선택되었을시 
    exit(0); // 종료


    //////////////////////////////////////////////////////////////////////////////////
    // 게임루프 시작
    for(;;)
    {
    //////////////////////////////////////////////////////////////////////////////////
    // 키 입력에 따른 처리
    game->KeyPress(); // 키입력
    if(!(player->GetExist())) // 플레이어가 죽지 않았을경우
    {
    if( (game->GetLeftMove() == 1) && (player->GetX() > 0))
    player->MoveXY(-2,0); // 왼쪽 화살표를 눌렀을 경우 왼쪽으로 이동
    else if( (game->GetRightMove() == 1) && (player->GetX() < 74))
    player->MoveXY(2,0); // 오른쪽 화살표를 눌렀을 경우 오른쪽으로 이동
    if( (game->GetUpMove() == 1) && (player->GetY() > 0))
    player->MoveXY(0,-1); // 윗쪽 화살표를 눌렀을 경우 위로 이동
    else if( (game->GetDownMove() == 1) && (player->GetY() < 23))
    player->MoveXY(0,1); // 아랫쪽 화살표를 눌렀을 경우 아래로 이동

    if(game->GetFlag() == 0) // esc를 눌렀을경우 게임루프 종료
    break;

    pbullet = new CBullet();
    if(game->GetShotBullet() == 1) // space를 눌렀을경우 총알 발사
    {
    cur_key = true;
    // cur_key가 true이고 old_key가 false일때만 총알 발사
    // cur_key는 space가 눌린경우 true를 대입 받는다
    // space가 눌리지 않은 경우는 false값을 대입 받는다
    // old_key는 매 루프 마다 cur_key의 값을 대입 받는다
    // space가 계속 눌리고 있다면 cur_key와 old_key는 모두 true가 되어
    // 총알이 발사되지 않는다
    // space를 누르고 있지 않다가 누른경우
    // cur_key는 true가 되고 old_key는 false가 되어 총알이 발사 된다
    if( cur_key && !old_key )
    {
    pbullet->CreateBullet("A", player->GetX()+2, player->GetY());
    // 총알을 생성한다
    game->AddNode(&pbullet, &bullet_head, &bullet_tail);
    // 생성된 총알을 linked list에 추가한다
    }
    }
    else
    cur_key = false;
    old_key = cur_key;
    }
    //////////////////////////////////////////////////////////////////////////////////
    // 적기 생성

    if(count % 30 == 20) // 적기 모션 0,1
    for(i = 0; i<game->GetEnemyNum(); i++)
    {
    if(enemy[i] == NULL) // 적 배열이 초기화 되어있을 경우 
    {
    enemy[i] = new Enemy(-(i*10), i *2, 0); 
    break; // 0번 모션으로 움직이는 적 생성
    }
    if(enemy[game->GetEnemyNum() + i] == NULL)
    {
    enemy[game->GetEnemyNum() + i] = new Enemy(80 + (10 * i), 1 + i * 2, 1);
    break; // 1번 모션으로 움직이는 적 생성
    }
    }
    if(count % 30 == 10) //적기 모션 2,3
    for(i = 0; i<game->GetEnemyNum(); i++)
    {
    if(enemy[game->GetEnemyNum() * 2 + i] == NULL)
    {
    enemy[(game->GetEnemyNum() * 2) + i] = new Enemy(30,0, 2);
    break; // 2번 모션으로 움직이는 적 생성
    }
    if(enemy[game->GetEnemyNum() * 3 + i] == NULL)
    {
    enemy[(game->GetEnemyNum() * 3) + i] = new Enemy(50, 0, 3);
    break; // 3번 모션으로 움직이는 적 생성
    }
    }
    if(count % 30 == 0) //적기 모션 4,5
    for(i = 0; i<game->GetEnemyNum(); i++)
    {
    if(enemy[game->GetEnemyNum() * 4 + i] == NULL)
    {
    enemy[(game->GetEnemyNum() * 4) + i] = new Enemy(75, (i * 2) + 1, 4);
    break; // 4번 모션으로 움직이는 적 생성
    }
    if(enemy[game->GetEnemyNum() *5 + i] == NULL)
    {
    enemy[(game->GetEnemyNum() * 5) + i] = new Enemy(0, (i * 2), 5);
    break; // 5번 모션으로 움직이는 적 생성
    }
    }
    if(count % 50 == 10) //적기 모션 6
    for(i = 0; i<game->GetEnemyNum(); i++)
    {
    if(enemy[game->GetEnemyNum() *6 + i] == NULL)
    {
    enemy[(game->GetEnemyNum() * 6) + i] = new Enemy(20 + 20*i, 0, 6);
    break; // 6번 모션으로 움직이는 적 생성
    }
    }
    if (count % 50 == 10) //적기 모션 7
    for (i = 0; i<game->GetEnemyNum(); i++)
    {
    if (enemy[game->GetEnemyNum() * 7+ i] == NULL)
    {
    enemy[(game->GetEnemyNum() * 7) + i] = new Enemy(25+ 25* i, 0, 7);
    break; // 7번 모션으로 움직이는 적 생성
    }
    }
    //////////////////////////////////////////////////////////////////////////////////
    // 적 총알 생성

    int shootCount = 0; // 루프 10번당 발사될 적 총알 수
    static int shoot = 0; // 발사될 총알 번호 저장
    int rnd; // 렌덤값 저장
    switch(selectMenu)
    {
    case 1 :
    shootCount = 1;
    break;
    case 2 :
    shootCount = 3;
    break;
    case 3 :
    shootCount = 5;
    break;
    }
    while( shootCount && (count % 10 == 4))
    {
    rnd = rand() % ENEMYNUM; // 0보다 크고 적 숫자보다 작은 임의의정수
    if(enemy[rnd] != NULL && ebullet[shoot] == NULL)
    { // 임의의 정수의 적이 있고 shoot카운터에 해당하는
    // 적 총알이 생성되지 않았을경우
    ebullet[shoot] = new CBullet(); // 총알 할당
    ebullet[shoot]->CreateBullet("v", enemy[rnd]->GetX()+2, enemy[rnd]->GetY());
    //선택된 적의위치에 총알 생성
    shoot++;
    shootCount--;
    }
    if(shoot == ENEMYNUM) // 총알 카운터가 적수를 넘어갈때
    shoot = 0; // 0 대입 
    }
    //////////////////////////////////////////////////////////////////////////////////
    // 화면 출력
    for(i = 0; i < ENEMYNUM; i++)
    {
    if(enemy[i] != NULL)
    {
    enemy[i]->Move();
    if(enemy[i]->GetY() >= 0 && enemy[i]->GetY()+1 <= SCREENY+1 && enemy[i]->GetX() >= 0 && enemy[i]->GetX()+5 <= SCREENX)
    game->ScreenPrint(hStdOut, PINK,enemy[i]->GetX(), enemy[i]->GetY(), enemy[i]->GetType());
    else
    {
    delete enemy[i];
    enemy[i] =NULL;
    }
    }
    if(ebullet[i] != NULL)
    {
    ebullet[i]->MoveBullet(0,1);
    if(ebullet[i]->GetY() >= 0 && ebullet[i]->GetY()+1 <= SCREENY+1 && ebullet[i]->GetX() >= 0 && ebullet[i]->GetX()+5 <= SCREENX)
    game->ScreenPrint(hStdOut, WHITE,ebullet[i]->GetX(), ebullet[i]->GetY(), ebullet[i]->GetType());
    else
    {
    delete ebullet[i];
    ebullet[i] =NULL;
    }
    }
    }
    pbullet = bullet_head;
    while(pbullet)
    {
    game->ScreenPrint(hStdOut, WHITE,pbullet->GetX(), pbullet->GetY(), pbullet->GetType());
    pbullet->MoveBullet(0, -1);
    // 플레이어 총알, 적
    for(i = 0; i < ENEMYNUM; i++)
    {
    if(enemy[i] != NULL && game->Crash(pbullet,enemy[i]))
    {
    player->AddScore(100);
    pDelBullet = pbullet;
    check = 0;
    delete enemy[i];
    enemy[i] = NULL;
    break;
    }
    }
    if(pbullet->CheckRange() == 0)
    {
    pDelBullet = pbullet;
    check = 0;
    }
    pbullet = pbullet->pNext;
    if(check == 0)
    {
    game->DelNode(&pDelBullet, &bullet_head, &bullet_tail);
    check = 1;
    }
    }
    if(player->GetExist())
    game->ScreenPrint(hStdOut, RED,player->GetX(), player->GetY(), game->Explosion());
    else
    game->ScreenPrint(hStdOut, SKYBLUE,player->GetX(), player->GetY(), player->GetType());
    game->ScreenPrint(hStdOut, GREEN,0,0," 점수 : ");
    game->ScreenPrint(hStdOut, GREEN,9,0,player->GetScore());
    game->ScreenPrint(hStdOut, GREEN,12,0," Life : ");
    game->ScreenPrint(hStdOut, GREEN,21,0,player->GetLife());
    game->ScreenPrint(hStdOut, GREEN, 0, 1, " 경과시간 : ");
    endTime = clock();
    game->ScreenPrint(hStdOut, GREEN, 11, 1, ((double)(endTime - startTime)) / CLOCKS_PER_SEC);
    //////////////////////////////////////////////////////////////////////////////////
    // 충돌 처리

    for(i = 0; i < ENEMYNUM; i++)
    {
    // 플레이어, 적총알
    if( ebullet[i] != NULL && game->Crash(player, ebullet[i]) && player->GetExist() == 0)
    {
    player->SetExist(1);
    player->AddLife(-1);
    delete ebullet[i];
    ebullet[i] = NULL;
    break;
    }
    // 플레이어, 적 
    if(enemy[i] != NULL && game->Crash(player, enemy[i])&& player->GetExist() == 0)
    {
    player->SetExist(1);
    player->AddLife(-1);
    delete enemy[i];
    enemy[i] = NULL;
    break;
    }
    }

    delay(30); //시간 지연
    count++;
    game->ScreenClear(); // 화면 지우기
    if(game->GetExpCount() == 35)
    if(player->GetLife() <= 0)
    break;
    else
    {
    player->SetExist(0);
    player->SetPos(SCREENX/2, SCREENY);
    game->setExpCount(0);
    }
    }
    game->ScreenPrint(hStdOut, RED,SCREENX/2-5, SCREENY/2, "Game Over!");
    getch();
    game->ScreenClear();
    game->SetCursorType(NORMALCURSOR);

    for(i = 0; i < ENEMYNUM; i++)
    {
    // 플레이어, 적총알
    if( ebullet[i] != NULL)
    {
    delete ebullet[i];
    ebullet[i] = NULL;
    }
    }
    pbullet = bullet_head;
    while(pbullet)
    {
    // 플레이어 총알, 적
    pDelBullet = pbullet;
    pbullet = pbullet->pNext;
    game->DelNode(&pDelBullet, &bullet_head, &bullet_tail);
    }
    delete game;
    delete player;
    }


    메인 cpp소스인데 count가  프레임 카운트라는데  왜 만든건지 모르겠습니다 특히  적기 를 만들 때 if 조건문에 왜들어가는지 아무리 봐도 이해가 안가네요 ;;  그리고  모션 7은  왜  난이도 1에서는 나오는데 2~3에서는 안나올까요 ? ㅠㅠ

    이 게시물을 추천한 분들의 목록입니다.
    푸르딩딩:추천수 3이상 댓글은 배경색이 바뀝니다.
    (단,비공감수가 추천수의 1/3 초과시 해당없음)

    죄송합니다. 댓글 작성은 회원만 가능합니다.

    번호 제 목 이름 날짜 조회 추천
    37
    집 매매로 구매 후 하자 발생시 금액 청구는 어디로 하나요? [4] 토왕 21/05/31 11:44 256 0
    36
    jsp 네이버 로그인 연동하고 있는데 토큰 관련 질문 있습니다 ㅠㅠㅠ [1] 토왕 20/08/06 13:44 83 0
    35
    네이버 아이디 로그인 연동 질문 ... ㅠㅠ 본인삭제금지 토왕 20/07/15 12:26 86 0
    34
    컴퓨터가 안켜지는데 도와주세요 ㅠㅠㅠ [9] 본인삭제금지 토왕 20/06/28 14:38 228 1
    33
    java swing socket 코딩 관련해서 질문있습닏 ㅏㅠㅠ [3] 본인삭제금지 토왕 19/11/25 09:11 43 0
    32
    주운핸드폰 [2] 토왕 18/11/30 20:36 36 0
    31
    안드로이드 스튜디오 .... 본인삭제금지 토왕 17/06/22 01:16 36 0
    30
    c언어 성적처리프로그램 소스 좀 봐주실수 있나요 ??ㅠㅠ [6] 본인삭제금지 토왕 17/06/07 03:55 123 0
    29
    유니티 애니메이션에서 본인삭제금지 토왕 16/12/10 01:37 42 0
    28
    유니티 OnTriggerEnter... [2] 본인삭제금지 토왕 16/12/09 20:03 24 0
    27
    유니티 스크립트 좀 봐주실수 있나요 ? 본인삭제금지 토왕 16/12/09 16:51 20 0
    26
    유니티 질문있습니다 ㅠ [2] 본인삭제금지 토왕 16/12/09 15:40 25 0
    25
    유니티 마으스 오른쪽 버튼 클릭시 .. [2] 본인삭제금지 토왕 16/12/08 21:11 14 0
    24
    갑자기 노트북 부팅이 안됩니다.. [2] 본인삭제금지 토왕 16/12/07 21:29 30 0
    23
    유니티 애니메이터 관련 질문있습니다 ㅠㅠ [2] 본인삭제금지 토왕 16/12/06 03:33 30 0
    22
    유니티 애니메이션과 애니메이터에 관해서 질문있습니다 본인삭제금지 토왕 16/12/06 00:55 28 0
    21
    워드 문서용으로 노트북좀 사려고하는데요~ [3] 본인삭제금지 토왕 16/11/18 22:58 46 0
    20
    형님들 ㅜㅜ새 노트북 사려는데 좀조언좀부탁합니다.. [4] 본인삭제금지 토왕 16/11/18 21:30 53 0
    19
    톰캣 실행 관련 질문있습니다 .. [2] 본인삭제금지 토왕 16/11/11 18:05 36 0
    18
    editplus에서 원격서버 목록이 없는데요 .. [1] 본인삭제금지 토왕 16/10/12 20:41 20 0
    17
    저.. 파워빌더에서 .. 본인삭제금지 토왕 16/06/18 10:02 40 0
    16
    파워빌더 혹시 하시는분 있으신가요 ?ㅠㅠ 본인삭제금지 토왕 16/06/17 16:19 33 0
    15
    파워빌더 우편번호를 만들려고하는데 ... [4] 본인삭제금지 토왕 16/06/14 19:07 31 0
    14
    c# 로또 번호 생성기 소스인데..궁금증이있습니다 [2] 본인삭제금지 토왕 16/06/09 21:21 22 0
    c++갤러그 소스분석중인데.. [4] 본인삭제금지 토왕 16/06/08 16:45 61 0
    12
    c#에서 윈도우폼에 마우스다운 이벤트 관련 질문좀 드려도 되나요 ? [6] 본인삭제금지 토왕 16/06/06 11:31 36 0
    11
    c# 크로스 쓰래드 때문에 invoke를 썻는데 .. [6] 본인삭제금지 토왕 16/06/03 22:13 24 0
    10
    c# 윈도우폼으로 만들고있는데 오류가 ;;ㅠㅠ [4] 본인삭제금지 토왕 16/06/01 20:14 30 0
    9
    c#으로 프로그램만들때 도움될만한 사이트 있나요 ?ㅠㅠ [3] 본인삭제금지 토왕 16/05/23 22:12 33 1
    8
    usb파일을 꺼낼려고하니 이렇게 뜨는데 ;; [2] 본인삭제금지 토왕 16/05/23 21:26 44 0
    [1] [2]
    단축키 운영진에게 바란다(삭제요청/제안) 운영게 게시판신청 자료창고 보류 개인정보취급방침 청소년보호정책 모바일홈