디시인사이드 갤러리

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

갤러리 본문 영역

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

c언어(115.21) 2011.12.14 16:19:45
조회 52 추천 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/24 - -
이슈 [디시人터뷰] 충무로가 주목하는 신예, '세계의 주인' 서수빈 운영자 25/11/24 - -
AD 대학생 필수템! What's in my Bag 운영자 25/11/21 - -
294537 형들 학기말 프로젝트 질문좀 할게 [3] 군대가는어린이(121.172) 11.12.15 74 0
294536 함수포인터 공부중인데void (* first(void))(void) 일때 [5] 힘내자(123.142) 11.12.15 97 0
294535 안드뢰드 좀 물어보자. [11] 안드뢰드(112.220) 11.12.15 91 0
294534 Delphi vs Python [3] 애슐리_그린갤로그로 이동합니다. 11.12.15 115 0
294533 맥북 살건데 맥북도 한번은 리퍼로 바꿔주냐? 시불라미갤로그로 이동합니다. 11.12.15 70 0
294531 이거 너무 궁금해.............. 아는사람 알려줘 [8] 진짜(125.141) 11.12.15 94 0
294529 포문 한번만 돌리는거 불가능한거에유? 맞아유? [6] 씨씨이상해씨(210.126) 11.12.15 87 0
294527 난 프로그래밍을 접근장벽 존내존내 존내 높은 게임으로 생각할거임 [1] HaCh갤로그로 이동합니다. 11.12.15 92 0
294526 친구가 씨언어배운다고학원신청 [2] 三didas갤로그로 이동합니다. 11.12.15 170 0
294525 형님들 c언어 구조체 swap하는것좀 도와주세요 ㅠㅠ [1] hans(218.49) 11.12.15 66 0
294524 세시간 회의하고 회사 복귀한다 -쏭-갤로그로 이동합니다. 11.12.15 62 0
294523 아...ㅠㅠㅠㅠㅠㅠㅠ [2] 9m(58.140) 11.12.15 82 0
294522 형아들 밑에 주석 다는거 대충 몇개 했는데 이거는 이렇게 하면되나염 [3] Rapidly갤로그로 이동합니다. 11.12.15 72 0
294521 횽들 C언어 함수에서 인수 생략 할수 있나요? [3] 치킨맛맛폰갤로그로 이동합니다. 11.12.15 85 0
294520 슨상님들 근데 인젝션할때 필드이름다 어떻게 암? 죤나쨩 [7] Stan(220.244) 11.12.15 137 0
294519 앨화뱉은 26자고 숫자는 10개잖아 [1] ㅁㄴㄻㄹ갤로그로 이동합니다. 11.12.15 61 0
294518 여친 학교선배만난다는데 왜케 거슬리지? [6] 요하임plus갤로그로 이동합니다. 11.12.15 180 0
294517 개새끼 ㅁㄴㄻㄹ갤로그로 이동합니다. 11.12.15 66 0
294516 형아들.. 나 밑에 멀티쓰레드 올린 늅이거든... 이거 주석좀 달아줘 형 [3] Rapidly갤로그로 이동합니다. 11.12.15 67 0
294515 근데 ' or ' 1 ' =' 1 해서 뚤리는곳이 있을까? [4] Stan(220.244) 11.12.15 140 0
294514 Stan 개새야 어디서 구라를 까냐 [3] 아주아슬갤로그로 이동합니다. 11.12.15 106 0
294513 주변 사람들이 크리스마스 다가온다고 다들 여자친구 만드네 [8] 쿄스케갤로그로 이동합니다. 11.12.15 104 1
294512 기운찬 오후근무 시작합시다. [3] 캐복구닭(115.92) 11.12.15 101 0
294511 아이튀담배..왜 니 질문이 에러인지 열시미 댓글 쓰구 있는데 삭제해? [5] 캐담배닭(115.92) 11.12.15 96 0
294508 슨상님들 질문좀.txt [8] Stan(220.244) 11.12.15 112 0
294507 이 파일은 micro visual studio 외부에서 수정되었습니다. 김 딜러(203.237) 11.12.15 74 0
294505 아 시발 궁금해 미치겠다 [2] Adelposs갤로그로 이동합니다. 11.12.15 108 0
294503 VC++ 미트맵 리소스 ID가 저장이 안되는데 왜그럴까요? 김 딜러(203.237) 11.12.15 34 0
294502 C# 잘하는횽 폼위에 필요할때 레이아웃 덮어씌우게할줄 아는횽있어? [1] 마타버터갤로그로 이동합니다. 11.12.15 51 0
294501 멀티쓰레드 뭐 대충 이렇게 하면 되네요.txt [5] Stan(220.244) 11.12.15 139 0
294497 으으 종강 했는데 오늘까지 과제를 해야 한다니... 정말 싫다 [2] Rapidly갤로그로 이동합니다. 11.12.15 51 0
294495 형들존나궁금해서그러는대 컴쏘갤로그로 이동합니다. 11.12.15 45 0
294494 jsp 고수형들 [6] ㄴㄷㅌ(222.107) 11.12.15 97 0
294493 게임 5일동안 하고 밖에나가서 미친짓했음 [3] Stan(220.244) 11.12.15 157 0
294492 C언어 왕초보가 질문 하나 더 드릴게요 다들 아시는 거에요 [4] stdio.h(121.170) 11.12.15 113 0
294491 형아들 멀티쓰레드 질문이요;;; [16] Rapidly갤로그로 이동합니다. 11.12.15 144 0
294490 사장에게 돈을 이리 달라고 제안해봐라 [8] 거칠게갤로그로 이동합니다. 11.12.15 167 0
294488 난 초봉 5천 받을꺼다 [5] Lover♥갤로그로 이동합니다. 11.12.15 174 0
294487 뭐야 시벌 이거 왜이래 [2] F씨(59.24) 11.12.15 80 0
294486 뭐야 나 광고글 아닌데 삭제당해부렀어 ㅡㅡ; [8] Lover♥갤로그로 이동합니다. 11.12.15 79 0
294485 프갤 언니들아 [4] 고자왕(168.188) 11.12.15 81 0
294481 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ폰사진 정리하다가 [8] McHello갤로그로 이동합니다. 11.12.15 156 0
294480 C++ 스타일로 캐스팅 안하는 애들보면 참 답이없다 [3] 초딩6(59.13) 11.12.15 105 0
294479 공비횽 연봉이 얼마랬지??? 에이시아(203.90) 11.12.15 120 0
294478 실수령 285 만원이면 연봉 얼마급이냐? [4] ㅋㅋ(61.74) 11.12.15 198 0
294477 씨언어 배열 부분 간단하 질문이요 ㅜㅜ [8] 씨씨이상해씨(210.126) 11.12.15 91 0
294476 좋은아버지횽 소환 monoless갤로그로 이동합니다. 11.12.15 66 0
294475 헉헉 격하게 프리우스가 사고 싶다. [3] 거칠게갤로그로 이동합니다. 11.12.15 78 0
294474 컴공1학년2학기기말쯤이면 [9] 컴쏘갤로그로 이동합니다. 11.12.15 167 0
294473 정말 여태까지 본 회사들 전부 다 떨어지면 있자나? [7] 좋은아버지갤로그로 이동합니다. 11.12.15 174 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2