디시인사이드 갤러리

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

갤러리 본문 영역

누가 질문한건데...

warota(221.150) 2009.10.13 21:49:42
조회 114 추천 0 댓글 4



 아래 링크에서 퍼옴.


 제가 c공부 하다가 테트리스를 하게 되었는데... 변형해서 2인용으로 만들어야 하는데..

 

한쪽은 잘 내려오고 점수도 올라가는데

 

다른 한쪽은 도형이 아예 내려오지가 않네요..ㅋ

 

뭐가 잘못됬는지 좀 알려주세요

 

터보c로 돌립니다..

 

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <dos.h>

#define LEFT 75
#define RIGHT 77
#define UP 72
#define DOWN 80
#define ESC 27
#define a 97
#define d 100
#define w 119
#define s 115

void brick(int flag);
void brick1(int flag);
void nextbrick(int flag);
void nextbrick1(int flag);
void leftmove();
void rightmove();
int downmove();
void rotate();
void leftmove1();
void rightmove1();
int downmove1();
void rotate1();
int whataround(int, int);
void isfull();
int inkey();
void printstage();
void printstage1();
int whataround1(int, int);
void isfull1();
int inkey1();
void Cursor_ON();
void Cursor_OFF();
int tet[19][25];
int tet1[19][25];
int pat[9][40]=
{
 {0,0,2,0,4,0,-2,0,0,0,0,1,0,-1,0,-2,},
 {0,0,-2,0,0,-1,-2,-1,},
 {0,0,-2,0,0,-1,2,-1,0,0,0,1,-2,0,-2,-1,},
 {0,0,-2,-1,0,-1,2,0,0,0,-2,0,-2,1,0,-1,},
 {0,0,-2,0,2,0,0,0,0,1,0,-1,},
 {0,0,2,0,0,1,0,0,0,0,2,0,0,-1,0,0,0,0,-2,0,0,-1,0,0,0,0,-2,0,0,1,0,0},
 {0,0,0,-1,2,0,4,0,0,0,-2,0,0,-1,0,-2,0,0,-2,0,-4,0,0,1,0,0,2,0,0,1,0,2},
 {0,0,-2,0,-4,0,0,-1,0,0,-2,0,0,1,0,2,0,0,0,1,2,0,4,0,0,0,2,0,0,-1,0,-2},
 {0,0,-2,0,2,0,0,1,0,0,0,-1,0,1,2,0,0,0,-2,0,2,0,0,-1,0,0,-2,0,0,-1,0,1}
};
int pat1[9][40]=
{
 {0,0,2,0,4,0,-2,0,0,0,0,1,0,-1,0,-2,},
 {0,0,-2,0,0,-1,-2,-1,},
 {0,0,-2,0,0,-1,2,-1,0,0,0,1,-2,0,-2,-1,},
 {0,0,-2,-1,0,-1,2,0,0,0,-2,0,-2,1,0,-1,},
 {0,0,-2,0,2,0,0,0,0,1,0,-1,},
 {0,0,2,0,0,1,0,0,0,0,2,0,0,-1,0,0,0,0,-2,0,0,-1,0,0,0,0,-2,0,0,1,0,0},
 {0,0,0,-1,2,0,4,0,0,0,-2,0,0,-1,0,-2,0,0,-2,0,-4,0,0,1,0,0,2,0,0,1,0,2},
 {0,0,-2,0,-4,0,0,-1,0,0,-2,0,0,1,0,2,0,0,0,1,2,0,4,0,0,0,2,0,0,-1,0,-2},
 {0,0,-2,0,2,0,0,1,0,0,0,-1,0,1,2,0,0,0,-2,0,2,0,0,-1,0,0,-2,0,0,-1,0,1}
};

int brickpatnum[9]={2, 1, 2, 2, 2, 4, 4, 4, 4};
int brickpatnum1[9]={2, 1, 2, 2, 2, 4, 4, 4, 4};
int i, j, k, score, score1;
int newbrick, nowbrick, nowrot, newbrick1, nowbrick1, nowrot1;
int nowx, nowy, nowx1, nowy1;
int key, quitflag, key1, quitflag1;
long de, nowdelay, de1, nowdelay1;


main() {
 Cursor_OFF();
 nowdelay=50000;
 nowdelay1=40000;
 randomize();

 clrscr();
 score=0;
        score1=0;
 printstage();
 printstage1();
 newbrick=random(9);
 newbrick1=random(9);
 nextbrick(1);
 nextbrick1(1);
 for(;;){
  nextbrick(0);
  nowbrick=newbrick;
  newbrick=random(9);
  nextbrick(1);
  nowx=50;
  nowy=3;
  nowrot=0;
  brick(1);

  nextbrick1(0);
  nowbrick1=newbrick1;
  newbrick1=random(9);
  nextbrick1(1);
  nowx1=20;
  nowy1=3;
  nowrot1=0;
  brick1(1);
 if(whataround((nowx-30)/2, nowy-2)!=0){
  gotoxy(45, 15);
  printf("G A M E  O V E R");
  Cursor_ON();
  exit(0);
 }


 for(;;){
  if(downmove()==0)
   break;
   quitflag=0;
  for(de=0; de<nowdelay; de++){
   key=inkey();
   switch(key){
    case LEFT:
     leftmove();
     break;
    case UP:
     rotate();
     break;
    case RIGHT:
     rightmove();
     break;
    case DOWN:
     while(downmove());
      quitflag=1;
      de=nowdelay;
      break;
     case ESC:

     clrscr();
     Cursor_ON();
     exit(0);
     }
    }
    if(quitflag) break;
   }
 for(;;){
  if(downmove1()==0)
   break;
   quitflag1=0;
  for(de1=0; de1<nowdelay1; de1++){
   key1=inkey1();
   switch(key1){
    case \'a\':
     leftmove1();
     break;
    case \'w\':
     rotate1();
     break;
    case \'d\':
     rightmove1();
     break;
    case \'s\':
     while(downmove1());
      quitflag1=1;
      de1=nowdelay1;
      break;
     case ESC:

     clrscr();
     Cursor_ON();
     exit(0);
     }
    }
    if(quitflag1) break;
   }
  }
 }

 void printstage(){
  for(i=0; i<25; i++){
   gotoxy(i+41, 1);
   putch(0xcd);
   gotoxy(i+41, 25);
   putch(0xcd);
  }

  for(i=1; i<25; i++){
   gotoxy(41, i);
   putch(0xba);
   gotoxy(66, i);
   putch(0xba);
  }

  gotoxy(41, 1);
  putch(0xc9);
  gotoxy(66, 1);
  putch(0xbb);
  gotoxy(41, 25);
  putch(0xc8);
  gotoxy(66, 25);
  putch(0xbe);


  for(i=0; i<25; i++)
   for(j=5; j<19; j++)
    if(i==23 || j==5 || j==18)
     tet[j][i]=2;
    else
     tet[j][i]=0;

  gotoxy(70, 2);
  printf("NEXT");
  gotoxy(70, 10);
  printf("SCORE : %d ", score);


 }

 void printstage1(){
  for(i=0; i<25; i++){
   gotoxy(i+11, 1);
   putch(0xcd);
   gotoxy(i+11, 25);
   putch(0xcd);
  }

  for(i=1; i<25; i++){
   gotoxy(11, i);
   putch(0xba);
   gotoxy(36, i);
   putch(0xba);
  }


  gotoxy(11, 1);
  putch(0xc9);
  gotoxy(36, 1);
  putch(0xbb);
  gotoxy(11, 25);
  putch(0xc8);
  gotoxy(36, 25);
  putch(0xbe);


  for(i=0; i<25; i++)
   for(j=5; j<19; j++)
    if(i==23 || j==5 || j==18)
     tet1[j][i]=2;
    else
     tet1[j][i]=0;


  gotoxy(3, 2);
  printf("NEXT");
  gotoxy(1, 10);
  printf("SCORE : %d ", score1);
 }

 int inkey(void){
  if(kbhit())
   return getch();
 }
 int inkey1(void){
  if(kbhit())
   return getch();
 }

 void brick(int flag){
  char c;
  if(flag==0)
   c=\' \';
  else
   c=219;

  for(i=0; i<4; i++){
   gotoxy(nowx+pat[nowbrick][nowrot*8+i*2], nowy+pat[nowbrick][nowrot*8+i*2+1]);
   putch(c);
   putch(c);
  }
 }

 void nextbrick(int flag){
  char c;
  if(flag==0)
   c=\' \';
  else
   c=219;

  for(i=0; i<4; i++){
   gotoxy(73+pat[newbrick][i*2], 6+pat[newbrick][i*2+1]);
   putch(c);
   putch(c);
  }
 }
 void brick1(int flag){
  char c;
  if(flag==0)
   c=\' \';
  else
   c=219;

  for(i=0; i<4; i++){
   gotoxy(nowx1+pat1[nowbrick1][nowrot1*8+i*2], nowy1+pat1[nowbrick1][nowrot1*8+i*2+1]);
   putch(c);
   putch(c);
  }
 }

 void nextbrick1(int flag){
  char c;
  if(flag==0)
   c=\' \';
  else
   c=219;

  for(i=0; i<4; i++){
   gotoxy(6+pat1[newbrick1][i*2], 6+pat1[newbrick1][i*2+1]);
   putch(c);
   putch(c);
  }
 }
 int downmove() {
  if(whataround((nowx-30)/2, nowy-2+1)!=0){
   isfull();
   return 0;
  }
  brick(0);
  nowy++;
  brick(1);
  return 1;
 }

 void leftmove() {
  if(whataround((nowx-30)/2-1, nowy-2)!=0)
   return;
  brick(0);
  nowx-=2;
  brick(1);
 }

 void rightmove(){
  if(whataround((nowx-30)/2+1, nowy-2)!=0)
   return;
  brick(0);
  nowx+=2;
  brick(1);
 }

 void rotate() {
  int imsi, imsi2;
  imsi=nowrot;
  nowrot++;
  if(nowrot==brickpatnum[nowbrick])
   nowrot=0;
  if(whataround((nowx-30)/2, nowy-2)!=0){
   nowrot=imsi;
   return;
  }
  imsi2=nowrot;
  nowrot=imsi;
  brick(0);
  nowrot=imsi2;
  brick(1);
 }

     int downmove1() {
 if(whataround1((nowx1-30)/2, nowy1-2+1)!=0){
  isfull1();
  return 0;
 }
 brick1(0);
 nowy1++;
 brick1(1);
 return 1;
 }

 void leftmove1() {
  if(whataround1((nowx1-30)/2-1, nowy1-2)!=0)
   return;
  brick1(0);
  nowx1-=2;
  brick1(1);
 }

 void rightmove1(){
  if(whataround1((nowx1-30)/2+1, nowy1-2)!=0)
   return;
  brick1(0);
  nowx1+=2;
  brick1(1);
 }

 void rotate1() {
  int imsi, imsi2;
  imsi=nowrot1;
  nowrot1++;
  if(nowrot1==brickpatnum1[nowbrick1])
   nowrot1=0;
  if(whataround1((nowx1-30)/2, nowy1-2)!=0){
   nowrot1=imsi;
   return;
  }
  imsi2=nowrot1;
  nowrot1=imsi;
  brick1(0);
  nowrot1=imsi2;
  brick1(1);
 }

 int whataround(int x, int y) {
  k=0;
  for(i=0; i<4; i++){
   j=tet[x+pat[nowbrick][nowrot*8+i*2]/2]
     [y+pat[nowbrick][nowrot*8+i*2+1]];
   if(j>k)
   k=j;
  }
  return k;
 }

 void isfull() {
  int check, check2;
  for(i=0; i<4; i++)
   tet[(nowx-30)/2+pat[nowbrick][nowrot*8+i*2]/2]
   [nowy-2+pat[nowbrick][nowrot*8+i*2+1]]=1;
   check2=0;
  for(i=22; i>=0; i--){
   check=0;
   for(j=5; j<18; j++)
    if(tet[j][i]==0)
    check=1;

   if(check==0){
    score+=10;
    gotoxy(70, 10);
    printf("SCORE : %d ", score);
    check2=1;
    for(k=i-1; k>0; k--)
     for(j=1; j<13; j++)
      tet[j][k+1]=tet[j][k];
      i++;
   }
  }

  if(check2==0)
   return;
  for(i=0; i<23; i++)
   for(j=1; j<13; j++){
    gotoxy(j*2+30, i+2);
    if(tet[j][i]==0){
     putch(\' \');
     putch(\' \');
    }
    else {
     putch(219);
     putch(219);
    }
   }
  }

 int whataround1(int x, int y) {
  k=0;
  for(i=0; i<4; i++){
   j=tet1[x+pat1[nowbrick1][nowrot1*8+i*2]/2]
     [y+pat1[nowbrick1][nowrot1*8+i*2+1]];
   if(j>k)
   k=j;
  }
  return k;
 }

 void isfull1() {
  int check, check2;
  for(i=0; i<4; i++)
   tet1[(nowx1-30)/2+pat1[nowbrick1][nowrot1*8+i*2]/2]
   [nowy1-2+pat1[nowbrick1][nowrot1*8+i*2+1]]=1;
   check2=0;
  for(i=22; i>=0; i--){
   check=0;
   for(j=5; j<18; j++)
    if(tet1[j][i]==0)
    check=1;

   if(check==0){
    score1+=10;
    gotoxy(1, 10);
    printf("SCORE : %d ", score1);
    check2=1;
    for(k=i-1; k>0; k--)
     for(j=1; j<13; j++)
      tet1[j][k+1]=tet1[j][k];
      i++;
   }
  }

  if(check2==0)
   return;
  for(i=0; i<23; i++)
   for(j=1; j<13; j++){
    gotoxy(j*2+30, i+2);
    if(tet1[j][i]==0){
     putch(\' \');
     putch(\' \');
    }
    else {
     putch(219);
     putch(219);
    }
   }
  }
  void Cursor_ON() {
   union REGS r;
   r.h.ah=1;
   r.h.ch=15;
   r.h.cl=16;
   int86(0x10, &r, &r);
  }

  void Cursor_OFF() {
   union REGS r;
   r.h.ah=1;
   r.h.ch=17;
   r.h.cl=16;
   int86(0x10, &r, &r);
  }

추천 비추천

0

고정닉 0

0

원본 첨부파일 1

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 힘들게 성공한 만큼 절대 논란 안 만들 것 같은 스타는? 운영자 24/06/10 - -
이슈 [디시人터뷰] 웃는 모습이 예쁜 누나, 아나운서 김나정 운영자 24/06/11 - -
164045 오늘같은 날일수록 더욱더 공부를 해야한다 [4] shunman(220.69) 09.12.24 102 0
164042 컴파일러 없이 컴파일하는 법 좀 알려주세여.. [10] 일학년(123.109) 09.12.24 186 0
164041 클래식을 들으며 마음을 정화합니다 [1] algo갤로그로 이동합니다. 09.12.24 48 0
164040 코스닥 상장사 vs 코스피 상장사 횽들이라면 어딜가겠어? [8] 목이삐끗갤로그로 이동합니다. 09.12.24 152 0
164039 리버스 엔지니어링 에 대해 잘 아는횽 있어? [17] (211.215) 09.12.24 223 0
164038 10가지 문장 [3] ㅎ3(112.222) 09.12.24 107 0
164036 3명이서 노르망디 상륙작전 구현하기.swf [6] 숙신갤로그로 이동합니다. 09.12.24 160 0
164035 지원서 접수했다. [12] 숙신갤로그로 이동합니다. 09.12.24 213 0
164034 여친이 없는건 이런 경우도 있어 [4] 아주아슬갤로그로 이동합니다. 09.12.24 179 0
164033 프로그래머 너무 월급 적게 준다. 솔직히 [4] dd(211.55) 09.12.24 239 0
164032 크리스마스때 여친 [4] ㅁㅁ(210.117) 09.12.24 191 0
164031 버뮤다 삼각루저 [2] 숙신갤로그로 이동합니다. 09.12.24 153 0
164029 스타쉬피스 이야기 [5] ㅎ3(112.222) 09.12.24 130 0
164028 이해하면 무서운 이야기(2) [22] 숙신갤로그로 이동합니다. 09.12.24 300 0
164027 이번에 베타로 무료다운 되는 비쥬얼 2010 써본사람? [10] 까북갤로그로 이동합니다. 09.12.24 149 0
164026 횽들을 위한 크리스마스 선물! [2] 출입증갤로그로 이동합니다. 09.12.24 94 0
164025 형아들 논리 연산자 질문좀 c언어.. [11] 으흙흙갤로그로 이동합니다. 09.12.24 150 0
164024 이해하면 무서운 얘기라는데 이거 보고 꼴리면 중증인가? [13] ㅎ3(112.222) 09.12.24 226 0
164023 초밥술사가 드리는 크리스마스 선물 [2] 초밥술사갤로그로 이동합니다. 09.12.24 85 0
164022 제가 넷북을 샀는데 OS를 깔아야하는데 윈도우7 깔아도되나요?? [1] 옹덩이(117.20) 09.12.24 108 0
164021 적분이 드리는 크리스마스 선물 [5] ∫ 2t dt=t²+c갤로그로 이동합니다. 09.12.24 141 0
164019 c언어 입출력 스트림에 관해서 질문좀여 형아들 ㅠㅠ 뉴비가 질문좀해영.. [8] 으흙흙갤로그로 이동합니다. 09.12.24 87 0
164018 횽들을 위한 내 작은 이브 선물 @"@ [2] 이웃집또테러갤로그로 이동합니다. 09.12.24 110 0
164016 오늘 여친이랑 놀러가는 애들은 좋겠다 [8] nRST갤로그로 이동합니다. 09.12.24 227 0
164014 숙신은 봅니다 [13] 아주아슬갤로그로 이동합니다. 09.12.24 143 0
164013 Happy holidays sh(68.147) 09.12.24 68 0
164012 ↓ 이거 말하는거임? [2] 숙신갤로그로 이동합니다. 09.12.24 103 0
164011 근데 크리스마스 예수생일 아님 ㅇㅇ [2] dd(211.55) 09.12.24 114 0
164010 오늘 명동에서 누가 퍼포먼스 한다 안그랬음? [6] 아주아슬갤로그로 이동합니다. 09.12.24 114 0
164009 난 무소의 뿔처럼 와우를 할꺼다. [2] Gromit갤로그로 이동합니다. 09.12.24 108 0
164008 김성일 [9] nRST갤로그로 이동합니다. 09.12.24 110 0
164007 오늘 야근하는 횽들을 위한 작은 선물... [2] 물속의다이아갤로그로 이동합니다. 09.12.24 103 0
164006 django 할줄아는 애 있냐? [13] dd(211.55) 09.12.24 121 0
164005 크리스마스 카드가 두장 남았네요. [4] Evergrin(116.42) 09.12.24 72 0
164004 타느님 [2] 유리한갤로그로 이동합니다. 09.12.24 43 0
164002 내가 봤을 때 신입사원의 변천화 응앜(121.133) 09.12.24 137 0
164001 질문 하나만... vb관련 [4] 강화인간갤로그로 이동합니다. 09.12.24 69 0
164000 오늘 야근 하는 횽들은 없죠? [4] 물속의다이아갤로그로 이동합니다. 09.12.24 93 0
163999 너님들 중 일본 좋아하는 새키들 있냐? [4] ㅎ3(112.222) 09.12.24 115 0
163998 국회의원도 개소리하면 혼난다는 판례 [3] Pupustory갤로그로 이동합니다. 09.12.24 110 0
163997 아침부터 기분이 꼬질꼬질하다. [4] rntjr갤로그로 이동합니다. 09.12.24 127 0
163996 돈 벌면 뭐에 쓰냣 [3] 응앜(121.133) 09.12.24 93 0
163995 자자 좋은 아침입니다 [3] 온순한감자갤로그로 이동합니다. 09.12.24 81 0
163994 아직 군대를 가지 않은 프갤러들은 봅니다.jpg [1] 숙신갤로그로 이동합니다. 09.12.24 154 0
163993 상쾌한_아침을_노래와_함께.swf 숙신갤로그로 이동합니다. 09.12.24 74 0
163991 황성재님 멀티터치 한글 입력 뉴스랑 시연동영상 의문 [2] 메탈스피릿갤로그로 이동합니다. 09.12.24 210 0
163990 형들 간단한건데 하나만 봐줘 ㅠㅠ [2] 카카(218.147) 09.12.24 76 0
163988 폭발간지 황성재씨 기사떴네요 ㅋㅋㅋ(121.141) 09.12.24 151 0
163984 언어 공부 언어(118.221) 09.12.24 59 0
163983 ㅠ_ㅠ 형들 도와줘 [1] 우동국물갤로그로 이동합니다. 09.12.24 65 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2