수다닷컴

  • 해외여행
    • 괌
    • 태국
    • 유럽
    • 일본
    • 필리핀
    • 미국
    • 중국
    • 기타여행
    • 싱가폴
  • 건강
    • 다이어트
    • 당뇨
    • 헬스
    • 건강음식
    • 건강기타
  • 컴퓨터
    • 프로그램 개발일반
    • C언어
    • 비주얼베이직
  • 결혼생활
    • 출산/육아
    • 결혼준비
    • 엄마이야기방
  • 일상생활
    • 면접
    • 취업
    • 진로선택
  • 교육
    • 교육일반
    • 아이교육
    • 토익
    • 해외연수
    • 영어
  • 취미생활
    • 음악
    • 자전거
    • 수영
    • 바이크
    • 축구
  • 기타
    • 강아지
    • 제주도여행
    • 국내여행
    • 기타일상
    • 애플
    • 휴대폰관련
  • 프로그램 개발일반
  • C언어
  • 비주얼베이직

테트리스 그림자를 어떻게 넣는지 모르겟습니다

츄릅

2023.04.01


질문 제목 : 테트리스 그림자를 넣는방법좀 알려주세요테트리스 그림자 넣기질문 내용 :어떤분이 정리하신것을 봣지만 이해를 못하겟어서 꿈돌이에서 테트리스 소스를 퍼왓는대요 그림자를 어떻게 만들어야하는지 몰르겟습니다.

#include stdio.h
#include stdlib.h
#include string.h
#include ctype.h
#include time.h
#include math.h#include windows.h
#include conio.h#define esc 27
#define enter 13
#define space 32
#define left 75
#define right 77
#define up 72
#define down 80
#define winx 2
#define winy 2
#define winwidth 12
#define winheight 20
#define free_drop 0
#define move_down 1
#define move_left 2
#define move_right 3
#define move_drop 4
#define rotation 5void gotoxy(int x, int y);
void checkkey();
void display();
void update();
void start();
int iscollision();
void fixbrick();
void newbrick();
void barcheck();int brick_x, brick_y;
int brick_shape, brick_rotation;
int win[winheight][winwidth];
int brick_action;
int free_drop_delay = 20;
int free_drop_count;
int brick[7][4][4][4] = {

0, 1, 0, 0,
1, 1, 1, 0,
0, 0, 0, 0,
0, 0, 0, 0,

0, 1, 0, 0,
0, 1, 1, 0,
0, 1, 0, 0,
0, 0, 0, 0,

0, 0, 0, 0,
1, 1, 1, 0,
0, 1, 0, 0,
0, 0, 0, 0,

0, 1, 0, 0,
1, 1, 0, 0,
0, 1, 0, 0,
0, 0, 0, 0,

0, 1, 1, 0,
1, 1, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,

0, 1, 0, 0,
0, 1, 1, 0,
0, 0, 1, 0,
0, 0, 0, 0,

0, 1, 1, 0,
1, 1, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,

0, 1, 0, 0,
0, 1, 1, 0,
0, 0, 1, 0,
0, 0, 0, 0,

1, 1, 0, 0,
0, 1, 1, 0,
0, 0, 0, 0,
0, 0, 0, 0,

0, 1, 0, 0,
1, 1, 0, 0,
1, 0, 0, 0,
0, 0, 0, 0,

1, 1, 0, 0,
0, 1, 1, 0,
0, 0, 0, 0,
0, 0, 0, 0,

0, 1, 0, 0,
1, 1, 0, 0,
1, 0, 0, 0,
0, 0, 0, 0,

1, 1, 0, 0,
0, 1, 0, 0,
0, 1, 0, 0,
0, 0, 0, 0,

0, 0, 1, 0,
1, 1, 1, 0,
0, 0, 0, 0,
0, 0, 0, 0,

0, 1, 0, 0,
0, 1, 0, 0,
0, 1, 1, 0,
0, 0, 0, 0,

0, 0, 0, 0,
1, 1, 1, 0,
1, 0, 0, 0,
0, 0, 0, 0,

0, 1, 1, 0,
0, 1, 0, 0,
0, 1, 0, 0,
0, 0, 0, 0,

0, 0, 0, 0,
1, 1, 1, 0,
0, 0, 1, 0,
0, 0, 0, 0,

0, 1, 0, 0,
0, 1, 0, 0,
1, 1, 0, 0,
0, 0, 0, 0,

1, 0, 0, 0,
1, 1, 1, 0,
0, 0, 0, 0,
0, 0, 0, 0,

0, 1, 0, 0,
0, 1, 0, 0,
0, 1, 0, 0,
0, 1, 0, 0,

0, 0, 0, 0,
1, 1, 1, 1,
0, 0, 0, 0,
0, 0, 0, 0,

0, 1, 0, 0,
0, 1, 0, 0,
0, 1, 0, 0,
0, 1, 0, 0,

0, 0, 0, 0,
1, 1, 1, 1,
0, 0, 0, 0,
0, 0, 0, 0,

1, 1, 0, 0,
1, 1, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,

1, 1, 0, 0,
1, 1, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,

1, 1, 0, 0,
1, 1, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,

1, 1, 0, 0,
1, 1, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0
};
int gameover = 0;
int gamepoint = 0;void main()
{
start();
while (!gameover)
{
display();
checkkey();
update();
sleep(40);
}
}void gotoxy(int x, int y)
{
{
coord pos = { x, y };
setconsolecursorposition(getstdhandle(std_output_handle), pos);
}void start()
{
int x, y;
newbrick();
free_drop_count = free_drop_delay;

for (x = 0; xwinwidth; x++)
{
for (y = 0; ywinheight; y++)
{
if (x == 0 || x == winwidth - 1 ||
y == 0 || y == winheight - 1)
{
win[y][x] = 2;
}
else
{
win[y][x] = 0;
}
}
}
}int iscollision()
{
int x, y;
for (y = 0; y4; y++)
{
for (x = 0; x4; x++)
{
if (brick[brick_shape][brick_rotation][y][x] == 1)
{
if (win[brick_y + y][brick_x + x] != 0)
{
return 1;
}
}
}
}
return 0;
}void fixbrick()
{
int x, y;
for (y = 0; y4; y++)
{
for (x = 0; x4; x++)
{
if (brick[brick_shape][brick_rotation][y][x] == 1)
{
win[brick_y + y][brick_x + x] = 1;
}
}
}
}void newbrick()
{
srand(time(null));
brick_x = winwidth / 2;
brick_y = 1;
brick_shape = rand() % 7;
brick_rotation = 0;
brick_action = free_drop;
}void barcheck()
{
int x, y, bar, i, j;
for (y = 1; ywinheight - 1; y++)
{
bar = 0;
for (x = 1; xwinwidth - 1; x++)
{
bar += win[y][x];
}
if (bar == winwidth - 2)
{
gamepoint++;
if (gamepoint % 20 == 0) free_drop_delay--;
if (free_drop_delay 0) free_drop_delay = 0;
for (i = y - 1; i0; i--)
{
for (j = 1; jwinwidth - 1; j++)
{
win[i + 1][j] = win[i][j];
}
}
}
}
}void display()
{
int x, y;

for (y = 0; ywinheight; y++)
{
gotoxy(winx, winy + y);
for (x = 0; xwinwidth; x++)
{
if (win[y][x] == 1) printf(■);
else if (win[y][x] == 2) printf(□);
else printf( );
}
printf(\n);
}

for (y = 0; y4; y++)
{
for (x = 0; x4; x++)
{
if (brick[brick_shape][brick_rotation][y][x] == 1)
{
gotoxy(winx + (brick_x + x) * 2, winy + brick_y + y);
printf(■);
}
}
}

gotoxy(30, 25);
printf(point = %d, gamepoint);
}void update()
{
switch (brick_action)
{
case move_drop:
do{
brick_y++;
} while (!iscollision());
brick_y--;
if (brick_y == 1) gameover = 1;
fixbrick();
barcheck();
newbrick();
free_drop_count = free_drop_delay;
brick_action = free_drop;
break;
case move_left:
brick_x--;
if (iscollision()) brick_x++;
brick_action = free_drop;
break;
case move_right:
brick_x++;
if (iscollision()) brick_x--;
brick_action = free_drop;
break;
case move_down:
brick_y++;
if (iscollision())
{
brick_y--;
if (brick_y == 1) gameover = 1;
fixbrick();
barcheck();
newbrick();
free_drop_count = free_drop_delay;
}
brick_action = free_drop;
break;
case free_drop:
free_drop_count--;
if (free_drop_count 0)
{
free_drop_count = free_drop_delay;
brick_action = move_down;
}
break;
case rotation:
brick_rotation++;
if (brick_rotation 3) brick_rotation = 0;
if (iscollision())
{
brick_rotation--;
if (brick_rotation 0) brick_rotation = 3;
}
brick_action = free_drop;
break;
default:
break;
}
}void checkkey()
{
int key;
if (_kbhit() != 0)
{
key = _getch();
if (key == 224)
{
key = _getch();
}
switch (key)
{
case esc:
gameover = 1;
break;
case enter:
break;
case space:
brick_action = move_drop;
break;
case left:
brick_action = move_left;
break;
case right:
brick_action = move_right;
break;
case up:
brick_action = rotation;
break;
case down:
brick_action = move_down;
break;
default:
brick_action = free_drop;
break;
}
}
}

신청하기





COMMENT

댓글을 입력해주세요. 비속어와 욕설은 삼가해주세요.

  • 푸른잎

    뭘보고 공부하면 저정도라도 타이핑가능할가요?ㅜ

  • 횃대비

    저가 퍼온거라서 그냥 보고 소스 공부할려고 하는거라서요. 써주시면 안될까요??

  • 세움

    4차원배열 ㄷㄷ하군요

번호 제 목 글쓴이 날짜
2700070 while문 , 3의배수 출력하는 프로그램좀 짜주세욤. 횃불 2025-07-01
2700041 초보인데요 ㅎ 배열안에 배열을 집어넣을수 있나요?? 헛장사 2025-07-01
2700012 배열// (1) 전갈자리 2025-07-01
2699895 무한루프에 빠집니다.!! 해결좀부탁드려요 (10) 선아 2025-06-30
2699842 질문을 너무 많이 하네여.....죄송.... (2) 해님꽃 2025-06-29
2699816 오류 질문입니다.. (1) 해비치 2025-06-29
2699763 질문입니다 ! 꼭 좀 도와주세요ㅠㅠ (2) 미라 2025-06-28
2699555 c언어 다항식을 입력을 했는데 왜 출력이 안될까요? 피스케스 2025-06-27
2699528 C언어 포인터연산 질문입니다. (3) 안녕나야 2025-06-26
2699476 끌어올림;;달력 짜봤는데요 이 소스 줄일 수 있나요? - 스샷첨부 (2) 클라우드 2025-06-26
2699444 [좀 급함] system("explorer [주소] ") 문에 변수를 사용할 수 있나요? 알 2025-06-26
2699415 파일//read//와 배열 아란 2025-06-25
2699386 구조체 안에 일부분만 char 배열에 복사하려면 어떻게 해야하나요? (1) 미즈 2025-06-25
2699361 연결리스트 정렬하는 부분에 대해서 질문 드립니다 아이처럼 2025-06-25
2699304 [기초]아직 안주무시는분 계신가요..?포인터배열? 좀 도와주세요. 놀리기 2025-06-24
2699272 printf() 함수이용해서 프로그램 만들기 질문요! (5) 다가 2025-06-24
2699221 PUSH와 POP코드를 더 간단하게 어떻게 해야할까요? 파라미 2025-06-24
2699192 설치오류가 자꾸 나요 한번봐주세여~ (1) 소녀틳향기 2025-06-23
2699161 for loop안에 있는 if문 (9) Orange 2025-06-23
2699105 링크더리스트 이전 링크값 출력함수. 꼬꼬마 2025-06-23
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

수다닷컴 | 여러분과 함께하는 수다토크 커뮤니티 수다닷컴에 오신것을 환영합니다.
사업자등록번호 : 117-07-92748 상호 : 진달래여행사 대표자 : 명현재 서울시 강서구 방화동 890번지 푸르지오 107동 306호
copyright 2011 게시글 삭제 및 기타 문의 : clairacademy@naver.com