[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>>
ÀÌ¾î¼ °è¼ÓµË´Ï´Ù. ==============>>>>>>>
--------------------------------------------------------------------------------