디시인사이드 갤러리

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

갤러리 본문 영역

ㅇㅇ

ㅇㅇ(115.21) 2011.12.13 21:58:56
조회 35 추천 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/24 - -
AD 따뜻한 겨울나기! 방한용품 SALE 운영자 25/11/27 - -
295084 형들 머해? [11] Stan(220.244) 11.12.19 146 0
295083 전테일의 공개장(여러가지 생각이 드네요) 흠흠흠(116.36) 11.12.19 78 0
295082 자바 과제 대행 구합니다 [1] 정글쥬스(1.210) 11.12.19 149 0
295081 회사에 보낼 ppt 다 만들었어. [5] 좋은아버지갤로그로 이동합니다. 11.12.19 138 0
295077 처음 파이썬 공부 할려고 하는데 책 어떤게 좋을까요?? [7] 파이선(175.116) 11.12.19 236 0
295076 위로 받고 싶은 형들에게... [1] Lover♥갤로그로 이동합니다. 11.12.19 78 0
295073 혹시 동적 인프라에 대한 개념 에 대해 잘아는 형있어? 좋은아버지갤로그로 이동합니다. 11.12.19 52 0
295072 게임프로그래밍 과 CCNA에 상관관계 CHALLENGER갤로그로 이동합니다. 11.12.19 131 0
295071 이클립스 프로젝트 불러오기 질문좀... [1] 123(211.200) 11.12.19 131 0
295070 혹시 홈서버 굴리는 형들 있음? [7] 한화외야수갤로그로 이동합니다. 11.12.19 155 0
295068 야호 내일이 마지막 면접이다 ! [7] 좋은아버지갤로그로 이동합니다. 11.12.19 157 0
295067 to. 김심심 줫밥(122.49) 11.12.19 53 0
295066 주식 폭락이라며 삼양주식은 올랐다며? [5] 쿄스케갤로그로 이동합니다. 11.12.19 138 0
295065 갤탭 찾아옴 ㅇㅇ [4] 줫밥(122.49) 11.12.19 86 0
295064 오예 릭 잡았다. 천회장(14.52) 11.12.19 67 0
295062 @#$^%%@#$^ [4] 생물학(122.35) 11.12.19 92 0
295058 곽팀장♥ [5] Lover♥갤로그로 이동합니다. 11.12.19 117 0
295057 여기서질문 [12] 컴쏘갤로그로 이동합니다. 11.12.19 139 0
295056 고인 목록 [4] &gt;&lt;(220.70) 11.12.19 108 0
295054 야 근데 이 짤에 있는 사람들은 대체 뭔 생각으로 살아가고 있는거임? [5] Lover♥갤로그로 이동합니다. 11.12.19 227 0
295053 조는거 딴짓하는거에 머 그리 예민하게 구는지 모르겠다...? [3] ㅅㄱㅅㄱㅅㄱ갤로그로 이동합니다. 11.12.19 101 0
295052 오늘 평소랑 좀 다르게 출근했는데 [1] McHello갤로그로 이동합니다. 11.12.19 104 0
295051 미국에서 [5] 컴쏘갤로그로 이동합니다. 11.12.19 105 0
295047 자바 코드 좀 봤는데 어렵네;; [7] 줫밥(122.49) 11.12.19 136 0
295046 난 목표가 연봉 5000인데 [3] ㅇㅇ(125.182) 11.12.19 213 0
295045 공부 할게 산더미인데 김정일 죽어서 일하기 싫다 [1] 개심심(61.73) 11.12.19 96 0
295044 C언어에서는 디폴트 매개변수 어떻게 쓰나요; [3] 치킨맛맛폰갤로그로 이동합니다. 11.12.19 116 0
295043 카톡 닉네임 김센스 게이있냐? 줫밥(122.49) 11.12.19 70 0
295039 어깨가 아프고... [2] 9m(203.236) 11.12.19 59 0
295035 연봉 얼마 받고 싶냐. [7] ㅂㅎㅅ(124.35) 11.12.19 173 0
295034 환급 100만원 이야? [1] 신입사원갤로그로 이동합니다. 11.12.19 81 0
295032 to. 케닭 [11] 줫밥(122.49) 11.12.19 172 0
295031 레알 OpenGL 아는 횽 하나도 업음?? [2] 신입사원갤로그로 이동합니다. 11.12.19 107 0
295030 야 이거좀 갈켜줘 [25] 줫밥(122.49) 11.12.19 201 0
295029 소스입니다. [1] 대한민국코더갤로그로 이동합니다. 11.12.19 73 0
295028 선배님들 질문있습니다. [1] 대한민국코더갤로그로 이동합니다. 11.12.19 88 0
295026 대한민국코더 인사드립니다. [1] 대한민국코더갤로그로 이동합니다. 11.12.19 80 0
295024 주식 박살났다 ㅋㅋㅋ 김정일 시발년 뒤져도 씨발년 살아도 씨발년 [2] 개심심(61.73) 11.12.19 138 0
295023 양재동쪽에 스포츠 가르쳐주는 곳 없나? 배드민턴이라던지 뭐든지.. [5] 초딩6(59.13) 11.12.19 322 3
295022 입사한 이후로 공휴일이 없다 3(121.169) 11.12.19 69 0
295021 김정일 죽었는데 [1] Adelposs갤로그로 이동합니다. 11.12.19 105 0
295018 안드로이드 면접 질문 구걸좀용 ^^; [13] 흐잌ㅋ(119.65) 11.12.19 630 0
295015 이번주 정모하자 [2] 줫밥(122.49) 11.12.19 108 0
295012 윈도우 xp 발매전 마소 직원의 대담함.jpg Stan(220.244) 11.12.19 187 0
295011 유용한 글이니 잘 읽어보고 GC를 쓰도록 하자 [1] 퓨리님(111.91) 11.12.19 88 0
295010 손들어!! 움직이지마 그리고 가진돈 다내놔!.jpg Stan(220.244) 11.12.19 75 0
295009 횽아들.올만이내요 저ㅜ내일임대합니다 [5] 푸른명월갤로그로 이동합니다. 11.12.19 77 1
295008 아까 질문했던 사람인데염 초보자(211.211) 11.12.19 51 0
295007 똒똒똒!~!! 계세요? 똑똒! [2] Stan(220.244) 11.12.19 68 0
295006 흔한 웹디자이너.jpg Stan(220.244) 11.12.19 134 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2