C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[64331] 빌더를 한번도 써보지못했어요..
박태호 [sleh] 1231 읽음    2011-05-11 01:09
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<windows.h>

#define SCREEN_X 12
#define SCREEN_Y 28
#define MAX_EN 3
#define MAX_SPEED 100
#define MIN_SPEED 2000

char arr[SCREEN_X][SCREEN_Y],
        en_xy[2][MAX_EN],
     frame, life, player_st;
    
int i, h, score, speed;
char player_x, player_y;

void clear_arr(){
    for(i=0; i<SCREEN_Y; i++)
    {
        for(h=0; h<SCREEN_X; h++)
        {
            arr[h][i]='"';
        }
    }
}

void reset()
{   
    for(i = 0; i < MAX_EN; ++i){
        en_xy[0][i] = 100;
    }
    clear_arr();
    player_x=SCREEN_X /2;
    player_y=SCREEN_Y-8;
    arr[player_x][player_y]='A';
    life = 5;
    score = 0;
    frame = 0;
    player_st = 0;
    speed = MIN_SPEED;
}


void key()
{
    switch(getch()){
        case 'K' :
            if(player_x != 0) player_x-=3;
        break;
        case 'M' :
            if(player_x !=9) player_x+=3;
        break;
        case 'r' :
            if(life == 0) reset();
        break;
   }
}

void drowscreen()
{
    if(life == 0 && player_st >0){
        arr[player_x][player_y]= (i%2 == player_st%2)?' ' : 'X';
        arr[player_x+1][player_y]= (i%2 == player_st%2)?'X' : 'N';
        arr[player_x][player_y+1]= (i%2 == player_st%2)?'N' : 'X';
        arr[player_x+1][player_y+1]=(i%2 == player_st%2)?' ' : 'M';
        arr[player_x+2][player_y+1]=(i%2 == player_st%2)?'N' : 'X';
        arr[player_x][player_y+2]=(i%2 == player_st%2)?'X' : ' ';
        arr[player_x+1][player_y+2]=(i%2 == player_st%2)?'N' : 'X';
        arr[player_x][player_y+3]=(i%2 == player_st%2)?'X' : 'M';
        arr[player_x+1][player_y+3]=(i%2 == player_st%2)?'N' : 'M';
        arr[player_x+2][player_y+3]=(i%2 == player_st%2)?'X' : ' ';
        player_st--;
    }
    else if(!player_st && !life == 0){
        arr[player_x+1][player_y]='A';
        arr[player_x][player_y+1]= (i%2 == frame%2)?'Z' : 'E';
        arr[player_x+1][player_y+1]='A';
        arr[player_x+2][player_y+1]=(i%2 == frame%2)?'Z' : 'E';

        arr[player_x+1][player_y+2]='A';
        arr[player_x][player_y+3]=(i%2 == frame%2)?'Z' : 'E';
        arr[player_x+1][player_y+3]='A';
        arr[player_x+2][player_y+3]=(i%2 == frame%2)?'Z' : 'E';
    }
    else if(player_st >0){
        arr[player_x+1][player_y]= (i%2 == frame%2)?'N' : 'M';
        arr[player_x][player_y+1]= (i%2 == frame%2)?'N' : 'M';
        arr[player_x+1][player_y+1]=(i%2 == frame%2)?'N' : 'M';
        arr[player_x+2][player_y+1]=(i%2 == frame%2)?'N' : 'M';
       
        arr[player_x+1][player_y+2]=(i%2 == frame%2)?'N' : 'M';
        arr[player_x][player_y+3]=(i%2 == frame%2)?'N' : 'M';
        arr[player_x+1][player_y+3]=(i%2 == frame%2)?'N' : 'M';
        arr[player_x+2][player_y+3]=(i%2 == frame%2)?'N' : 'M';
        player_st--;
    }
   
   
    for(i = 0; i < MAX_EN; ++i){
    if(en_xy[0][i] != 100)
    {
        arr[en_xy[0][i]+1][en_xy[1][i]] = 'E';
        arr[en_xy[0][i]][en_xy[1][i]+1] = (i%2 == frame%2)?'Z' : 'E';
        arr[en_xy[0][i]+1][en_xy[1][i]+1] = 'E';
        arr[en_xy[0][i]+2][en_xy[1][i]+1] = (i%2 == frame%2)?'Z' : 'E';

        arr[en_xy[0][i]+1][en_xy[1][i]+2] = 'E';
        arr[en_xy[0][i]][en_xy[1][i]+3] = (i%2 == frame%2)?'Z' : 'E';
        arr[en_xy[0][i]+1][en_xy[1][i]+3] = 'E';
        arr[en_xy[0][i]+2][en_xy[1][i]+3] = (i%2 == frame%2)?'Z' : 'E';
    }
    }

     for(i=0; i<SCREEN_Y-4; i++)
     {
         for(h=0; h<SCREEN_X; h++)
        {
            if(!(h % 3))
            {
                printf("%s", (i%2 == frame%2)?"┃" : "  ");
            }       
           
            switch(arr[h][i]){
                case'A':
                    printf("▣");
                    break;
                 case'E':
                    printf("□");
                    break;
                case'Z':
                    printf("■");
                    break;
                 case'N':
                    printf("△");
                    break;
                case'M':
                    printf("▽");
                    break;
                case'X':
                    printf("※");
                    break;
                 default:
                    printf("  ");               
            }
            
        }
        printf("%s", (i%2 == frame%2)?"┃" : "  ");
       
     switch(i){
        case 0:
        case 1:
        printf("▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒", score);
        break;
        case 2:
        printf("▒     ☜ 자동차 게임 ☞    ▒", score);
        break;
        case 3:
        case 4:
        case 5:
        printf("▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒", score);
        break;  
        case 6:
        printf("▒  SPEED: %3dKm            ▒", ((MIN_SPEED+400) - speed) / 10);
        break;  
        case 7:
        printf("▒  SCORE: %5d            ▒", score);
        break;
        case 8:
        printf("▒   LIFE: %5d            ▒", life);
        break;
        case 12:
        printf("%s", (life == 0)? "▒    OH~ SHIT! GAME OVER   ▒" : "▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒");
        break;
        case 13:
        printf("%s", (life == 0)? "▒R키를 누르시면 계속됩니다!▒" : "▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒");
        break;
        default:
        printf("▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒", score);
       
     }
   
   
     printf("\n");
     }

}

void en(){
    if(!frame){
    for(i = 0; i < MAX_EN; ++i){
        if(en_xy[0][i] == 100)
        {
            en_xy[0][i] = (rand()%4)*3;
            en_xy[1][i] = 0;
            break;
        }
    }
    }

    for(i = 0; i < MAX_EN; ++i){
        if(en_xy[0][i] != 100)
        {
            en_xy[1][i]++;
           
            if(en_xy[1][i]+3 >= player_y && en_xy[0][i] == player_x){
                life--;
                player_st = 10;
                en_xy[0][i] = 100;
                speed = MIN_SPEED;
            }

            if(en_xy[1][i] >= SCREEN_Y-4){
                en_xy[0][i] = 100;
                score += 50;
            }
        }
    }
}

void gotoxy(int x, int y)
{
    COORD Cur;
    Cur.X=x;
    Cur.Y=y;
    SetConsoleCursorPosition (GetStdHandle ( STD_OUTPUT_HANDLE),Cur);
}

void main()
{
    reset();
    while(1)
    {       
        if(life)
        {
            en();   
            frame = frame > 10? 0 : frame+1;
            speed = (speed > MAX_SPEED)? speed-=7 : MAX_SPEED;
            score++;           
       
        }       
        gotoxy(0,0);
        drowscreen();          
        clear_arr();
        for(i=0; i<speed; i++) if(kbhit()) key();   
    }
}


이소스를 빌더로 돌려볼려고하는데 가능한건가요? 한번도 못써봐서요.. 꼭빌더로해야하는데.. 휴...

어디 강좌같은거없나요 빠르게 익혀야해서요..

+ -

관련 글 리스트
64331 빌더를 한번도 써보지못했어요.. 박태호 1231 2011/05/11
64369     Re:꼭 빌더로 해야하는 이유가 궁금합니다. +_ + 남병철.레조 1112 2011/05/17
64372         Re:Re:꼭 빌더로 해야하는 이유가 궁금합니다. +_ + 박태호 953 2011/05/18
64332     가능합니다. 조대현.Clau 963 2011/05/11
64368         Re:가능합니다. 박태호 956 2011/05/17
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.