[C++]°­ÁÂ(19)<--Ŭ·¡½º ¹è¿­ ¹× Æ÷ÀÎÅÍ





Ŭ·¡½ºÀÇ Á¤ÀÇ´Â Çì´õ ÆÄÀÏ¿¡ µÎ°í ¸â¹ö ÇÔ¼ö´Â µû·Î CPP ÆÄÀÏÀ» ¸¸µé¾î Á¤ÀÇ
ÇÑ´Ù. brick Ŭ·¡½º´Â ¸» ±×´ë·Î º®µ¹ Çϳª¸¦ Á¤ÀÇÇϴ Ŭ·¡½ºÀÌ´Ù. µ¥ÀÌÅÍ ¸â
¹ö·Î´Â º®µ¹ÀÇ À§Ä¡, »ö»ó, ÇöÀç ¸ð¾çµîÀ» °¡Áö¸ç ¸â¹ö ÇÔ¼ö·Î´Â º®µ¹µéÀ» ȸ
Àü, À̵¿, °Ë»çÇÏ´Â ÇÔ¼öµéÀÌ ÀÖ´Ù. shtet1.cÀÇ ÀÏ¹Ý ÇÔ¼öµéÀÌ ´ëºÎºÐ brick
Ŭ·¡½ºÀÇ ¸â¹ö ÇÔ¼ö·Î ¼Ò¼ÓµÇ¾ú´Ù.

// BRICK.CPP - brick classÀÇ ¸â¹ö ÇÔ¼ö Á¤ÀÇ
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <dos.h>
#include "brick.h"

extern int pat[7][32];           // shtet2.cppÀÇ º¯¼ö ÂüÁ¶
extern int brickpatnum[7];
extern int tet[14][25];
extern int score,gd;

void brick::make() {
 nowbrick=random(9);   // »õ·Î¿î º®µ¹À»  ¸¸µé°í È­¸é¿¡ Ãâ·Â
 nowx=40;nowy=3;nowrot=0;
 nowcolor=random(7)+9;           // »ö»óÀº ¹àÀº °èÅëÀ¸·Î¸¸
   if (gd==7) nowcolor &= 0xfe; // HGCÀÎ °æ¿ì ¹ØÁÙ ¼Ó¼º ±ÝÁö
}
/* º®µ¹À» Ç¥½ÃÇϰųª »èÁ¦ flag°¡ 0ÀÌ¸é »èÁ¦. 1À̸é Ãâ·Â */
void brick::outbrick(int flag)
{
char c;
int i;
textcolor(nowcolor);
if (flag==0) c=' ';else c=178;/* flag°ª¿¡ µû¶ó Ãâ·ÂÇÒ ¹®ÀÚ°áÁ¤ */
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);}
}

/* º®µ¹À» ÇÑ Ä­ ¾Æ·¡·Î ¶³¾î¶ß¸².ºó °ø°£¿¡¼­ ¶³¾îÁö¸é 1À» return.*/
/* ¹Ù´ÚÀ̳ª ½×ÀÎ º®µ¹¿¡ ºÎµúÄ¡¸é º®µ¹ Á¦°ÅÈÄ 0À» returnÇÏ¿©    */
/* »õ·Î¿î º®µ¹À» ¸¸µéµµ·Ï ÇÑ´Ù.                                 */
int brick::downmove()
{
if (whataround((nowx-30)/2,nowy-2+1)!=0) {isfull();return 0;}
outbrick(0);     /* ¿ø·¡ ÀÚ¸® Áö¿ì°í ÇÑ Ä­ ¹Ø¿¡ ´Ù½Ã ±×¸² */
nowy++;
outbrick(1);
return 1;
}
/* ÁÂÃø À̵¿. ÁÂÃøÀÌ º®À̸é À̵¿ÇÏÁö ¾Ê´Â´Ù. */
void brick::leftmove()
{
if (whataround((nowx-30)/2-1,nowy-2)!=0)return;
outbrick(0);
nowx-=2;
outbrick(1);
}
/* ¿ìÃø À̵¿. ¿ìÃøÀÌ º®À̸é À̵¿ÇÏÁö ¾Ê´Â´Ù. */
void brick::rightmove()
{
if (whataround((nowx-30)/2+1,nowy-2)!=0)return;
outbrick(0);
nowx+=2;
outbrick(1);
}
/* ȸÀü.ȸÀüÇÒ ¼ö ¾ø´Â °ø°£À̸é ȸÀüÇÏÁö ¾Ê´Â´Ù */
void brick::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;outbrick(0);
nowrot=imsi2;outbrick(1);
}
/* ÁÖº¯¿¡ ¹«¾ùÀÌ ÀÖ´ÂÁö ÆǺ°ÇØÁØ´Ù. Àμö(x, y)´Â ¹è¿­»óÀÇ
ÁÂÇ¥ÀÌ´Ù. */
/* ºó °ø°£À̸é 0,½×ÀÎ º®µ¹¿¡ ºÎµúÄ¡¸é 1, º®¿¡ ºÎµúÄ¡¸é 2¸¦
return   */
int brick::whataround(int x,int y)
{
int i,j,k;
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 brick::isfull()
{
int i,j,k;
int check,check2=0;
score++;
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;
for (i=22;i>=0;i--){     /* ÇÑ ¶óÀÎÀÌ ´Ù á´ÂÁö °Ë»ç */
 check=0;
 for (j=1;j<13;j++)
 if (tet[j][i]==0) check=1;
 if (check==0){        /* ´Ù Âù ¶óÀÎÀÌ ¹ß°ßµÇ¸é »èÁ¦ÇÑ´Ù.  */
   check2++;           /* À§ÀÇ ¶óÀÎÀ» ¾Æ·¡·Î º¹»çÇØÁØ´Ù */
   for (k=i-1;k>0;k--) /* ±× ¶óÀÎÀ» ´Ù½Ã °Ë»çÇϱâ À§ÇØ i´Â */
     for (j=1;j<13;j++) /*  ±× ÀÚ¸®¿¡  ¹­¾î µÎ¾î¾ß  ÇÑ´Ù.*/
       tet[j][k+1]=tet[j][k];
   i++;
   movetext(32,2,55,i,32,3);    // È­¸é ó¸®. ¾Æ·¡·Î ¶³¾î¶ß¸²
   }
 }
switch (check2) {   // Á¡¼ö °è»ê
 case 0:break;
 case 1:score+=9;
        break;
 case 2:score+=29;
        break;
 case 3:score+=79;
        break;
 case 4:score+=149;      // 4ÁÙÀ» Çѹø¿¡ ¾ø¾Ö¸é Ưº° ó¸®
        char buffer[20*5*2];
        gettext(35,10,54,14,buffer);
        textattr(0xb4);
        gotoxy(36,11);
        cprintf(" Congraturation ");
        gotoxy(36,12);
        cprintf("    Tetris !!   ");
        gotoxy(36,13);
        cprintf("    150 score   ");
        for (i=200;i<700;i+=20)
          {
          sound(i);
          delay(50);
          }
        nosound();
        textbackground(1);
        puttext(35,10,54,14,buffer);

        break;
 }
 gotoxy(5,16);
 if (gd==7) textattr(0x70);
   else textattr(0x40);
 cprintf("%d jum  ",score);     // Á¡¼ö °»½Å
 textbackground(0);
if (check2!=0 && check2!=4) {    // ÇÑ ÁÙ ¾ø¾Ö¸é sound ó¸®
 sound(500);
 delay(50);
 sound(400);
 delay(50);
 sound(300);
 delay(50);
 nosound();
 }
}
                  <<brick.cpp>>


À̾ °è¼ÓµË´Ï´Ù. ==============>>>>>>>


--------------------------------------------------------------------------------