Å×Æ®¸®½º °ÔÀÓÀÇ ±¸¼º ¿ä¼ÒµéÀ» ÀÚ¹Ù °´Ã¼·Î ³ª´©¾î Àç»ç¿ë °¡´ÉÇÑ ÀÚ¹Ù °ÔÀÓ ÄÄÆ÷³ÍÆ®·Î ¸¸µå´Â ¹æ¹ý
Scott
Clee ¼ÒÇÁÆ®¿þ¾î ¿£Áö´Ï¾î, IBM 2002³â 3¿ù
IBM ¼ÒÇÁÆ®¿þ¾î ¿£Áö´Ï¾î (¸¶À½Àº °ÔÀ̸Ó)ÀÎ Scott Clee°¡ Å×Æ®¸®½º
°ÔÀÓ ¸ðµ¨À» Àç»ç¿ë °¡´ÉÇÑ ÀÚ¹Ù ºó ÄÄÆ÷³ÍÆ®·Î Æ÷ÀåÇÏ´Â °£´ÜÇÑ ¹æ¹ýÀ» ¼Ò°³ÇÑ´Ù. ÀÏ´Ü °ÔÀÓÀÇ ±¸¼º ¿ä¼ÒµéÀÌ ÀÚ¹Ù °´Ã¼µé·Î
³ª´©¾îÁö¸é ¿ÏÀüÇÑ °ÔÀÓ ¸ðµ¨ ºóÀ» Çü¼ºÇϵµ·Ï ÀçÁ¶¸³µÉ ¼ö ÀÖ°í, ½ÇÁ¦·Î ¾î¶² Å×Æ®¸®½º GUI¿¡µµ °áÇÕµÉ ¼ö ÀÖ´Ù. forum¿¡¼
ÀÌ ±Û¿¡ ´ëÇÑ ¿©·¯ºÐÀÇ »ý°¢À» ÀúÀÚ¿Í ´Ù¸¥ µ¶ÀÚµé°ú °øÀ¯Çϱ⠹ٶõ´Ù.
ÇÑ Ä£±¸°¡ ÀÚ½ÅÀº »õ·Î¿î ÇÁ·Î±×·¡¹Ö ¾ð¾î¸¦ ¹è¿ï ¶§¸¶´Ù ±× ¾ð¾î¸¦ »ç¿ëÇØ Å×Æ®¸®½º °ÔÀÓÀ» ÀÛ¼ºÇϴµ¥ µµÀüÇÑ´Ù°í ¸»ÇÑ ÀûÀÌ ÀÖ´Ù.
ÀÌ·¯ÇÑ ÀüÅëÇÏ¿¡, ³»°¡ óÀ½ ÀÚ¹Ù ¾ð¾î¸¦ »ç¿ëÇÑ ÇÁ·Î±×·¡¹Ö ¹ýÀ» ¹è¿üÀ» ¶§ ³ªµµ °°Àº ½Ãµµ¸¦ ÇØ º¸±â·Î Çß´Ù. ³ªÀÇ Ã¹¹ø° ½Ãµµ´Â
ÇϳªÀÇ ¿ÏÀüÇÑ °ÔÀÓÀ̱ä ÇßÁö¸¸ ¸Å¿ì °£´ÜÇÏ°í ÈäÇÑ °ÍÀ̾ú´Ù. ½Ã°£ÀÌ °¡°í ³»°¡ ÀÚ¹Ù ¼³°è¿Í °³¹ß¿¡ ´õ ¸¹Àº °æÇèÀ» ¾òÀ½¿¡ µû¶ó ³ª´Â
GUI¿¡¼ °ÔÀÓ ¸ðµ¨À» ºÐ¸®½ÃÄÑ (Swing ÄÄÆ÷³ÍÆ®¿Í À¯»çÇÏ°Ô) Å×Æ®¸®½º ºóÀ» ¸¸µé ¼ö ÀÖ´Ù´Â »ç½ÇÀ» ¾Ë¾Ò´Ù. ±×·¡¼ ³ª´Â ±×°ÍÀ»
ÇØ º¸±â ½ÃÀÛÇß´Ù.
ÀÌ ±Û¿¡¼ ³ª´Â Å×Æ®¸®½º ºóÀ» ±¸ÃàÇÏ°í ±¸ÇöÇÏ´Â ¹æ¹ýÀ» ¾È³»ÇÏ°Ú´Ù.
Á¶°¢°ú ºÎºÐ
Å×Æ®¸®½º´Â ÀÚ¹Ù °´Ã¼·Î Ç¥ÇöµÉ ¼ö ÀÖ´Â ¸î °³ÀÇ ±¸¼º ¿ä¼Ò¸¦ °¡Áö°í ÀÖ´Ù.:
- The Tetris pieces Å×Æ®¸®½º Á¶°¢
- Á¶°¢À» °¡Áö°í ÀÖ´Â Å×Æ®¸®½º ÆÇ
- ÆÇ À§ÀÇ Á¶°¢ Á¦¾î, Á¡¼ö °ü¸® µîÀ» ÇÏ´Â °ÔÀÓ
ÀÌ ¿ä¼Òµé °¢°¢À» Á» ´õ ÀÚ¼¼È÷ »ìÆ캸ÀÚ.
Å×Æ®¸®½º Á¶°¢ : TetrisPiece Ŭ·¡½º ±×¸² 1°ú °°ÀÌ, Tetris Á¶°¢ÀÇ ÇÙ½É ¿ä¼Ò´Â
´ÙÀ½°ú °°´Ù.:
- °¢ ¿ä¼Ò´Â Á¤È®È÷ ³× °³ÀÇ ºí·ÏÀ¸·Î ±¸¼ºµÇ¾î ÀÖ´Ù.
- Á¶°¢ ³»ÀÇ °¢ ºí·°Àº Å×Æ®¸®½º ÆÇ ³»¿¡ (x.y) ÁÂÇ¥¸¦ °¡Áö°í ÀÖ´Ù.
- °¢ Á¶°¢Àº 0, 2, 4ÀÇ È¸ÀüÀ²À» °¡Áö°í ÀÖ´Ù.
- °¢ Á¶°¢Àº L, J, S, O, I, Z, ȤÀº T ¸ð¾çÀ» Áö´Ò ¼ö ÀÖ´Ù.
±×¸² 1. °¢ Å×Æ®¸®½º Á¶°¢¿¡ ³× ¿ä¼Ò°¡ ÇÊ¿äÇÔ : ºí·Ï, (x,y) ÁÂÇ¥, ȸÀüÀ² ¹× ¸ð¾ç
Å×Æ®¸®½º ºóÀ¸·Î ¹«¾ùÀ» ÇÒ ¼ö ÀÖÀ»±î?
´ÙÀ½Àº Å×Æ®¸®½º ºóÀ» ¸¸µç ÈÄ ³»°¡ ¼öÇàÇÑ ¸î °¡Áö ÀϵéÀÌ´Ù.
- ºóÀÇ µÎ ÀνºÅϽº¸¦ ¿¬°á½ÃÄÑ ´ë°á °ÔÀÓÀ» ¸¸µé´Ù.
- Netris¶ó´Â À̸§À» °¡Áø, ÃÖÃÊÀÇ Psion Netpad¿ë Å×Æ®¸®½º °ÔÀÓÀ» ¸¸µé´Ù
- ºóÀ» ¾ÖÇø´¿¡ ÅëÇÕ½ÃÄÑ ºê¶ó¿ìÀú¿Í ȣȯµÇ´Â Å×Æ®¸®½º °ÔÀÓÀ» ¸¸µé´Ù.
|
ù¹ø° µÎ ¾ÆÀÌÅÛÀº ¸Å¿ì °£´ÜÇÑ ½Ã½ºÅÛÀ» »ç¿ëÇØ ±¸ÇöµÉ ¼ö ÀÖ´Ù. °¢ Á¶°¢¿¡ ´ëÇØ Áß¾Ó ºí·ÏÀ» ¼±ÅÃÇÏ°í ÀÌ ºí·ÏÀÇ (x,y)
ÁÂÇ¥¸¦ ÀúÀåÇϸé, Á¶°¢ ³»ÀÇ ³ª¸ÓÁö ºí·ÏµéÀ» ÀÌ ºí·ÏÀ» Áß½ÉÀ¸·Î ÇÑ »ó´ë ÁÂÇ¥·Î ÀúÀåÇÒ ¼ö ÀÖ´Ù. ÀÌ ¹æ½ÄÀº Áß¾Ó Á¶°¢¿¡ ´ëÇÑ »ó´ë
ºí·ÏÀ¸·Î ¸ð¾çÀ» ÀúÀåÇÔÀ¸·Î½á Á¶°¢ÀÇ ¾î¶² Çüŵµ ±â¼úÇÒ ¼ö ÀÖ°Ô ÇØÁØ´Ù. Áß¾Ó ÁöÁ¡Àº
java.awt.Point ·Î ÀúÀåµÉ ¼ö ÀÖ°í »ó´ë ÁÂÇ¥´Â java.awt.Point
¹è¿¿¡ ÀúÀåµÉ ¼ö ÀÖ´Ù. ÁÂÇ¥ °è»êÀ» ½±°Ô Çϱâ À§ÇØ, Áß¾Ó Á¶°¢À» (0,0) »ó´ë ÁÂÇ¥¸¦ °¡Áø ºí·ÏÀ¸·Î ÀúÀåÇÒ ¼ö ÀÖ´Ù.
Á¶°¢ ȸÀü½ÃÅ°±â
ÀÌ ½Ã½ºÅÛÀº ¶ÇÇÑ Á¶°¢ÀÇ È¸ÀüÀ» °è»êÇÒ ¶§ ´õ ½±´Ù. °£´ÜÇÑ Çà·Ä Á¶ÀÛÀ» »ç¿ëÇÏ¿© ´Ü¼øÈ÷ yÁÂÇ¥¸¦ x ÁÂÇ¥·Î ¹Ù²Ù°í x ÁÂÇ¥´Â
y ÁÂÇ¥ÀÇ ¸¶À̳ʽº °ªÀ¸·Î ¹Ù²Ù¸é Á¶°¢À» ½Ã°è¹æÇâÀ¸·Î 90µµ ȸÀü½Ãų ¼ö ÀÖ´Ù. ¿ì¸®´Â Áß¾Ó ÁöÁ¡À» Áß½ÉÀ¸·Î »ó´ë ÁÂÇ¥¸¦ »ç¿ëÇÏ°í
Àֱ⠶§¹®¿¡, ¿©±â¿¡¼µµ ¸¶Âù°¡Áö·Î ÇÒ ¼ö ÀÖ´Ù:
temp = x;
x = -y;
y = temp;
|
¿©·¯ºÐÀº ¶ÇÇÑ ½Ã°è¹æÇâ ȸÀüÀ» 3¹ø Àû¿ëÇϸé Á¶°¢À» ½Ã°è ¹Ý´ë ¹æÇâÀ¸·Î 90µµ ȸÀü½Ãų ¼ö ÀÖ´Ù. (¹ÏÁö ¸øÇÏ°Ú´Ù¸é ÇÑ ¹ø
Çغ¸±â ¹Ù¶õ´Ù.)
¸¶Áö¸·À¸·Î, ¸ðµç Á¶°¢ÀÌ µ¿ÀÏÇÑ È¸ÀüÀ²À» °¡Áö´Â °ÍÀº ¾Æ´Ï¹Ç·Î, ÀÌ ¹®Á¦¸¦ º¸ÃæÇϱâ À§ÇØ È¸Àü ±â¹ýÀ» üũÇØ º¸¾Æ¾ß ÇÒ
°ÍÀÌ´Ù.
¿¡°Ô LÀ» ÁֽÿÀ
¿ì¸®´Â ¸ðµç À¯ÇüÀÇ Á¶°¢À» Ç¥½ÃÇϴµ¥ µ¿ÀÏÇÑ TetrisPiece Ŭ·¡½º¸¦ »ç¿ëÇϱ⠶§¹®¿¡ À̵éÀ» ±¸ºÐÇÒ
¹æ¹ýÀÌ ÇÊ¿äÇÏ´Ù. À̸¦ À§ÇØ ¿ì¸®´Â ¸î °³ÀÇ Á¤ÀûÀÎ int »ý¼ºÀÚ¸¦ »ç¿ëÇÏ¿© ´Ù¸¥ À¯ÇüµéÀ» Ç¥½ÃÇÏ°í Áö¿ª
º¯¼ö°¡ Á¶°¢ÀÇ À¯ÇüÀ» ÀúÀåÇϵµ·Ï ÇÑ´Ù. ´ÙÀ½Àº ÀÌ »ý¼ºÀÚµé Áß ÇϳªÀÇ ¿¹ÀÌ´Ù:
public static final int L_PIECE = 0;
|
Á¶°¢ ¿òÁ÷À̱â
Á¶°¢À» Å×Æ®¸®½º ÆÇ À§¿¡¼ À̵¿½Ãų °ÍÀ̹ǷΠÀ̸¦ À§ÇÑ À̵¿ ¸Þ¼Òµå¸¦ Á¦°øÇØ¾ß ÇÑ´Ù. ¸î °¡Áö À̵¿ (ÀÌ¹Ì °¡´ÉÇÑ ÇÑ Á¦ÀÏ
¿À¸¥ÂÊ ³¡¿¡ ¿Í Àִµ¥ ´Ù½Ã ¿À¸¥ÂÊÀ¸·Î °¡·Á´Â ½Ãµµ)Àº ºÒ¹ýÀûÀÏ ¼ö ÀÖ´Ù. µû¶ó¼ ¿ì¸®´Â ¸ðµç À̵¿ ¿äûÀ» È®ÀÎÇÒ ÇÊ¿ä°¡ ÀÖ´Ù.
¿ì¸®´Â ÂüÁ¶¸¦ ÀúÀåÇÒ Å×Æ®¸®½º ÆÇ¿¡¼ ÀÌ°ÍÀ» ±¸ÇöÇÒ °ÍÀÌ´Ù. µû¶ó¼ ¿ì¸® Ŭ·¡½ºÀÇ »ý¼ºÀÚ´Â ¿©±â¿¡¼ µÎ °¡Áö ¸Å°³ º¯¼ö¸¦ °¡Áú
°ÍÀÌ´Ù: ù¹ø°´Â ¸¸µé¾îÁø Á¶°¢ÀÇ À¯ÇüÀÌ°í, µÎ¹ø°´Â Å×Æ®¸®½ºÆÇ¿¡ ´ëÇÑ ÂüÁ¶ÀÌ´Ù. »ý¼ºÀÚ¿¡¼ ¿ì¸®´Â
initalizeBlocks() À̶ó´Â private À¯Æ¿¸®Æ¼ ¸Þ¼Òµå¸¦ È£ÃâÇÒ °ÍÀε¥, ÀÌ ¸Þ¼Òµå´Â Á¶°¢ÀÇ »ó´ë
ÁÂÇ¥°ªÀ» °¢°¢ÀÇ Á¶°¢ À¯Çü¿¡ ¼³Á¤ÇÒ °ÍÀÌ´Ù.
À̵¿ÀÌ ÇÕ¹ýÀûÀÎÁö¸¦ üũÇÏ´Â °£´ÜÇÑ ¹æ¹ýÀº ÆÇ¿¡¼ Á¶°¢À» ¶¼³»¾î ¿øÇÏ´Â ¹æÇâÀ¸·Î À̵¿½ÃŲ ÈÄ ¸Â´ÂÁö º¸´Â °ÍÀÌ´Ù. ¸ÂÀ¸¸é Á¶°¢À»
º¸µåÀÇ »õ À§Ä¡¿¡ µÐ´Ù. ±×·¸Áö ¾ÊÀ¸¸é À̵¿À» Ãë¼ÒÇÏ°í ¿ø·¡ ÀÖ´ø ÀÚ¸®¿¡ ´Ù½Ã µÐ´Ù. ¹ÝȯµÇ´Â °ªÀº ±× °á°ú¿¡ µû¶ó
true (À̵¿ÀÌ ¸ÂÀ¸¸é)³ª false (À̵¿ÀÌ ¸ÂÁö ¾ÊÀ¸¸é)°¡ µÉ °ÍÀÌ´Ù.
Á» ´õ ÁÖÀǸ¦ ±â¿ï¿©¾ß ÇÒ À̵¿ÀÇ ÇÑ À¯ÇüÀº Á¶°¢ÀÌ ¶³¾îÁö´Â °æ¿ìÀÌ´Ù. ¶³¾îÁø´Ù´Â °ÍÀº Á¶°¢ÀÌ ÆÇÀÇ Á¦ÀÏ ¾Æ·¡ÂÊÀ¸·Î ¹Ù·Î
³»·Á°£´Ù´Â ÀǹÌÀÌ´Ù. À̸¦ À§ÇØ ¿ì¸®´Â ´õ ÀÌ»ó ¿òÁ÷ÀÏ ¼ö ¾øÀ» ¶§°¡Áö Á¶°¢À» ¾Æ·¡·Î °è¼Ó À̵¿½ÃÅ°´Â
while ·çÇÁ°¡ ÇÊ¿äÇÏ´Ù. ±×·¯¸é Á¶°¢Àº ±× À§Ä¡¿¡ ¹èÄ¡µÉ °ÍÀÌ´Ù.
Á¶°¢¿¡ Àû¿ëµÉ ¼ö ÀÖ´Â ´Ù¾çÇÑ À̵¿µéÀ» ±¸º°Çϱâ À§ÇØ ¿ì¸®´Â ´ÙÀ½ ¿¹Á¦¿¡ ³ªÅ¸³ °Í°ú °°ÀÌ ¸î °¡Áö Ãß°¡ÀûÀÎ
static int »ý¼ºÀÚ¸¦ »ç¿ëÇÒ °ÍÀÌ´Ù.:
public static final int LEFT = 10;
|
Á¶°¢ÀÌ ¸Â´ÂÁö º¸±â À§ÇØ ³ªÁß¿¡ willFit() ¸Þ¼Òµå°¡ TetrisBoard
Ŭ·¡½º¿¡¼ ±¸ÇöµÈ °ÍÀÌ´Ù.
TetrisPiece ¸¶¹«¸®Çϱâ
¸¶Áö¸·À¸·Î TetrisPiece Ŭ·¡½º¸¦ Æ÷ÀåÇϱâ À§ÇØ ¿ì¸®´Â Áß¾Ó ÁöÁ¡°ú »ó´ë ÁÂÇ¥¿Í °°Àº ¸î °¡Áö
º¯¼ö¿¡ ´ëÇÑ getters¿Í setters, ±×¸®°í ¹«ÀÛÀ§ À¯ÇüÀÇ TetrisPiece ÀνºÅϽº¸¦ ¹ÝȯÇÒ
getRandomPiece() ¶ó´Â Á¤ÀûÀÎ ¸Þ¼Òµå¸¦ °¡Áø´Ù.
TetrisPiece Ŭ·¡½º¸¦ Æ÷ÇÔÇÑ ¿Ï¼ºµÈ ¼Ò½º¸¦ Âü°í
ÀÚ·á¿¡¼ ´Ù¿î·Îµå¹ÞÀ» ¼ö ÀÖ´Ù.
Å×Æ®¸®½º ÆÇ : TetrisBoard Ŭ·¡½º
Å×Æ®¸®½º ÆÇÀº ºó ºí·Ï°ú »ö±ò ÀÖ´Â ºí·ÏÀ» °¡Áö°í ÀÖ´Â 2D °ÝÀÚÆÇÀ¸·Î »ý°¢ÇÒ ¼ö ÀÖ´Ù. ´Ù¾çÇÑ À¯ÇüÀÇ Å×Æ®¸®½º Á¶°¢µéÀÌ
int »ý¼ºÀÚ¿¡ ÀÇÇØ ±¸º°µÇ±â ¶§¹®¿¡, ¿ì¸®°¡ ÇØ¾ß ÇÒ ÀÏÀº ºó ºí·ÏÀÇ °ªÀ» Á¤ÀÇÇÏ´Â °Í »ÓÀÌ°í ¿ì¸®´Â ÆÇÀ»
2D int ¹è¿·Î ÀúÀåÇÒ ¼ö ÀÖ´Ù. ÀÌ ¹æ½ÄÀ» »ç¿ëÇϸé ÆÇ ³»ÀÇ ºó ºí·ÏÀº ´ÙÀ½¿¡ ÀÇÇØ Ç¥½ÃµÉ °ÍÀÌ´Ù.:
public static final int EMPTY_BLOCK = -1;
|
À¯¿¬¼ºÀ» À¯ÁöÇϱâ À§ÇØ ÆÇÀÇ Å©±â¸¦ °¡º¯ÀûÀ¸·Î ÇÏ°ÚÁö¸¸ ÀÌ°ÍÀ» »ý¼ºÀÚ ³»¿¡ Á¤ÀÇÇÒ °ÍÀÌ´Ù. µû¶ó¼ »ý¼ºÀÚ´Â ¿°ú ÇàÀÇ ¼ö¸¦
³ªÅ¸³»´Â µÎ int s¸¦ ¹Þ¾ÆµéÀÏ °ÍÀÌ´Ù. ±×¸®°í ³ª¼ 2D ¹è¿ ³»ÀÇ ¸ðµç °ªÀ» ±âº»ÀûÀ¸·Î ºó ºí·ÏÀ¸·Î ¸¸µå´Â
resetBoard() ¸Þ¼Òµå¸¦ È£ÃâÇÒ °ÍÀÌ´Ù.
Á¶°¢ Ãß°¡ ¹× Á¦°ÅÇϱâ
Á¶°¢µéÀÌ ÆÇ¿¡ Ãß°¡µÇ°í Á¦°ÅµÇ±â ¶§¹®¿¡ ¿ì¸®´Â addPiece() ¿Í
removePiece() ¸Þ¼Òµå¸¦ Á¦°øÇÑ´Ù. addPiece() ¸Þ¼Òµå´Â
TetrisPiece() ¸¦ ÃëÇÏ°í ÆÇ¿¡¼ ÀÌ ¸Þ¼Òµå°¡ Â÷ÁöÇÏ´Â ¸ðµç À§Ä¡ÀÇ °ªÀ» ÀÚ½ÅÀÇ À¯ÇüÀ¸·Î ¼³Á¤ÇÔÀ¸·Î½á
ÀÛµ¿ÇÑ´Ù. removePiece() ¸Þ¼Òµå´Â ÆÇÀÇ °ªÀÌ ºó ºí·ÏÀÇ °ªÀ¸·Î ¼³Á¤µÈ´Ù´Â Á¡À» Á¦¿ÜÇÏ¸é ºñ½ÁÇÏ´Ù.
»ç¿ëÀÚ¿¡°Ô º¯°æ ÅëÁöÇϱâ
ÆÇ¿¡ º¯È°¡ ÀÖÀ» ¶§ »ç¿ëÀÚ°¡ ¾Ë ¼ö ÀÖµµ·Ï Çϱâ À§ÇØ, Á¶°¢ÀÌ Ãß°¡µÇ°Å³ª À̵¿µÇ¾úÀ» ¶§
BoardEvent °¡ ±¸µ¿µÉ °ÍÀÌ´Ù. ÀÌ À̺¥Æ®¸¦ µè´Â Ŭ·¡½ºµé¿¡ ´ëÇØ ¿ì¸®´Â
BoardListener ÀÎÅÍÆäÀ̽º°¡ ÇÊ¿äÇѵ¥, À̺¥Æ®°¡ ±¸µ¿µÇ¾úÀ» ¶§ ÀÌ ÀÎÅÍÆäÀ̽ºÀÇ
boardChange() ¸Þ¼Òµå°¡ È£ÃâµÈ´Ù. ÀÌ À̺¥Æ®µéÀº È¸é ¼öÁ¤ÀÌ ÇÊ¿äÇÒ ¶§ ÅëÁöµÇµµ·Ï Å×Æ®¸®½º ÆÇ
GUI¿¡ ÀÇÇØ »ç¿ëµÉ ¼ö ÀÖ´Ù. listener¸¦ ÀúÀåÇϱâ À§ÇØ ¿ì¸®´Â java.util.Vector ¸¦ »ç¿ëÇÒ
°ÍÀÌ°í, listener¸¦ Ãß°¡/»èÁ¦ÇÏ°í À̺¥Æ®¸¦ ±¸µ¿½ÃÅ°±â À§ÇÑ °ü·Ã ¸Þ¼Òµå¸¦ Á¦°øÇÒ °ÍÀÌ´Ù.
¶§¶§·Î ¿©·¯ºÐÀÌ Á¶°¢À» Ãß°¡ÇÏ°í »èÁ¦ÇÒ ¶§ BoardEvent s¸¦ ±¸µ¿½ÃÅ°´Â °ÍÀÌ ºÎÀûÀýÇÒ ¼ö ÀÖ´Ù.
Á¶°¢ÀÌ ¶³¾îÁ®¾ß ÇÒ ¶§ (ÀÌ À̵¿Àº Á¶°¢À» ¶³¾î¶ß¸®±â À§ÇØ while ·çÇÁ¸¦ »ç¿ëÇÑ´Ù´Â °ÍÀ» ±â¾ïÇ϶ó)¸¦ ¿¹·Î
µé ¼ö ÀÖ´Ù. ÀÌ °æ¿ì Á¶°¢ÀÌ ¹Ù´Ú¿¡ ºÎµúÃÆÀ» ¶§¸¸ À̺¥Æ®°¡ ÇÊ¿äÇÏ´Ù. À̸¦ ¿ëÀÌÇÏ°Ô Çϱâ À§ÇØ ¿ì¸®´Â boolean ¸Å°³º¯¼ö¸¦
ÃëÇϵµ·Ï addPiece() ¸Þ¼Òµå¸¦ ¸¸µé¾î °ªÀÌ true ÀÏ °æ¿ì¿¡¸¸ À̺¥Æ®°¡
±¸µ¿µÇµµ·Ï ÇÒ °ÍÀÌ´Ù.
¿Ï¼ºµÈ Çà ¾ø¾Ö±â
Å×Æ®¸®½º °ÔÀÓÀÇ Áß¿ä ¿ä¼Ò Áß Çϳª´Â ÇÑ ÇàÀÌ ¿Ï·áµÇ¸é ±× ÇàÀº »ç¶óÁö°í ±× À§ÀÇ ¸ðµç ÇàµéÀÌ ³»·Á¿Â´Ù´Â °ÍÀÌ´Ù. À̸¦ À§ÇØ
¿ì¸®´Â »èÁ¦µÉ ÇàÀÇ Áö¼ö¸¦ ¸Å°³º¯¼ö·Î ÃëÇÏ´Â removeRow() ¸Þ¼Òµå¸¦ Á¦°øÇÒ °ÍÀÌ´Ù. ÇàÀÌ ¾ø¾îÁø ÈÄ¿¡
BoardEvent °¡ ±¸µ¿µÉ °ÍÀÌ´Ù.
TetrisBoard ¸¶¹«¸®Çϱâ
private º¯¼öµé¿¡ Á¢±ÙÇϱâ À§ÇØ ÇÊ¿äÇÑ getter¿Í setterµé ¿Ü¿¡µµ, ¿ì¸®´Â
ÇϳªÀÇ ¸Þ¼Òµå°¡ ´õ ÇÊ¿äÇÏ´Ù. ¾Õ¿¡¼ ¼³¸íÇÑ willFit() °¡ ±×°ÍÀÌ´Ù. ÀÌ ¸Þ¼Òµå´Â
TetrisPiece ¸¦ ¸Å°³º¯¼ö·Î ÃëÇØ ±× Á¶°¢ÀÌ ÆÇ¿¡ ¸Â´ÂÁö °áÁ¤Çϱâ À§ÇÑ boolean °ªÀ» µ¹·ÁÁØ´Ù.
¸Â´Â´Ù´Â °ÍÀº ±× Á¶°¢ÀÌ ÆÇÀÇ °æ°è ¾È¿¡ ÀÖ°í ÆÇ¿¡¼ ±× Á¶°¢ÀÌ ¸ÂÃçÁú °÷¿¡ ÀÖ´Â ºí·ÏÀÇ °ªÀÌ ºñ¾î ÀÖ´Ù°í ¼³Á¤µÇ¾î ÀÖÀ½À» ÀǹÌÇÑ´Ù.
ÀÌ·± °æ¿ì true °ªÀÌ ¹ÝȯµÈ´Ù.
ÀÌÁ¦ TetrisBoard Ŭ·¡½º°¡ ¿Ï¼ºµÇ¾ú´Ù.ÀÌ Å¬·¡½º¸¦ Æ÷ÇÔÇÑ ¿Ï¼ºµÈ ¼Ò½º¸¦ Âü°í
ÀÚ·á¿¡¼ ´Ù¿î·Îµå¹ÞÀ» ¼ö ÀÖ´Ù.
100 ÇÇÆ® º®À» °¡Áø Å×Æ®¸®½º?
¾î´À³¯ ³ª´Â ÀÌ ºóÀ» Ÿ¿ö ºí·ÏÀÇ Á¡µî ½Ã½ºÅÛ¿¡ ¿¬°á½ÃÅ°°í ºôµùÀÇ Ãø¸éÀ» µû¶ó ³»·Á°¡¸é¼ Å×Æ®¸®½º °ÔÀÓÀ» ÇÏ°í
½Í¾îÁ³´Ù. ³ª´Â ´©±º°¡°¡ ÀÌ·¸°Ô Çß´Ù´Â °ÍÀ» ½Å¹®¿¡¼ ÀÐÀº ÈÄ ³»³» ÀÌ°ÍÀ» ÇÏ°í ½Í¾îÇØ ¿Ô´Ù.
|
Å×Æ®¸®½º °ÔÀÓ ¸ðµ¨ : TetrisGame Ŭ·¡½º
ÀÌÁ¦ Å×Æ®¸®½º °ÔÀÓ¿¡¼ »ç¿ëµÇ´Â µÎ °³ÀÇ ÁÖ ÄÄÆ÷³ÍÆ®¸¦ ¸¸µé¾úÀ¸¹Ç·Î, À̵éÀ» ¸ð¾Æ °ÔÀÓ ·ÎÁ÷À» ¸¸µé¸é µÈ´Ù.
GameThread ³»ºÎ Ŭ·¡½º
°ÔÀÓÀÇ È帧À» Á¦¾îÇϱâ À§ÇÑ ÁÁÀº ¹æ¹ýÀº ÀÌ°ÍÀ»
java.lang.Thread ¸¦ È®ÀåÇÏ´Â ³»ºÎ Ŭ·¡½º¿¡ ³»Àå½ÃÅ°´Â °ÍÀÌ´Ù. ÀÌ ¹æ½ÄÀÇ ÇÑ °¡Áö ÀåÁ¡Àº °ÔÀÓ
¼Óµµ¸¦ Á¦¾îÇϱâ À§ÇØ ½º·¹µå sleep È£ÃâÀ» Ãß°¡ÇÒ ¼ö ÀÖ´Ù´Â °ÍÀÌ´Ù. ¶Ç ´Ù¸¥ ÀåÁ¡Àº ÇöÀç ÁÖ ¾ÖÇø®ÄÉÀÌ¼Ç ½º·¹µå°¡ ÀÚÀ¯·Ó±â
¶§¹®¿¡ ÇϳªÀÇ GUI°¡ ÷ºÎµÉ ¶§ »öÄ¥ ¹®Á¦°¡ ¾ø¾îÁø´Ù´Â °ÍÀÌ´Ù. ÀÌ ¹®Á¦´Â ÁÖ ½º·¹µå°¡ °è¼Ó ¹¿© ÀÖ¾î »öÄ¥ÇÒ ½Ã°£ÀÌ ¾øÀ» ¶§
¶§¶§·Î ¹ß»ýÇÒ ¼ö ÀÖ´Ù.
½º·¹µå ³»ÀÇ ·ÎÁ÷Àº run() ¸Þ¼Òµå ³»ÀÇ while ·çÇÁ ¼Ó¿¡ ±¸ÇöµÉ °ÍÀÌ´Ù.
·çÇÁ´Â °è¼ÓÇؼ Á¶°¢À» ¸¸µé¾î ³»°í Á¶°¢À» ´õ ÀÌ»ó ¸ÂÃâ ¼ö ¾øÀ» ¶§±îÁö À̵éÀ» °ÔÀÓÆÇÀ¸·Î ¶³¾î¶ß¸± °ÍÀÌ´Ù. ÀÌ ¶§
fPlaying À̶ó´Â Áö¿ª boolean º¯¼ö°¡ false ·Î ¼³Á¤µÇ¾î ·çÇÁ¸¦ ³¡³»°í
GameEvent ¸¦ ±¸µ¿½ÃÄÑ °ÔÀÓÀÌ Á¾·áµÇ¾úÀ½À» Ç¥½ÃÇÒ °ÍÀÌ´Ù.
while ·çÇÁ ³»¿¡ fPaused ÀÇ boolean °ªÀ» üũÇÏ´Â
if ÀýÀÌ ÀÖ´Ù. ÀÌ °ªÀÌ true ·Î ¼³Á¤µÇ¾úÀ» °æ¿ì ·çÇÁ´Â °è¼Ó ½ÇÇàµÇ°ÚÁö¸¸ ¸ðµç
°ÔÀÓ ·ÎÁ÷ÀÌ ¹«½ÃµÇ¾î Á¾·áµÇ´Â ´À³¦À» ÁÙ °ÍÀÌ´Ù. BooleanÀÌ false·Î ´Ù½Ã ¹Ù²î¸é °ÔÀÓÀÌ °è¼ÓµÉ °ÍÀÌ´Ù.
¿ì¸®´Â ÇÑ ¹ø¿¡ Çϳª¾¿ ¶³¾îÁö´Â Á¶°¢¿¡¸¸ °ü½ÉÀ» °¡Áö°í ÀÖÀ¸¹Ç·Î, ¿©±â¿¡ ´ëÇÑ ÂüÁ¶¸¦ ÀúÀåÇÒ
fCurrPiece ¶ó´Â º¯¼ö¸¦ ¸¸µé °ÍÀÌ´Ù. ÀÌ º¯¼ö°¡ null °ªÀ¸·Î ¼³Á¤µÇ¸é ÀÌÀüÀÇ Á¶°¢ÀÌ ´õ ÀÌ»ó ¾Æ·¡·Î
³»·Á°¥ ¼ö ¾øÀ¸¸ç ÆÇÀÇ ÃÖÁ¾ À§Ä¡¿¡ µµÂøÇßÀ½À» ÀǹÌÇÑ´Ù. ÀÌ ¶§ ¿ì¸®´Â »õ Á¶°¢À» ¸¸µé¾î ÆÇÀÇ ¸Ç À§ Áß¾Ó¿¡ µÐ´Ù.
fCurrPiece º¯¼ö°¡ null°ªÀÌ ¾Æ´Ñ ¸ðµç °æ¿ì¿¡ ¿ì¸®°¡ ÇØ¾ß ÇÒ ÀÏÀº ±× °ÍÀ» ÇÑ À§Ä¡·Î ¶³¾î¶ß¸®°í
ÁÖ¾îÁø ½Ã°£ µ¿¾È ½º·¹µå¸¦ ÈÞ¸é »óÅ·Π¸¸µå´Â °ÍÀÌ´Ù.
ÇÑ Á¶°¢ÀÌ ´õ ÀÌ»ó ¿òÁ÷ÀÏ ¼ö ¾ø°Ô µÇ¾úÀ» ¶§ ¿ì¸®´Â ÇàÀÌ ¿Ï¼ºµÇ¾ú´ÂÁö º¸¾Æ¾ß ÇÑ´Ù. À̸¦
À§ÇÑ ¼Õ½¬¿î ¹æ¹ýÀº ÇÑ ½ÖÀÇ Áßø for ·çÇÁ¸¦ »ç¿ëÇÏ´Â °ÍÀÌ´Ù. ÀÌ for ·çÇÁÀÇ ¹Ù±ù ÂÊ ·çÇÁ´Â ÇàÀÇ Áö¼ö¸¦ µû¶ó ÀÛ¾÷Çϸç,
¾ÈÂÊÀÇ ·çÇÁ´Â Áö¼ö Àüü¿¡ °ÉÃÄ È®ÀÎ ÀÛ¾÷À» ¼öÇàÇÑ´Ù. ¸¸ÀÏ ¿ì¸®°¡ ¿Ï¼ºµÈ ÇàÀ»
¹ß°ßÇϸé, TetrisBoard Ŭ·¡½º¿¡ ±¸ÇöµÈ removeRow() ¸Þ¼Òµå¸¦ È£ÃâÇϸç
¿Ï¼ºµÈ ÇàÀÇ Áö¼ö¸¦ Àü´ÞÇÒ ¼ö ÀÖ´Ù. ÀÌÁ¦ Á¦°ÅµÈ Çà À§ÀÇ ¸ðµç ÇàµéÀÌ Çϳª¾¿ ³»·Á¿Ã °ÍÀ̱⠶§¹®¿¡ ¿ì¸®´Â À̵éÀ» ´Ù½Ã üũÇØ¾ß ÇÒ
°ÍÀÌ´Ù. ¿©·¯ ÇàÀ» Çѹø¿¡ ¿Ï¼ºÇϵµ·Ï Àå·ÁÇϱâ À§ÇØ ¿ì¸®´Â ¿Ï¼ºµÈ ÇàÀÇ °³¼ö¸¦ ÀúÀåÇÏ°í °¢°¢ ´õ ³ôÀº Á¡¼ö¸¦ ÁÙ °ÍÀÌ´Ù.
Å×Æ®¸®½º °ÔÀÓÀÇ ¶Ç ´Ù¸¥ ÁÖ¿ä ¿ä¼Ò´Â ´õ ¸¹Àº ÇàÀÌ ¿Ï¼ºµÉ¼ö·Ï Á¶°¢ÀÌ ´õ »¡¸® ³»·Á¿Â´Ù´Â
°ÍÀÌ´Ù. ÀÌ ±â´ÉÀº Áö±Ý±îÁö ¿Ï¼ºµÈ ÇàÀÇ °³¼ö¸¦ üũÇÏ°í ÀÌ¿¡ µû¶ó ½º·¹µåÀÇ ÈÞ¸é Áֱ⸦ Á¡Â÷ °¨¼Ò½ÃÄÑ°¡´Â ¹æ½ÄÀ¸·Î ±¸ÇöµÉ ¼ö
ÀÖ´Ù.
GameThread ³»ºÎ Ŭ·¡½º¸¦ ¸¸µé±â À§ÇØ ÇÊ¿äÇÑ °ÍÀº ÀÌ°ÍÀÌ ÀüºÎÁö¸¸, ±¸ÇöÇØ¾ß ÇÒ ¶Ç ´Ù¸¥ ³»ºÎ
Ŭ·¡½º°¡ ÀÖ´Ù. ´Ù¼öÀÇ À̺¥Æ®°¡ ±¸µ¿µÉ °ÍÀÌ°í À̵éÀº listerners°¡ ÀúÀåµÇµµ·Ï ¿ä±¸ÇÒ °ÍÀ̹ǷÎ, À̵éÀ» ¸ðµÎ ÇÑ Àå¼Ò¿¡ µÎ´Â
°ÍÀÌ ÁÁÀ» °ÍÀÌ´Ù. ¿ì¸®´Â EventHandler ³»ºÎ Ŭ·¡½º¸¦ »ç¿ëÇÏ¿© À̸¦ ¼öÇàÇÒ °ÍÀÌ´Ù.
EnvetnHandler ³»ºÎ Ŭ·¡½º ÀÌ Å¬·¡½º´Â ¿ì¸®°¡ ±¸µ¿ÇÏ´Â À̺¥Æ®¿¡ °ü½ÉÀÌ ÀÖ´Â
listenerµé¿¡ ´ëÇÑ ÂüÁ¶¸¦ ÀúÀåÇÒ °ÍÀÌ´Ù. listenerµé¿¡ ´ëÇÑ add ¿Í remove
¸Þ¼Òµå¸¦ Á¦°øÇÒ »Ó ¾Æ´Ï¶ó À̺¥Æ®µéÀ» ±¸µ¿Çϱâ À§ÇÑ À¯Æ¿¸®Æ¼ ¸Þ¼Òµåµµ ÀÖÀ» °ÍÀÌ´Ù.
ÀÌ Å¬·¡½º´Â ´ÙÀ½ À¯ÇüÀÇ À̺¥Æ®µéÀ» ´Ù·é´Ù. :
GameEvent : °ÔÀÓÀÌ ½ÃÀ۵ǰųª ¸ØÃâ ¶§¸¶´Ù ±¸µ¿µÈ´Ù. °ÔÀÓ
START ȤÀº END ¸¦ Ç¥½ÃÇϱâ À§ÇÑ °ªÀ» °¡Áö°í ÀÖ´Ù.
BoardEvent : °ÔÀÓÆÇ¿¡ º¯°æ »çÇ×ÀÌ ÀÖÀ» ¶§ ±¸µ¿µÈ´Ù.
EventHandler Ŭ·¡½º¿¡¼ Ãß°¡/»èÁ¦ listener È£ÃâÀÌ
TetrisBoard Ŭ·¡½º·Î Àü´ÞµÈ´Ù.
ScoreEvent : Á¡¼ö°¡ ¹Ù²ð ¶§ ±¸µ¿µÈ´Ù.
±¸µ¿µÉ ¼ö ÀÖ´Â ¸¹Àº ´Ù¸¥ À¯ÇüÀÇ À̺¥Æ®µéÀÌ ÀÖÁö¸¸, °£Æí¼ºÀ» À§ÇØ ³ª´Â À§¿¡¼ ¼³¸íÇÑ À̺¥Æ®µé¸¸ »ç¿ëÇÏ¿´´Ù. ¿ì¸®°¡ ±¸ÇöÇÒ ¼ö
ÀÖ´Â ´Ù¸¥ À̺¥Æ®¿¡´Â LineEvent °¡ Àִµ¥, ÇÑ Çà, ȤÀº ¿©·¯ ÇàÀÌ ¿Ï¼ºµÇ¾úÀ» ¶§ ±¸µ¿µÇ°í ȸé
¾Ö´Ï¸ÞÀ̼ÇÀ» ÀÏÀ¸Å°´Âµ¥ »ç¿ëµÉ ¼ö ÀÖ´Ù.
TetrisGame ¸¶¹«¸®Çϱâ
ÀÌÁ¦ ³»ºÎ Ŭ·¡½ºµéÀ» ¿Ï¼ºÇÏ¿´À¸¹Ç·Î TetrisGame Ŭ·¡½ºÀÇ ³ª¸ÓÁö ºÎºÐÀ» ¼³¸íÇØ¾ß ÇÑ´Ù. ¸ðµç ÀÚ¹Ù
ºó°ú ¸¶Âù°¡Áö·Î ¿ì¸®´Â ¸Å°³ º¯¼ö ¾ø´Â »ý¼ºÀÚ°¡ ÇÊ¿äÇÏ´Ù. ÀÌ »ý¼ºÀÚ¿¡¼ ¿ì¸®´Â
EventHandler Ŭ·¡½º¿Í TetrisBoard Ŭ·¡½ºÀÇ ÀνºÅϽº¸¦ ¸¸µé °ÍÀÌ´Ù.
TetrisBoard Ŭ·¡½º 10x20À̶ó´Â ±âº» »çÀÌÁ °¡Áú °ÍÀÌ´Ù.
°ÔÀÓ »óŸ¦ Á¦¾îÇϱâ À§ÇØ ¿ì¸®´Â °³½Ã, ÁßÁö, ÀϽà ÁßÁö ¸Þ¼Òµå¸¦ »ç¿ëÇÒ °ÍÀÌ´Ù. startGame()
¸Þ¼Òµå´Â ¸ðµç °ÔÀÓ º¯¼ö¸¦ ¸®¼ÂÇÏ°í ScoreEvent (ÀÌÁ¦ 0À¸·Î ¸®¼ÂµÊ)¿Í
GameEvent (START¶ó´Â ¸Å°³ º¯¼ö À¯ÇüÀ» °¡Áü)¸¦ ±¸µ¿½Ãų °ÍÀÌ´Ù. ¶ÇÇÑ
GameThread ¸¦ »ý¼ºÇÏ¿© °³½ÃÇÒ °ÍÀÌ´Ù. stopGame() ¸Þ¼Òµå´Â
fPlaying º¯¼ö¸¦ false ·Î ¹Ù²Ù¾î GameThread °¡
³¡³ªµµ·Ï ÇÏ°í END ¶ó´Â ¸Å°³º¯¼ö À¯ÇüÀ¸·Î GameEvent ¸¦ ±¸µ¿½ÃŲ´Ù.
setPause() ¸Þ¼Òµå´Â ÇÑ °ÔÀÓÀ» ÀϽà ÁßÁö½ÃÅ°´Â ¿ªÇÒ¸¸ ÇÑ´Ù.
ÇÊ¿äÇÑ ¸ðµç getters¿Í setters¿Í º°µµ·Î, ±¸ÇöÇÒ ¸Þ¼Òµå°¡ Çϳª ´õ Àִµ¥, move()
¸Þ¼Òµå°¡ ±×°ÍÀÌ´Ù. ÀÌ ¸Þ¼Òµå´Â À̵¿ ¹æÇâÀ» ¸Å°³º¯¼ö·Î ÃëÇϴµ¥, ÀÌ°ÍÀº TetrisPiece Ŭ·¡½º¿¡¼
³ª¿À´Â »ý¼ºÀÚÀÌ´Ù. move() ¸Þ¼Òµå´Â °ÔÀÓÀÌ ÁøÇàÁßÀ̸ç ÀϽà ÁßÁö »óÅ°¡ ¾Æ´Ï¶ó°í °¡Á¤ÇÏ°í À̵¿ÇÏ·Á°í
½ÃµµÇÑ´Ù. ±× À̵¿ÀÌ ¾Æ·¡·Î ¶³¾îÁö´Â ¿äûÀε¥ ¼º°øÇÏÁö ¸øÇÑ´Ù¸é fCurrPiece °¡ null °ªÀ¸·Î ¼³Á¤µÇ°í
Á¶°¢Àº °ÔÀÓÆÇ ³»ÀÇ ÇöÀç À§Ä¡¿¡ ³²¾Æ ÀÖÀ» °ÍÀÌ´Ù. ±×·¯¸é GameThread ´Â »õ·Î¿î Á¶°¢À» »ý¼ºÇÑ´Ù.
TetrisGame ¿¡ ´ëÇؼ´Â ÀÌ°Ô ÀüºÎÀÌ´Ù. ÀÌ Å¬·¡½º¸¦ Æ÷ÇÔÇÑ ¿Ï¼ºµÈ ¼Ò½º¸¦ Âü°í
ÀÚ·á¿¡¼ ´Ù¿î·Îµå ¹ÞÀ» ¼ö ÀÖ´Ù.
ÀÌÁ¦ ¿Ïº®ÇÔÀ» À§ÇØ ¿ì¸®´Â BeanInfo Ŭ·¡½º¸¦ ¸¸µé°í ÀÌ Å¬·¡½ºµéÀ» ÀûÀýÇÑ ÆÄÀϵé·Î ä¿ï ¼ö
ÀÖÁö¸¸, ¿©±â¿¡¼´Â ±×·² ÇÊ¿ä°¡ ¾ø´Ù. ¿ì¸®°¡ ÇÊ¿äÇÑ °ÍÀº ¿ì¸®ÀÇ ºóÀ» Å×½ºÆ®ÇÒ °£´ÜÇÑ GUIÀÌ°í Âü°í
ÀÚ·á¿¡ Çϳª°¡ Á¦°øµÇ°í ÀÖ´Ù. ÀÌ°ÍÀº Å×Æ®¸®½º °ÔÀÓÆÇÀ» ±×¸®±â À§ÇØ ÇÑ °³ÀÇ ³»ºÎ Ŭ·¡½º¸¦ »ç¿ëÇÏ°í Å° Á¶ÀÛÀ» Á¶Á¤Çϱâ À§ÇÑ
¸î °¡Áö ·ÎÁ÷À» Æ÷ÇÔÇÏ°í ÀÖ´Â °£´ÜÇÑ Å¬·¡½ºÀÌ´Ù. GUI´Â javax.swing.JFrame ¿¡ Ç¥½ÃµÇ¸ç,
¼±ÅÃÀûÀ¸·Î java.applet.Applet ÀÌ µÉ ¼öµµ ÀÖ´Ù.
¿ì¸®ÀÇ Å×Æ®¸®½º ºóÀ» Å×½ºÆ®Çϱâ À§ÇØ ¼Ò½º
ÆÄÀÏÀ» Ǫ´Âµ¥, µð·ºÅ丮 ±¸Á¶¸¦ ±×´ë·Î µÎ±â ¹Ù¶õ´Ù. (¿Ö³ÄÇÏ¸é ³»°¡ ºó Ŭ·¡½ºµéÀÌ TetrisBean µð·ºÅ丮¿¡ ÀÖµµ·Ï
À̵éÀ» TetrisBean ÆÐÅ°Áö¿¡ µÎ¾ú±â ¶§¹®¿¡ ¶§¹®ÀÌ´Ù.) ¿©·¯ºÐÀÌ ¼Ò½º ÆÄÀÏÀ» Ǭ °æ·Î¸¦ Àڹ٠Ŭ·¡½º
°æ·Î¿¡ Ãß°¡ÇÏ°í ÆÄÀÏÀ» ÄÄÆÄÀÏÇÑ´Ù. ÀÌÁ¦ ¿©·¯ºÐÀÌ ÇØ¾ß ÇÒ ÀÏÀº "java Scottris"¸¦ ½ÇÇà½ÃÅ°´Â °Í »ÓÀÌ´Ù.
³ª´Â ÀÌ·¯ÇÑ Å×Æ®¸®½º ºóÀ» ±¸ÇöÇÒ ¼ö ÀÖ´Â ¸¹Àº ¹æ¹ýÀÌ ÀÖ´Ù´Â °ÍÀ» ¾Ë°í ÀÖ´Ù. ³»°¡ ÀÌ ±Û¿¡¼ ¼Ò°³ÇÑ °ÍÀº ¾ÆÁÖ °£´ÜÇÑ
¹æ¹ýÀ̸ç, ÀÌ°ÍÀÌ ¿©·¯ºÐÀÇ Ã¢Á¶·Â¿¡ ºÒÀ» ºÙÀÏ ¼ö Àֱ⸦ ¹Ù¶õ´Ù. ³ª´Â ¿©·¯ºÐÀÌ ÀÌ°ÍÀ» ÀÚÀ¯·Ó°Ô °³¼±½ÃÅ°±â ¹Ù¶õ´Ù.
Âü°íÀÚ·á
ÇÊÀÚ¼Ò°³ Scott Clee´Â ÇöÀç IBMÀÇ CICS Á¦Ç°¿¡ ´ëÇÑ FV
Tester·Î ÀÏÇÏ°í ÀÖ´Ù. 4³â°£ ÀÚ¹Ù ÇÁ·Î±×·¡¸Ó·Î ÀÏÇßÀ¸¸ç ÀÚ¹Ù¿Í °ü·ÃµÈ Àç¹ÌÀÖ´Â ÇÁ·ÎÁ§Æ®¸¦ Ãë¹Ì »ï¾Æ ¼öÇàÇÏ´Â °ÍÀ»
Áñ±ä´Ù. |
|