[C++]°ÁÂ(20)<--Ŭ·¡½º ¹è¿ ¹× Æ÷ÀÎÅÍ
brick.cpp¿¡¼ ¿ì¼± ÁÖ¸ñÇÒ °ÍÀº ¼±µÎÀÇ extern ¼±¾ðÀÌ´Ù. º®µ¹ÀÇ ¸ð¾çÀ» Á¤ÀÇ
ÇÑ pat ¹è¿°ú brickpatnum ¹è¿Àº shtet2.cpp¿¡ Á¤ÀǵǾî ÀÖÀ¸¸ç, °ÔÀÓ È¸é
ÀÇ °¢ °ÝÀÚ »óŸ¦ º¸°üÇÏ´Â tet ¹è¿µµ shtet2.cpp¿¡ Á¤ÀǵǾî ÀÖ´Ù.
¿ÜºÎ module¿¡ ÀÖ´Â º¯¼ö¸¦ ÂüÁ¶Çϱâ À§Çؼ´Â ¹Ýµå½Ã extern ¼±¾ðÀ¸·Î ±× º¯
¼ö°¡ ¿ÜºÎ¿¡ ÀÖÀ½À» ¾Ë·Á¾ß ÇÑ´Ù. ÇÔ¼ö´Â ±â¾ïºÎ·ù°¡ ¿ø·¡ externÀ̱⠶§¹®¿¡
º°µµÀÇ Á¶Ä¡¸¦ ÃëÇÏÁö ¾Ê´õ¶óµµ ¿ÜºÎ ¸ðµâ·Î ¾Ë·ÁÁö°í »óÈ£ È£ÃâÀÌ °¡´ÉÇÏÁö¸¸
º¯¼ö´Â extern ¼±¾ð¿¡ ÀÇÇØ ±× º¯¼ö°¡ ¿ÜºÎ¿¡ Á¤ÀǵǾî ÀÖÀ½À» ¾Ë·Á ÁÖ¾î¾ß ¸µ
Å©½Ã¿¡ ÀÌ»ó¾øÀÌ ¿¬°áµÈ´Ù.
brick.cpp¿¡¼ Á¤ÀÇÇÑ brick Ŭ·¡½ºÀÇ ¸â¹ö ÇÔ¼öµéÀº ´ëºÎºÐ shtet1.c¿¡ ºñÇØ
Å©°Ô ¹Ù²îÁö ¾Ê¾ÒÁö¸¸ isfull ÇÔ¼ö´Â ´Ù¼Ò ¸¹ÀÌ º¯°æµÇ¾ú´Ù. ¿ì¼± VGA¸¦ ÀǽÄ
ÇÏ¿© º®µ¹ÀÌ ¾Ë·Ï´Þ·ÏÇÑ »ö»óÀ» °¡Áú ¼ö ÀÖµµ·Ï ¹Ù²î¾ú±â ¶§¹®¿¡ ȸéÀ» °»½Å
ÇÏ´Â °úÁ¤ÀÌ ¹Ù²î¾ú´Ù. º®µ¹ÀÌ ¸ðµÎ °°Àº »ö»óÀÏ °æ¿ì´Â ¹è¿ÀÇ µ¥ÀÌÅ͸¸ Á¶ÀÛ
ÇÑ ÈÄ ÇѲ¨¹ø¿¡ º®µ¹À» ´Ù½Ã ±×·ÈÁö¸¸ °¢ º®µ¹ÀÌ »ö»óÀ» °¡Áö°í ÀÖÀ» °æ¿ì´Â
¹è¿ ³»¿¡ »ö»ó¿¡ °üÇÑ Á¤º¸¸¦ º¸°üÇÏÁö ¾Ê±â ¶§¹®¿¡ ¹è¿À» ÂüÁ¶ÇÏ¿© ´Ù½Ã ±×
¸± ¼ö ¾ø´Ù.
±×·¡¼ ÇÑ ÁÙÀÌ »èÁ¦µÉ ¶§¸¶´Ù ȸéÀ» ±×´ë·Î ÀÐ¾î¼ ÇÑ ÁÙÀ» ³»¸®µµ·Ï º¯°æ
µÇ¾ú´Ù. ¿©±â¿¡ »ç¿ëµÇ´Â ÇÔ¼ö´Â movetext ÇÔ¼öÀ̸ç Àß ¾Ë¾ÆµÎ¸é ÅؽºÆ® ¸ðµå
ÇÁ·Î±×·¡¹Ö½Ã¿¡ À¯¿ëÇÏ°Ô ¾µ ¼ö ÀÖ´Ù. ÀÌ ÇÔ¼ö¿¡ °üÇÑ ÀÚ¼¼ÇÑ »çÇ×Àº ·¹ÆÛ·±½º
¸¦ ÂüÁ¶Çϵµ·Ï Ç϶ó.
°ÔÀÓ¿¡ Á¡¼ö äÁ¡ ±â´ÉÀÌ Ãß°¡µÊÀ¸·Î½á isfull ÇÔ¼ö¿¡¼ »èÁ¦ÇÑ ÁÙ ¼ö¿¡ ºñ·Ê
ÇÏ¿© Á¡¼ö¸¦ Áõ°¡½ÃÅ°°í ÀÖ´Ù. ƯÈ÷ 4ÁÙÀÌ ÇѲ¨¹ø¿¡ ¾ø¾îÁú °æ¿ì´Â(ÀÌ °æ¿ì¸¦
tetris¶ó°í ÇÔ) Á¡¼ö¸¦ ³ô°Ô ÁÜ°ú µ¿½Ã¿¡ sound¸¦ »ö´Ù¸£°Ô Ãâ·ÂÇÏ°í ȸé»ó¿¡
tetris ¹®ÀÚ¿À» Ãâ·ÂÇÑ´Ù.
°ÔÀÓ¿¡ ÀÌ·± °íµæÁ¡ ¿ä¼Ò¸¦ ¸¸µé¾î µÎ´Â °ÍÀº °ÔÀÓÀ» ´õ¿í Àç¹ÌÀÖ°Ô ¸¸µå´Â
¿ä¼Ò°¡ µÈ´Ù. ½ÇÁ¦·Î °ÔÀÓÀ» Çغ¸¸é ¾Ë°ÚÁö¸¸ 4ÁÙÀ» ÇѲ¨¹ø¿¡ ¾ø¾Ö±â¶õ ½±Áö°¡
¾ÊÀ¸¸ç Á¡¼ö¸¦ ³ô°Ô ¾ò±â À§Çؼ´Â tetris¸¦ ³ë¸± ¼ö¹Û¿¡ ¾ø´Ù. tetris¸¦ ³ë¸®
´Ù º¸¸é °ÔÀÓÀÌ ¶æ´ë·Î µÇÁö ¾Ê°Ô µÇ°í ±×·¡¼ °ÔÀÓÀ» ÀÚ²Ù ÇÏ°Ô µÈ´Ù. ´Ü¼øÈ÷
º®µ¹À» ¾ø¾Ö±â¸¸ ÇÏ´Â °ÔÀÓÀº Àç¹Ì°¡ ¾ø´Ù.
shtet2¿¡´Â Á¡¼ö¸¦ ±â·ÏÇÏ´Â ±â´ÉÀÌ Ãß°¡µÇ¾úÀ¸¸ç Á¡¼öÀÇ ±â·ÏÀº Score Ŭ·¡
½º¿¡¼ ó¸®ÇÑ´Ù. ¸¶Âù°¡Áö·Î Ŭ·¡½ºÀÇ Á¤ÀÇ´Â Çì´õ ÆÄÀÏ¿¡ µÎ°í ¸â¹ö ÇÔ¼öÀÇ
Á¤ÀÇ´Â CPP ÆÄÀÏ¿¡ µÐ´Ù.
// SCORE.H
// Á¡¼ö classÀÇ ¼±¾ð
// Score´Â Á¡¼ö¿Í »ç¶÷ÀÇ À̸§ ¹®ÀÚ¿À» ÀúÀåÇϸç ÆÄÀÏ·Î Á¡¼ö ÆÄÀÏÀ» º¸°ü
// Çϸç Àоî¿Ã ¼ö ÀÖ´Â ¸â¹ö ÇÔ¼ö¸¦ °¡Áö°í ÀÖ´Ù.
struct scorestruct // Á¡¼ö¿Í »ç¶÷ À̸§À» º¸°üÇϱâ
{ // À§ÇÑ ±¸Á¶Ã¼ÀÇ Á¤ÀÇ
int score;
char name[20];
};
class Score
{
public:
scorestruct record[10]; // 10¸íÀÇ Á¡¼ö¸¦ º¸°ü
char path[128];
Score();
void load();
void save();
void out();
int soonwi(int);
void insert(int,char *);
};
<<score.h>>
Á¡¼ö¸¦ º¸°üÇϱâ À§ÇØ scorestruct¶ó´Â ±¸Á¶Ã¼¸¦ »ç¿ëÇϸç ÀÌ ±¸Á¶Ã¼¿¡´Â µæ
Á¡ÇÑ Á¡¼ö¿Í °ÔÀÓÀ» ÇÑ »ç¶÷ÀÇ À̸§À» ´ãÀ» ¼ö ÀÖ´Â µ¥ÀÌÅÍ ¸â¹ö°¡ ÀÖ´Ù. Score
Ŭ·¡½º¿¡¼´Â Å©±â°¡ 10ÀÎ scorestruct ±¸Á¶Ã¼ ¹è¿À» µ¥ÀÌÅÍ ¸â¹ö·Î °¡ÁüÀ¸·Î
½á 10¸íÀÇ Á¡¼ö¸¦ °ü¸®ÇÑ´Ù. ¹è¿ÀÇ Å©±â¸¦ Å©°Ô ÇØÁÖ¸é ´õ ¸¹Àº ¼öÀÇ Á¡¼ö¸¦
º¸°üÇÒ ¼öµµ ÀÖ´Ù. Á¡¼öÀÇ º¸°üÀº ´ÙÀ½¿¡ ´Ù½Ã gameÀ» ÇÏ´õ¶óµµ °ú°ÅÀÇ ±â·ÏÀÌ
°è¼Ó À¯ÁöµÉ ¼ö ÀÖµµ·Ï µð½ºÅ©¿¡ ÆÄÀÏÀÇ ÇüÅ·ΠÀúÀåÇϴµ¥ Score Ŭ·¡½º¿¡¼
´Â shtet2.exe°¡ ÀÖ´Â µð·ºÅ丮¿¡ shtet2.sco¶ó´Â µ¥ÀÌÅÍ ÆÄÀÏÀ» µÎ¾î Á¡¼ö¸¦
º¸°üÇÑ´Ù. Score Ŭ·¡½ºÀÇ ¸â¹ö ÇÔ¼ö¸¦ º¸ÀÚ.
// SCORE.CPP Score classÀÇ ¸â¹ö ÇÔ¼ö Á¤ÀÇ
#include <iostream.h>
#include <fstream.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <dos.h>
#include <io.h>
#include <string.h>
#include <dir.h>
#include "score.h"
// »ý¼ºÀÚ: shtet2.sco°¡ ÀÖ´ÂÁö º¸°í ¾øÀ¸¸é ¸¸µç´Ù.
// À̶§ shtet2.sco´Â ¹Ýµå½Ã shtet2.exe¿Í °°Àº
// directory¿¡ µÒÀ¸·Î½á pathÁöÁ¤¿¡ ÀÇÇØ shtet2.exe
// ¸¦ ½ÇÇà½ÃÅ°´õ¶óµµ data ÆÄÀÏÀ» ÀÌ»ó¾øÀÌ Ã£¾Æ³½´Ù.
Score::Score()
{
strcpy(path,searchpath("shtet2.exe"));// ½ÇÇà ÆÄÀÏÀÇ À§Ä¡ ãÀ½
path[strlen(path)-10]=0; // path¿¡¼ ½ÇÇà ÆÄÀÏÀÇ À̸§Àº ¹ö¸²
strcat(path,"shtet2.sco"); // ½ÇÇà ÆÄÀÏ´ë½Å¿¡
data ÆÄÀÏÀÇ À̸§
if (access(path,0)==0) return; // data ÆÄÀÏÀÌ ÀÖÀ¸¸é return
ofstream scofile;
scofile.open(path,ios::binary); // data ÆÄÀÏÀ» ¸¸µç´Ù.
for (int i=0;i<10;i++) // default Á¡¼ö
{
record[i].score=100;
strcpy(record[i].name,"KIM SANG HYUNG");
}
scofile.write((unsigned char *)record,220);
scofile.close();
}
// data ÆÄÀÏÀ» Àоî¿Â´Ù. »ý¼ºÀÚ¿¡¼ data°¡ ¾øÀ» °æ¿ì
// ¶óµµ ¸¸µé¾îÁֱ⠶§¹®¿¡ ¸øÀÐÀ» °æ¿ì°¡ ¾ø´Ù.
void Score::load()
{
ifstream scofile(path);
scofile.read((unsigned char *)record,220);
scofile.close();
}
// data ÆÄÀÏÀ» disk¿¡ º¸°üÇÑ´Ù.
void Score::save()
{
ofstream scofile(path);
scofile.write((unsigned char *)record,220);
scofile.close();
}
// »õ·Î¿î score¸¦ ÀÛ¼ºÇÑ´Ù. sco´Â °»½ÅµÈ Á¡¼ö
// nameÀº °»½ÅÇÑ »ç¶÷ÀÇ À̸§ÀÌ´Ù.
void Score::insert(int sco,char *name)
{
int j=0;
int sw=soonwi(sco);
if (sw>10) return; // 10µî ¹ÛÀÌ¸é »ðÀÔÇÏÁö ¾ÊÀ½
for (int i=0;i<10;i++) // µî·ÏµÈ ÃÖÇÏ Á¡¼ö¸¦ ã¾Æ³¿
if (record[j].score > record[i].score) j=i;
record[j].score=sco; // ±× ÀÚ¸®¿¡ µ¤¾î ¾¸
strcpy(record[j].name,name);
}
// ¼øÀ§¸¦ ¸Å±ä´Ù. sco´Â ¼øÀ§¸¦ ¸Å±æ Á¡¼öÀÌ´Ù.
int Score::soonwi(int sco)
{
int j=1;
for (int i=0;i<10;i++)
if (record[i].score > sco) j++;
return j;
}
// Á¡¼öÀÇ Ãâ·Â. Ãâ·ÂÇϱâ Àü¿¡ Á¡¼ö¸¦ ³»¸²Â÷¼øÀ¸·Î Á¤·Ä
// ÇÑ´Ù. sort¿¡ »ç¿ëµÈ ¾Ù°Å¸®µëÀº bubble Á¤·ÄÀÌ´Ù.
void Score::out()
{
int imsiscore;
char imsiname[20];
clrscr();
int i=9,j;
while (i!=0) // ÀÌ ·çÇÁ°¡ bubble sort
{
for (j=0;j<=i-1;j++)
if (record[j].score < record[j+1].score)
{
imsiscore=record[j].score;
record[j].score=record[j+1].score;
record[j+1].score=imsiscore;
strcpy(imsiname,record[j].name);
strcpy(record[j].name,record[j+1].name);
strcpy(record[j+1].name,imsiname);
}
i--;
}
gotoxy(25,2); // Á¤·ÄµÈ Á¡¼ö¸¦ ¼ø¼´ë·Î Ãâ·Â
cout << "No score name";
for (i=0;i<10;i++)
{
gotoxy(25,i*2+4);
cout << i+1 << " : " << record[i].score << " "
<< record[i].name << endl;
}
}
<<score.cpp>>
°¢ ¸â¹ö ÇÔ¼öº°·Î ¼³¸íÇ쵂 ¼Ò½º¿¡ ±â·ÏµÇ¾î ÀÖ´Â ÁÖ¼®¹®°ú ÇÔ²² ÂüÁ¶Çϱ⠹Ù
¶õ´Ù.
ÀÌ¾î¼ °è¼ÓµË´Ï´Ù. ==============>>>>>>>
--------------------------------------------------------------------------------
´ÙÀ½