본문내용
1}, {0,0,0,1,-1,0,-1,-1}, {0,0,-1,0,0,-1,1,-1}, {0,0,0,1,-1,0,-1,-1} },
{ {0,0,-1,-1,0,-1,1,0}, {0,0,-1,0,-1,1,0,-1}, {0,0,-1,-1,0,-1,1,0}, {0,0,-1,0,-1,1,0,-1} },
{ {0,0,-1,0,1,0,-1,-1}, {0,0,0,-1,0,1,-1,1}, {0,0,-1,0,1,0,1,1}, {0,0,0,-1,0,1,1,-1} },
{ {0,0,1,0,-1,0,1,-1}, {0,0,0,1,0,-1,-1,-1}, {0,0,1,0,-1,0,-1,1}, {0,0,0,-1,0,1,1,1} },
{ {0,0,-1,0,1,0,0,1}, {0,0,0,-1,0,1,1,0}, {0,0,-1,0,1,0,0,-1}, {0,0,-1,0,0,-1,0,1} },
};
int main(void)
{
int x;
clock_t base_time, curr_time, duration = 500L; //duration : 블럭이 아래로 떨어지는 시간 간격
CLS();
printf(\"\\n\\n\\n\");
printf(\"\\t============================\\n\");
printf(\"\\t= T E T R I S ver1.0 =\\n\");
printf(\"\\t= 만든이 : H.J.H =\\n\");
printf(\"\\t============================\\n\");
getchar();
srand((unsigned)time(NULL));//게임판 보드 설정. 초기화
DrawBoard();
Newbrick(); //새블록
DrawScreen(); //게임판 인쇄
base_time = clock(); // 기준 시각
//메인 프로세싱
while(1)
{
curr_time = clock(); // 현재 시각
Key();
if ((curr_time - base_time) >= duration) // 기준 시각으로부터 (duration에 지정된) 일정 시간이 경과하면...
{
Movedown();
Fullline();
DrawScreen();
//GAMEOVER
for(x=1;x
{
if(board[x][2]==BLOCK || board[x][1]==BLOCK)
{
printf(\" G A M E O V E R \\n\");
return 0;
}
}
base_time = curr_time; // 기준 시각을, 현재 시각으로 재설정
}
}
return 0;
}
void Fullline() //라인 삭제
{
int x,y,z;
int cnt=0;
for(y=BY-1;y>3;y--)
{
cnt=0;
for(x=1;x
{
if(board[x][y]==BLOCK)//BLOCK 수를 센다
{
cnt++;
}
}
if(cnt==(BX-2))//한줄이면
{
for(z=y;z>3;z--)
{
for(x=1;x
{
board[x][z]=board[x][z-1]; //삭제한다.
}
}
}
}
}
void Newbrick() //새 벽돌
{
int c;
srand((unsigned)time(NULL));
i=rand()%7;
j=rand()%4;
//(4,2)를 기준으로 새 브릭이 나온다.
Brickx=4;
Bricky=2;
for(c=0;c<4;c++)
{
board[Brickx+Shape[i][j][c].x][Bricky+Shape[i][j][c].y]=BRICK;
}
}
void Movedown() //벽돌이 자동으로 내려가는 함수
{
int c;
if(board[Brickx+Shape[i][j][0].x][Bricky+1+Shape[i][j][0].y]==WALL ||board[Brickx+Shape[i][j][0].x][Bricky+1+Shape[i][j][0].y]==BLOCK)
{
for(c=0;c<4;c++)
{
board[Brickx+Shape[i][j][c].x][Bricky+Shape[i][j][c].y]=BLOCK;
}
Newbrick(); //새벽돌 호출
}
else if(board[Brickx+Shape[i][j][1].x][Bricky+1+Shape[i][j][1].y]==WALL ||board[Brickx+Shape[i][j][1].x][Bricky+1+Shape[i][j][1].y]==BLOCK)
{
for(c=0;c<4;c++)
{
board[Brickx+Shape[i][j][c].x][Bricky+Shape[i][j][c].y]=BLOCK;
}
Newbrick(); //새벽돌
}
else if(board[Brickx+Shape[i][j][2].x][Bricky+1+Shape[i][j][2].y]==WALL ||board[Brickx+Shape[i][j][2].x][Bricky+1+Shape[i][j][2].y]==BLOCK)
{
for(c=0;c<4;c++)
{
board[Brickx+Shape[i][j][c].x][Bricky+Shape[i][j][c].y]=BLOCK;
}
Newbrick(); //새벽돌
}
else if(board[Brickx+Shape[i][j][3].x][Bricky+1+Shape[i][j][3].y]==WALL ||board[Brickx+Shape[i][j][3].x][Bricky+1+Shape[i][j][3].y]==BLOCK)
{
for(c=0;c<4;c++)
{
board[Brickx+Shape[i][j][c].x][Bricky+Shape[i][j][c].y]=BLOCK;
}
Newbrick(); //새벽돌
}
else
{
for(c=0;c<4;c++)
{
board[Brickx+Shape[i][j][c].x][Bricky+Shape[i][j][c].y]=EMPTY;
}
Bricky=Bricky+1;
for(c=0;c<4;c++)
{
board[Brickx+Shape[i][j][c].x][Bricky+Shape[i][j][c].y]=BRICK;
}
}
}
void Key()
{
int c,key;
if (kbhit()) //kbhit() 키가 입력
{ {0,0,-1,-1,0,-1,1,0}, {0,0,-1,0,-1,1,0,-1}, {0,0,-1,-1,0,-1,1,0}, {0,0,-1,0,-1,1,0,-1} },
{ {0,0,-1,0,1,0,-1,-1}, {0,0,0,-1,0,1,-1,1}, {0,0,-1,0,1,0,1,1}, {0,0,0,-1,0,1,1,-1} },
{ {0,0,1,0,-1,0,1,-1}, {0,0,0,1,0,-1,-1,-1}, {0,0,1,0,-1,0,-1,1}, {0,0,0,-1,0,1,1,1} },
{ {0,0,-1,0,1,0,0,1}, {0,0,0,-1,0,1,1,0}, {0,0,-1,0,1,0,0,-1}, {0,0,-1,0,0,-1,0,1} },
};
int main(void)
{
int x;
clock_t base_time, curr_time, duration = 500L; //duration : 블럭이 아래로 떨어지는 시간 간격
CLS();
printf(\"\\n\\n\\n\");
printf(\"\\t============================\\n\");
printf(\"\\t= T E T R I S ver1.0 =\\n\");
printf(\"\\t= 만든이 : H.J.H =\\n\");
printf(\"\\t============================\\n\");
getchar();
srand((unsigned)time(NULL));//게임판 보드 설정. 초기화
DrawBoard();
Newbrick(); //새블록
DrawScreen(); //게임판 인쇄
base_time = clock(); // 기준 시각
//메인 프로세싱
while(1)
{
curr_time = clock(); // 현재 시각
Key();
if ((curr_time - base_time) >= duration) // 기준 시각으로부터 (duration에 지정된) 일정 시간이 경과하면...
{
Movedown();
Fullline();
DrawScreen();
//GAMEOVER
for(x=1;x
if(board[x][2]==BLOCK || board[x][1]==BLOCK)
{
printf(\" G A M E O V E R \\n\");
return 0;
}
}
base_time = curr_time; // 기준 시각을, 현재 시각으로 재설정
}
}
return 0;
}
void Fullline() //라인 삭제
{
int x,y,z;
int cnt=0;
for(y=BY-1;y>3;y--)
{
cnt=0;
for(x=1;x
if(board[x][y]==BLOCK)//BLOCK 수를 센다
{
cnt++;
}
}
if(cnt==(BX-2))//한줄이면
{
for(z=y;z>3;z--)
{
for(x=1;x
board[x][z]=board[x][z-1]; //삭제한다.
}
}
}
}
}
void Newbrick() //새 벽돌
{
int c;
srand((unsigned)time(NULL));
i=rand()%7;
j=rand()%4;
//(4,2)를 기준으로 새 브릭이 나온다.
Brickx=4;
Bricky=2;
for(c=0;c<4;c++)
{
board[Brickx+Shape[i][j][c].x][Bricky+Shape[i][j][c].y]=BRICK;
}
}
void Movedown() //벽돌이 자동으로 내려가는 함수
{
int c;
if(board[Brickx+Shape[i][j][0].x][Bricky+1+Shape[i][j][0].y]==WALL ||board[Brickx+Shape[i][j][0].x][Bricky+1+Shape[i][j][0].y]==BLOCK)
{
for(c=0;c<4;c++)
{
board[Brickx+Shape[i][j][c].x][Bricky+Shape[i][j][c].y]=BLOCK;
}
Newbrick(); //새벽돌 호출
}
else if(board[Brickx+Shape[i][j][1].x][Bricky+1+Shape[i][j][1].y]==WALL ||board[Brickx+Shape[i][j][1].x][Bricky+1+Shape[i][j][1].y]==BLOCK)
{
for(c=0;c<4;c++)
{
board[Brickx+Shape[i][j][c].x][Bricky+Shape[i][j][c].y]=BLOCK;
}
Newbrick(); //새벽돌
}
else if(board[Brickx+Shape[i][j][2].x][Bricky+1+Shape[i][j][2].y]==WALL ||board[Brickx+Shape[i][j][2].x][Bricky+1+Shape[i][j][2].y]==BLOCK)
{
for(c=0;c<4;c++)
{
board[Brickx+Shape[i][j][c].x][Bricky+Shape[i][j][c].y]=BLOCK;
}
Newbrick(); //새벽돌
}
else if(board[Brickx+Shape[i][j][3].x][Bricky+1+Shape[i][j][3].y]==WALL ||board[Brickx+Shape[i][j][3].x][Bricky+1+Shape[i][j][3].y]==BLOCK)
{
for(c=0;c<4;c++)
{
board[Brickx+Shape[i][j][c].x][Bricky+Shape[i][j][c].y]=BLOCK;
}
Newbrick(); //새벽돌
}
else
{
for(c=0;c<4;c++)
{
board[Brickx+Shape[i][j][c].x][Bricky+Shape[i][j][c].y]=EMPTY;
}
Bricky=Bricky+1;
for(c=0;c<4;c++)
{
board[Brickx+Shape[i][j][c].x][Bricky+Shape[i][j][c].y]=BRICK;
}
}
}
void Key()
{
int c,key;
if (kbhit()) //kbhit() 키가 입력
추천자료
c언어의 개념
어셈블리 언어와 C언어의 비교
c언어로 만든 5개의 숫자를 입력받아 가장 큰수 출력하는 프로그램
c언어로 만든 숫자입력받아 역순으로 출력하는 프로그램
c언어로 만든 행열에 맞추어 1부터 25까지 나타내는 프로그램
c언어로 만든 버블소팅(오름차순) 프로그램
c언어로 만든 파일처리를 이용한 성적처리(등급까지포함) 프로그램
c언어로 만든 구조체 개념 연습 프로그램
c언어로 만든 동적 할당 printList 부분 재귀함수로 변환 프로그램
C언어의 기초
c언어에서의 연산자(operator)
c언어에서의 각종 명령문
c언어에서의 함수문
c언어 자료구조에서 피보나치 수열을 재귀적으로 하는 프로그램 작성
소개글