디시인사이드 갤러리

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

갤러리 본문 영역

ㅇㅇ

ㅇㅇ(115.21) 2011.12.13 21:58:56
조회 33 추천 0 댓글 0


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

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

이게 그 개선사항임

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

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

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


제발 도와주셈..


#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 - -
공지 프로그래밍 갤러리 이용 안내 [97] 운영자 20.09.28 48575 65
2901390 축구 선수 옷 번호 OCR 더럽게 안되네 [3] ㅇㅇ(121.162) 00:13 25 0
2901389 LG G5 부품용 중고나라에 올렸습니다. 네이버 플리마켓도 판매 넥도리아(14.35) 00:04 10 0
2901388 EAC 같은 안티치트 보면 잘 만들었구나 [8] 루도그담당(58.239) 00:00 49 0
2901386 나님 공연 set list ♥KiTTY냥덩♥갤로그로 이동합니다. 11.08 12 0
2901385 나님은 예술가당 By 나님 ♥KiTTY냥덩♥갤로그로 이동합니다. 11.08 12 0
2901383 댕댕이 이 사진 어때보이니 [1] ㅁㅁㅅ갤로그로 이동합니다. 11.08 18 0
2901382 나님 귀에 모기 물린듯.. ♥KiTTY냥덩♥갤로그로 이동합니다. 11.08 10 0
2901381 나님 5hz에서 17khz 10대 후반 청력의 비법 [2] ♥KiTTY냥덩♥갤로그로 이동합니다. 11.08 22 0
2901380 내가 오늘 많이 거만했었나보군 [4] chironpractor갤로그로 이동합니다. 11.08 27 0
2901379 좋은건가요 [4] 루도그담당(58.239) 11.08 33 0
2901378 하 씨발 저 보고 찐따라네요 [2] 루도그담당(58.239) 11.08 29 0
2901377 나님 귀가 너무 좋아서 다 들림 ♥KiTTY냥덩♥갤로그로 이동합니다. 11.08 14 0
2901376 씨발 어디서 모기 소리 난당 ♥KiTTY냥덩♥갤로그로 이동합니다. 11.08 13 0
2901375 [대한민국] 가짜뉴스 정의 프갤러(121.172) 11.08 12 0
2901373 치지직 타임라인 보여주는 웹 사이트 만들었다 [10] 코로모갤로그로 이동합니다. 11.08 128 6
2901372 아! 드디어 범인 찾았다. 프갤러(211.234) 11.08 19 0
2901371 제미나이 학생 무료 언제다시 열어주노 ㅇㅇ갤로그로 이동합니다. 11.08 20 0
2901370 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ [2] ♥KiTTY냥덩♥갤로그로 이동합니다. 11.08 25 0
2901368 기록을 하다니 한심하구나. [1] 프갤러(42.24) 11.08 28 0
2901367 오늘만 모기 3킬햇노 [1] 헬마스터갤로그로 이동합니다. 11.08 30 0
2901366 프갤에 글 작성보다 눈팅이 많은 이유 [4] 프갤러(223.63) 11.08 47 0
2901365 저녁에 코노 가려다 프갤글 읽느라 그냥 씻음 [8] chironpractor갤로그로 이동합니다. 11.08 48 0
2901364 일단 프로그래머한테 영어는 필수 소양인게 [4] 프갤러(42.18) 11.08 54 0
2901360 똥마려운데 [2] 프갤러(175.212) 11.08 46 2
2901359 내 잘못이라고 밝혀져도 할복으로 사죄할거 아니잖아 [2] 프갤러(61.106) 11.08 34 0
2901357 너네는 문서화해놓는거 어떻게하냐? 나는 내가 구현한거 다 문서화해둠 [4] ㅆㅇㅆ(124.216) 11.08 59 0
2901356 오랜만에 해킹 공부나 할까 [5] 루도그담당(58.239) 11.08 59 0
2901353 나님 왤케 특별하실깡..? [3] ♥KiTTY냥덩♥갤로그로 이동합니다. 11.08 39 0
2901351 근데 프갤은 이상하게 변방갤치고 눈팅 하는 양반 존나 많지 않냐 [4] ㅆㅇㅆ(124.216) 11.08 57 0
2901350 휴대용 번역기도 좀 만들만한 것 같음 [6] 에이도비갤로그로 이동합니다. 11.08 67 0
2901349 진정한 개발자란 뭔가요 [9] 공기역학갤로그로 이동합니다. 11.08 64 0
2901348 오늘 마지막 일까지 끝났으니 내일은 오랜만에 블로그 글 써야지 ㅆㅇㅆ(124.216) 11.08 29 0
2901346 이번에 중국에서 화제가 된 뉴스기사보는데 AI기업 200개 중 [2] ㅆㅇㅆ(124.216) 11.08 49 0
2901344 당연히 내 말이 맞지. 당장 중국 오픈소스 시장만 가도 [2] ㅆㅇㅆ(124.216) 11.08 67 0
2901343 내친구보면 컴공 왜힘들다고 하는건지 잘 모르겠음 [5] ㅇㅇ(211.107) 11.08 79 0
2901342 퀵 파인더보다 내가 더 싸게 할 수 있음ㅋㅋ [6] 에이도비갤로그로 이동합니다. 11.08 51 0
2901341 내가 느끼는건 N년차 개발자 반드시 필요 스킬은 없단거임. [7] ㅆㅇㅆ(124.216) 11.08 88 0
2901340 [대한민국] 히틀러 독재를 꿈꾸는 이재명 프갤러(121.172) 11.08 19 0
2901338 프로그래밍도 공부해야하는데 자꾸 영어가 더 중요해보여서 [4] 프갤러(119.192) 11.08 51 0
2901337 부천역 bj들 내쫒는 분위기네 프갤러(211.210) 11.08 34 0
2901335 3년차 백엔드 개발자는 일반적으로 어느정도 수준은 되어야 하나요? [3] 프갤러(61.36) 11.08 63 0
2901334 걍 AI Hype 하려고 프로그래밍 언어 몰라도 AI있으면 ㅆㅇㅆ(124.216) 11.08 27 0
2901333 지금 프로그래밍 언어 배우는거 솔직히 비추하냐? [10] 프갤러(119.192) 11.08 67 0
2901332 공식문서는 예제가 없어서 나는 자주 쓰는 것에 관해선 예제 폴더 만들어둠 ㅆㅇㅆ(124.216) 11.08 19 0
2901331 프로그래밍 언어라는것도 컴퓨터에게 명령을 내리는거잖아 결국? [2] 프갤러(119.192) 11.08 34 0
2901330 너네 특정 라이브러리 다 외우냐? 나만 걍 문서화해놓고 계속 봄? [6] ㅆㅇㅆ(124.216) 11.08 45 0
2901328 뭐 내 잘못일 수도 있지. 분석은 해봐야겠지. 프갤러(211.234) 11.08 22 0
2901327 근데 에이도비 말 보니까 성공할 수 있을듯 [5] ㅆㅇㅆ(124.216) 11.08 57 0
2901324 OCR 카메라 저거 나는 좀 별로라고 생각하는게 [5] ㅆㅇㅆ(124.216) 11.08 61 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2