디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

횽들 c언어 소스짜는것좀 도와주셈 ㅠㅠ..

c언어(115.21) 2011.12.14 16:19:45
조회 49 추천 0 댓글 0

지금 학교에서 내가 c언어 소스짜서 발표해야하는데 너무 막막함 ㅠㅠ


일단 밑에있는 소스는 블록쌓기 게임 소스임
 
근데 거기서 내가 새롭게 소스를 추가해서 몇가지를 개선해야함


이게 그 개선사항임

 

1. 등장하는 블록의 개수를 직접 입력하여 조절 할 수 있다.

2. 기존에 한 개의 블록이 내려왔다면, 이번엔 다양한 크기와 모양의 블록이 출현하게 한다. (ex. 테트리스)

3. 폭탄 아이템이 등장한다. (떨어지면 좌우로 3칸씩 폭발)


c언어 잘하는 횽들 제발 도와주셈..



#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#include <windows.h>

#define box_length 15 //게임의 영역(좌우 길이)
#define box_height 15 //바닥의 높이(상하 길이)

void intro_game(void);
void game_control(void);
void gotoxy(int x, int y);
int left_right_move(void);
void move_down(int x);
void draw_rectangle(int c, int r);
int max_block(void);
int boom(void);
void viewtime(time_t start);

int block_stack[box_length*2+1]={0}; // 해당위치의 블록을 누적
time_t starttime;

int main(void)
{
    intro_game();
    game_control();
    gotoxy(1, box_height+3);
    printf("game이 종료되었습니다.                 \\n");
    return 0;
}

void intro_game(void)
{
    [...];
    printf("블록쌓기 \\n\\n");
    printf("블록이 좌우로 움직일때 스페이스키를 누르면\\n");
    printf("블록이 떨어져 바닥에 쌓입니다.\\n\\n");
    printf("아무키나 누르면 게임을 시작합니다. \\n");
    getch();
}

void game_control(void)
{
    int x, count=0;
    int ret, score=0;

    [...];

    starttime = time(0);


    draw_rectangle(box_length, box_height);
    gotoxy(box_length*2+5,3);
    printf("블록의 개수: %2d", box_height);
    gotoxy(1, box_height+3);
    printf("스페이스키를 누르면 블록이 떨어지고\\n");
    printf("바닥에 쌓입니다. \\n");
    while(count<box_height)
    {
        gotoxy(box_length*2+5,4);
        printf("시도한 횟수: %2d", count+1);
        gotoxy(box_length*2+5,5);
        printf("쌓인 블록수: %2d", max_block());
        gotoxy(box_length*2+5,6);
        printf("점수: %2d", score);

        viewtime(starttime);

        x=left_right_move();
        move_down(x);
        count++;
        ret = boom();
        if ( ret == 1) score++;

        getch();
    }
}


//시간 표시
void viewtime(time_t start)
{   
    gotoxy(box_length*2+5,2);
    //시간표시
    printf("게임시간 : %d", time(0) - start);
}


int max_block(void)
{
    int i, max=0;
    for(i=1;i<box_height*2+1;i++)
    {
        if (max<=block_stack[i])
            max=block_stack[i];
    }
    return max;
}


int left_right_move(void)
{
    int x=3, y=2, temp=2;

    do
    {
        x+=temp;
        if (x>(box_length*2)) //x방향 최대값 설정
            temp=-2;
        if (x<3)
        {
            x=3;
            temp=2;
        }

        gotoxy(x, y);
        printf("□");
        Sleep(50); //블록이 좌우로 움직이는 속도를 조절
       
        gotoxy(x, y);
        printf("  ");
       
        viewtime(starttime);

    }while(!kbhit());
    block_stack[x]+=1;
    return x;
}

void move_down(int x)
{
    int y;
    for(y=2;y<box_height+2-block_stack[x];y+=1)
    {
        gotoxy(x, y);
        printf("□");
        Sleep(20);
        gotoxy(x, y);
        printf("  ");
        Sleep(10);
    }
    gotoxy(x,box_height+2-block_stack[x]);
    printf("□");
}

void gotoxy(int x, int y)
{
   COORD Pos = {x - 1, y - 1};
   SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Pos);
}

void draw_rectangle(int r, int c)
{

    int i, j;
    unsigned char a=0xa6;
    unsigned char b[7];

    for(i=1;i<7;i++)
        b[i]=0xa0+i;

    printf("%c%c",a, b[3]);
    for(i=0;i<r;i++)
        printf("%c%c", a, b[1]);
    printf("%c%c", a, b[4]);
    printf("\\n");

    for(i=0;i<c;i++)
    {
        printf("%c%c", a, b[2]);
        for(j=0;j<r;j++)
            printf("  ");
        printf("%c%c",a, b[2]);
        printf("\\n");
    }
    printf("%c%c", a, b[6]);
    for(i=0;i<r;i++)
        printf("%c%c", a, b[1]);
    printf("%c%c", a, b[5]);
    printf("\\n");
}


//없앨 라인 확인.
int boom(void)
{
    int i, j, line;
    int flag1=0, flag2=0;
    int ret=0;
   
   
    for(i=3; i<=box_length*2+1; i+=2)
    {
        flag1 = 0;
        if ( block_stack[i] == 0 ) continue;
        if ( block_stack[i] >= 3 ) flag1 = 1;

        flag2 = 0;
        if ( i+4 <= box_length*2 )
        {
            if ( block_stack[i+0] > 0 &&
                 block_stack[i+2] > 0 &&
                 block_stack[i+4] > 0
                )
            {
                flag2 = 1;
                if ( flag1 == 1 ) block_stack[i+0]-=3;
else block_stack[i+0]--;

                block_stack[i+2]--;
                block_stack[i+4]--;
            }
        }
   
        if ( flag2 == 0 && flag1 == 1 ) block_stack[i] -= 3;
        if ( flag1 == 1 || flag2 == 1 ) ret = 1;

    }
   
    line = box_height-1;
    for( i=3; i<=box_height+1; i++)
    {
        gotoxy(1, i);
        printf("│");
        for( j=3; j<=box_length*2+1; j+=2)
        {
            if ( block_stack[j] >= line ) {
                printf("□");
            } else {
                printf("  ");
            }
        }
        printf("│");
        line--;
    }
   
    return ret;
}

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 해외에서 겪는 불합리한 대우에 대응 잘 할 것 같은 스타는? 운영자 25/11/03 - -
AD 저녁 뭐먹지? 오늘의 메뉴 추천! 운영자 25/10/31 - -
294340 내일 컴퓨터학원 시간강사 면접보러 갑니다. 조공 [3] 머시기갤로그로 이동합니다. 11.12.14 192 0
294338 상수값 튜닝하기 조낸 귀찮네.... 땡칠도사갤로그로 이동합니다. 11.12.14 59 0
294337 금연 6개월차...존나 손떨리고 담배피고 싶다... [3] 캐망함닭(115.92) 11.12.14 105 0
294336 웹 프로그래머 일 [3] 씨발놈갤로그로 이동합니다. 11.12.14 144 0
294335 허허 폰트는 Segoe Script거늘 [3] elwlwlwk갤로그로 이동합니다. 11.12.14 85 0
294334 대기업하고 일반 중소기업하고 근무환경,연봉이런게 차이가 그렇게커? [2] ㅇㅇ(222.112) 11.12.14 186 0
294333 리눅스 잘하는 횽들 급헬프 ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ [25] 캐망함닭(115.92) 11.12.14 174 0
294332 왜 내컴파일러는 itoa 인식못하지? [3] 마타버터갤로그로 이동합니다. 11.12.14 68 0
294331 아 씨바 석차넣고싶은데 존나 힘들다! 과제 씨발ㅠㅠ [6] ㅇㅇ(165.229) 11.12.14 93 0
294330 제발 matlab좀 도와주세요 ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ하앍ㄹ 도와주세요(61.255) 11.12.14 87 0
294329 좆고딩인데 프로그래밍 해보는거보다 정올 나가보는게 더 나음? [2] ㅇㅇ(121.173) 11.12.14 109 0
294328 프로그래밍 폰트 .. 콘솔라스가 젤 낳다 [4] ㅈㄹㄷ(219.255) 11.12.14 120 0
294327 대학교 컴공 가려고 하는데 갤로그로 이동합니다. 11.12.14 260 0
294326 크리스마스가 다가오는데 분위기가 안난다 [5] 쿄스케갤로그로 이동합니다. 11.12.14 61 0
294324 님들아 c++ 2010 실행방법좀 도와주세여 [8] ㄱㅁ(124.80) 11.12.14 73 0
294323 근데 상속에서 base클래스의 생성자를 호출할 수 있던데? [3] elwlwlwk갤로그로 이동합니다. 11.12.14 71 0
294322 오늘 허그데이였는데 [1] Lover♥갤로그로 이동합니다. 11.12.14 51 0
294320 이번학기는 평점 4.3은 넘길 수 있을 듯 Lover♥갤로그로 이동합니다. 11.12.14 55 0
294319 횽들 이거 텍스트 파일 이름 뭘로 해야해요? 가르쳐주세욯ㅎㅎㅎ [4] 슴시카갤로그로 이동합니다. 11.12.14 50 0
294318 근데요 C++0x 가 아니라 C++11 이라고 불르는거 아님?? [1] [성대아싸]갤로그로 이동합니다. 11.12.14 84 0
294317 이거 JAVA인데.. [15] 예비군0년차(180.64) 11.12.14 127 0
294316 TCP/IP프로그래밍하는데 마타버터갤로그로 이동합니다. 11.12.14 62 0
294314 부장님이 점심에 밥 사주셨는데, 므해?갤로그로 이동합니다. 11.12.14 86 0
294313 기분좋아서 쓰는 C++ 0x 살펴보긔 [6] 요하임plus갤로그로 이동합니다. 11.12.14 133 0
294311 퇴갤 [1] Dawnwalkre갤로그로 이동합니다. 11.12.14 49 0
294307 형님들 제가 씨쁠쁠 알려달라는 글 싸질러서 죄송합니다 ㅠㅠ [2] 씨쁠쁠(116.126) 11.12.14 53 0
294306 B트리 아는횽잇어?? [2] ㅁㅁ(182.212) 11.12.14 75 0
294305 나두 질문 [1] ㅅㄱㅅㄱㅅㄱ갤로그로 이동합니다. 11.12.14 52 0
294304 컴공 질문 [3] efd(175.114) 11.12.14 123 0
294301 짤 싸고 다시 잠수 땡칠도사갤로그로 이동합니다. 11.12.14 87 0
294300 가입이 안됌 아앜(175.114) 11.12.14 41 0
294298 원본을 찾았.... [6] 땡칠도사갤로그로 이동합니다. 11.12.14 140 0
294297 코딩 대행해줄사람없수.. [12] 사탕발림(183.104) 11.12.14 165 0
294296 프로젝트하다 심심해서 왔다 [3] 땡칠도사갤로그로 이동합니다. 11.12.14 107 0
294293 우리 자기 기다리는데 떨리네 쿄스케갤로그로 이동합니다. 11.12.14 72 0
294292 c# 폼위에 새로운 레이아웃 생성하는법좀 마타버터갤로그로 이동합니다. 11.12.14 41 0
294291 페이스북 알고리즘 [5] 타나토스(175.114) 11.12.14 395 0
294290 이런데는 가지 말아라 [6] 천회장(14.52) 11.12.14 155 0
294289 WriteProcessMemory 컴파일 에러 해결책좀 [2] 솔라리스와리눅스갤로그로 이동합니다. 11.12.14 54 0
294287 아 오늘 통역 알바 좃망했음 [6] 분당살람갤로그로 이동합니다. 11.12.14 185 0
294285 형들... 나 자바 좀 도와줘... [3] 예비군0년차(180.64) 11.12.14 77 0
294284 해킨토시 성공 ㅠㅠ 근데 여기 xcode 쓰는 횽들 있어? 이것 좀 봐줘 [2] 맥컬린(118.176) 11.12.14 98 0
294283 형들 안녕 ? 나 오늘 면접 좀 잘한거 같아. [11] 좋은아버지갤로그로 이동합니다. 11.12.14 202 0
294281 내가 쓰고도 어이가없음 gaim [5] 90%(1.249) 11.12.14 135 0
294280 지금까지 내가 기획한게임을 소개할게 어떤지봐줘 형ㅇ들 [4] 싴보이갤로그로 이동합니다. 11.12.14 99 0
294278 이번주 토,일요일 출근 확정됬다...... [4] 캐망함닭(115.92) 11.12.14 115 0
294277 친구에게서 차 새로 뽑았다구 연락이왔다. [3] 캐부럽닭(115.92) 11.12.14 98 0
294273 어느덧 내 나이 서른... [2] 바보플머(183.101) 11.12.14 162 1
294272 이프로그램 어떻게 실행 시키는지 도와주세요 ㅠㅠ [5] 슴시카갤로그로 이동합니다. 11.12.14 70 0
294270 .to 엠씨헬로 [5] 줫밥(122.49) 11.12.14 78 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2