OOPÀÇ Á¤º¸ ÀºÆó ±â´ÉÀ» ¼³¸íÇϱâ À§ÇØ ´Ü°ñ·Î µîÀåÇÏ´Â »ç¹°ÀÌ ¹Ù·Î ÀÚµ¿Â÷À̸ç ÀÌ Ã¥µµ ¾Õ¿¡¼ ÀÚµ¿Â÷¸¦ ¿¹·Î µé¾î ¼³¸íÇß´Ù. ÀÚµ¿Â÷ÀÇ ±â´ÉµéÀº ´ëºÎºÐÀÇ »ç¶÷µéÀÌ Àß ¾Ë°í ÀÖÀ¸¸ç ³»ºÎÀÇ º¹ÀâÇÑ ±¸Á¶¿¡ ºñÇØ °ø°³µÈ ÀÎÅÍÆäÀ̽º°¡ Àû¾î Á¤º¸ ÀºÆó ±â´ÉÀ» ¼³¸íÇϱ⿡ ÀûÀýÇϱ⠶§¹®ÀÌ´Ù. C++ÀÇ Å¬·¡½º´Â ½Ç¼¼°èÀÇ ¸ðµç »ç¹°À» ´Ù Ç¥ÇöÇÒ ¼ö Àִµ¥ °ú¿¬ ÀÚµ¿Â÷¸¦ ¾î¶»°Ô Ç¥ÇöÇÏ´ÂÁö ¿¹Á¦¸¦ ¸¸µé¾î º¸ÀÚ.
Ç¥Çö·ÂÀÌ ¼¶¼¼ÇÏ°í ¿ë·®¿¡ »ó°ü¾øÀÌ Ãß»óȸ¦ ÇÑ´Ù¸é ½ÇÁ¦ ÀÚµ¿Â÷¿Í °ÅÀÇ ¶È°°Àº ÀÚµ¿Â÷ Ŭ·¡½º¸¦ ¸¸µé¾î »ç½ÇÀûÀ¸·Î ¹¦»çÇÒ ¼öµµ ÀÖ´Ù. ±×·¯³ª ÀÌ·¸°Ô ÇÏÀÚ¸é ¿¹Á¦°¡ ³Ê¹« Ä¿Áö°í ÄÜ¼Ö È¯°æÀÇ Ç¥Çö·Âµµ ÃæºÐÇÏÁö ¾ÊÀ¸¹Ç·Î °³³äÀûÀÎ ÀÚµ¿Â÷¸¸ ¸¸µé¾î º¸µµ·Ï ÇÏÀÚ. ÀÚµ¿Â÷ ¹® ¿±â, ½Ãµ¿ °É±â, ±ô¹ÚÀÌ ³Ö±â µûÀ§´Â ¹«½ÃÇϰí ÁÖÇà ±â´É¸¸ Ç¥ÇöÇϱâ·Î ÇÑ´Ù.
|
¿¹ Á¦ : CarObject |
#include <Turboc.h>
class Car
{
private:
int Gear;
int Angle;
int Rpm;
public:
Car() { Gear=0; Angle=0; Rpm=0; }
void ChangeGear(int aGear) {
if (aGear >= 0 && aGear <= 6) {
Gear=aGear;
}
}
void RotateWheel(int Delta) {
int tAngle=Angle+Delta;
if (tAngle >= -45 && tAngle <= 45) {
Angle=tAngle;
}
}
void Accel() {
Rpm=min(Rpm+100,3000);
}
void Break() {
Rpm=max(Rpm-500,0);
}
void Run() {
int Speed;
char Mes[128];
gotoxy(10,12);
if (Gear == 0) {
puts("¸ÕÀú 1~6۸¦ ´·¯ ±â¾î¸¦ ³ÖÀ¸½Ã¿À ");
return;
}
if (Gear == 6) {
Speed=Rpm/100;
} else {
Speed=Gear*Rpm/100;
}
sprintf(Mes,"%dÀÇ ¼Óµµ·Î %sÂÊ %dµµ ¹æÇâÀ¸·Î %sÁøÁß ",
abs(Speed),(Angle >= 0 ? "¿À¸¥":"¿Þ"),abs(Angle),
(Gear==6 ? "ÈÄ":"Àü"));
puts(Mes);
}
};
void main()
{
Car C;
int ch;
for(;;) {
gotoxy(10,10);
printf("1~5:±â¾î º¯¼Ó, 6:ÈÄÁø ±â¾î, 0:±â¾î Á߸³");
gotoxy(10,11);
printf("À§:¾×¼¿, ¾Æ·¡:ºê·¹ÀÌÅ©, Á¿ì:ÇÚµé, Q:Á¾·á");
if (kbhit()) ch=getch();
if (ch == 0xE0 || ch == 0) {
ch=getch();
switch (ch) {
case 75:
C.RotateWheel(-5);
break;
case 77:
C.RotateWheel(5);
break;
case 72:
C.Accel();
break;
case 80:
C.Break();
break;
}
} else {
if (ch >= '0' && ch <= '6') {
C.ChangeGear(ch-'0');
} else if (ch == 'Q' || ch == 'q') {
exit(0);
}
}
C.Run();
delay(10);
}
}
¼Ó¼ºÀ¸·Î Gear, ¾Õ ¹ÙÄûÀÇ °¢µµÀÎ Angle, ¿£ÁøÀÇ È¸Àü¼öÀÎ Rpm¸¸ Æ÷ÇÔÇßÀ¸¸ç ÀÌ ¼Ó¼ºµéÀº Ŭ·¡½ºÀÇ ¸â¹ö º¯¼ö·Î ¼±¾ðµÈ´Ù. »ý¼ºÀÚ¿¡¼ ¸ðµç ¸â¹ö´Â 0À¸·Î ÃʱâÈÇß´Ù. »ç¿ëÀÚ´Â ¸ÕÀú ±â¾î¸¦ ³Ö°í ¾×¼¿À» ¹âÀ½À¸·Î½á ¿£ÁøÀ» ȸÀü½Ã۸ç ÇÚµéÀ» Á¿ì·Î ºñƲ¾î¼ Â÷¸¦ ¿îÀüÇÑ´Ù. ¼Óµµ¸¦ ´õ ³»°í ½ÍÀ¸¸é ±â¾î¸¦ ¹Ù²Ù°í ÁÖÇàÁßÀÎ Â÷¸¦ ¸ØÃß°í ½ÍÀ» ¶§´Â ºê·¹ÀÌÅ©¸¦ ¹âÀ¸¸é µÈ´Ù. ÀÚµ¿Â÷ÀÇ ÇöÀç »óŸ¦ ³ªÅ¸³»´Â ¼¼ °¡Áö ÁÖ¿ä ¸â¹ö´Â private·Î ¼û°ÜÁ® ÀÖ¾î ¿ÜºÎ¿¡¼ ÇԺηΠÁ¶ÀÛÇÒ ¼ö ¾øµµ·Ï º¸È£µÈ´Ù.
¿îÀüÀÚ´Â ±â¾î ½ºÆ½, ¾×¼¿, ºê·¹ÀÌÅ©, ÇÚµé µîÀÇ ¿ÜºÎ·Î °ø°³µÈ ÀåÄ¡·Î¸¸ ÀÚµ¿Â÷¸¦ Á¦¾îÇÒ ¼ö Àִµ¥ Car Ŭ·¡½º´Â ¿ÜºÎ ÀÎÅÍÆäÀ̽º¸¦ public ¸â¹ö ÇÔ¼ö·Î Á¦°øÇÑ´Ù. ±â¾î¸¦ º¯°æÇÒ ¶§´Â ChangeGear ÇÔ¼ö¸¦ È£ÃâÇϴµ¥ À¯È¿ÇÑ ±â¾î´Â 0~6±îÁö»ÓÀ̸ç ÀÌ ¿ÜÀÇ °ªÀÌ µé¾î¿À¸é ¹«½ÃÇÑ´Ù. Á¸ÀçÇÏÁöµµ ¾Ê´Â 8´Ü, 9´Ü ±â¾î¸¦ ³ÖÁö´Â ¾Ê´Â´Ù. ÀÚµ¿Â÷ÀÇ ¹æÇâÀ» º¯°æÇÏ°í ½ÍÀ» ¶§´Â RotateWheel ÇÔ¼ö¸¦ È£ÃâÇϴµ¥ Á¿ì·Î 45µµ±îÁö¸¸ °¢µµ¸¦ º¯°æÇÒ ¼ö ÀÖ¾î ¹ÙÄû°¡ µÚ·Î ȹ µ¹¾Æ°£´Ù°Å³ª ÇÏ´Â ÀÏÀº Àý´ë·Î ¾ø´Ù.
Accel°ú Break´Â ¿£Áø ȸÀü¼öÀÎ RpmÀ» Á¶Á¤Ç쵂 0~3000±îÁöÀÇ ¹üÀ§ ³»¿¡¼¸¸ RpmÀ» Á¶ÀÛÇÑ´Ù. ¾×¼¿À» ¹âÀ» ¶§´Â ȸÀü¼ö°¡ õõÈ÷ ¿Ã¶ó°¡°í ºê·¹ÀÌÅ©¸¦ ¹âÀ» ¶§´Â ±Þ°ÝÇÏ°Ô ¶³¾îÁöµµ·Ï ÇÏ¿© Á¶±ÝÀ̳ª¸¶ »ç½Ç°¨ ÀÖ°Ô Ç¥ÇöÇß´Ù. ½ÇÁ¦ ȸÀü¼öÀÎ RpmÀº ¿ÜºÎ·ÎºÎÅÍ Ã¶ÀúÇÏ°Ô Â÷´ÜµÇ¾î ÀÖÀ¸¸ç Accel°ú Break ÇÔ¼ö´Â °ø°³µÇ¾î ÀÖÁö¸¸ ÀÚüÀûÀÎ ¿¡·¯ 󸮷Π¹«È¿ÇÑ °ªÀ» ¹æÁöÇÑ´Ù. ¿ÜºÎ¿¡¼ ¾Æ¹«¸® ¾×¼¿À» ¿À·§µ¿¾È ¹â°í À־ ¿£Áø Çã¿ëÄ¡ ÀÌ»óÀº ´õ ¿Ã¶ó°¡Áö ¾ÊÀ¸¸ç ºê·¹ÀÌÅ©¸¦ ¾Æ¹«¸® ¼¼°Ô ¹â¾Æµµ RpmÀÌ À½¼ö°¡ µÇÁö´Â ¾Ê´Â´Ù.
Run ÇÔ¼ö´Â ±â¾î¿Í ¹ÙÄûÀÇ °¢µµ, ¿£Áø ȸÀü¼ö Á¤º¸¸¦ Á¾ÇÕÀûÀ¸·Î ÆÇ´ÜÇÏ¿© ÀÚµ¿Â÷¸¦ ¿îÇàÇÑ´Ù. ±â¾î°¡ Á߸³ÀÌ¸é ¿£Áø°ú ¹ÙÄû°¡ ¿¬°áµÇÁö ¾ÊÀº °ÍÀ¸¹Ç·Î Â÷´Â ¿îÇàÇÒ ¼ö ¾øÀ¸¸ç ÀüÁø ±â¾îÀÇ ´Ü¼ö¿¡ µû¶ó Rpm¿¡ °öÇØÁö´Â °ªÀÌ Æ²·ÁÁø´Ù. ÈÄÁø ±â¾îÀÏ °æ¿ì´Â õõÈ÷ µÚ·Î ÈÄÁøÇϵµ·Ï ÇßÀ¸¸ç ÇÚµéÀÇ ÇöÀç »óÅ¿¡ µû¶ó Á¿ì·Î ¹æÇâÀ» Ʋ±âµµ ÇÑ´Ù. ÄÜ¼Ö È¯°æ¿¡¼ À̵¿ÁßÀÎ Â÷¸¦ ±×¸± ¼ö ¾ø¾î ÅØ½ºÆ® Ãâ·ÂÀ¸·Î ´ë½ÅÇßÁö¸¸ ±×·¡ÇÈ È¯°æÀ̶ó¸é À̵¿ÇÏ´Â Â÷¸¦ ¾ó¸¶µçÁö ±×¸± ¼ö ÀÖ´Ù.
main¿¡¼ Car Ŭ·¡½ºÀÇ °´Ã¼ C¸¦ ¼±¾ðÇϰí Ű ÀÔ·ÂÀ» ¹Þ¾Æ ÀÚµ¿Â÷¸¦ Á¶ÀÛÇϴµ¥ Ŭ·¡½ºÀÇ ¿ÜºÎ¿¡¼´Â °ø°³µÈ ¸â¹ö ÇÔ¼ö¸¸ È£ÃâÇÒ ¼ö ÀÖÀ¸¸ç ÀÚµ¿Â÷ÀÇ ÁÖ¿ä ºÎǰÀ» Á÷Á¢ Á¶ÀÛÇÒ ¼ö´Â ¾ø´Ù. ÀÚµ¿Â÷°¡ ½º½º·Î¸¦ º¸È£Çϰí ÀÖÀ¸¹Ç·Î ÇÚµéÀ» °úÇÏ°Ô ºñƲ°Å³ª ¾×¼¿À» °è¼Ó ¹â°í À־ º° ¹®Á¦°¡ µÇÁö ¾Ê´Â´Ù. ÀÌ ¿¹Á¦¿¡¼´Â ÀÚµ¿Â÷ °´Ã¼ Çϳª¹Û¿¡ ¾øÁö¸¸ ±æ, Àå¾Ö¹°, ¿©·¯ °³ÀÇ ÀÚµ¿Â÷¸¦ ¸¸µé¾î ¼·Î°£ÀÇ °ü°è¸¦ Á¤ÀÇÇÏ¸é ¸ÚÁø ÀÚµ¿Â÷ °æÁÖ °ÔÀÓÀÌ ¸¸µé¾îÁú °ÍÀÌ´Ù.
ÀÌ ¿¹Á¦ÀÇ ÀÚµ¿Â÷´Â ¾ÆÁÖ ´Ü¼øÇÏ°Ô ¸ðµ¨¸µµÇ¾úÁö¸¸ ÇÁ·Î±×·¥ÀÇ Çʿ信 µû¶ó Ŭ·¡½º´Â ¾ó¸¶µçÁö ½Ç¼¼°èÀÇ »ç¹°°ú ¶È°°¾ÆÁú ¼ö ÀÖ´Ù. Â÷ ¹®Â¦µµ ´Þ ¼ö ÀÖ°í ¹é¹Ì·¯, ŸÀÌ¾î µîµµ ºÎÂøÇÒ ¼ö ÀÖÀ¸¸ç ÀüÁøÇÒ ¶§ µÚ·Î »Õ¾îÁ® ³ª¿À´Â ¹è±â °¡½ºµµ Ç¥ÇöÇÒ ¼ö ÀÖ´Ù. »ç½Ç ÀÌ·± ½ÄÀ̶ó¸é Ç×°ø¸ðÇÔÀ̳ª ¿ìÁÖ¼±, ·Îº¸Æ® Å层 Vµµ ¾ó¸¶µçÁö ¸¸µé ¼ö ÀÖ´Â ¼ÀÀÌ´Ù.