IBM Korea Skip to main content
       IBM Ȩ    |  Á¦Ç° & ¼­ºñ½º  |  °í°´Áö¿ø & ´Ù¿î·Îµå  |  È¸¿ø°¡ÀÔ  

ÀÚ¹Ù ºó°ú Å×Æ®¸®½º
¸ñ Â÷:
Á¶°¢°ú ºÎºÐ
TetrisPiece Ŭ·¡½º
TetrisBoard Ŭ·¡½º
TetrisGame Ŭ·¡½º
Âü°í ÀÚ·á
ÇÊÀÚ ¼Ò°³
±â»ç¿¡ ´ëÇÑ Æò°¡
°ü·Ã dW ¸µÅ©:
dW at JavaOne: »õõ³âÀÇ °ÔÀÓ
Robocode
Rock 'em, sock 'em Robocode!
US ¿ø¹® Àбâ
Å×Æ®¸®½º °ÔÀÓÀÇ ±¸¼º ¿ä¼ÒµéÀ» ÀÚ¹Ù °´Ã¼·Î ³ª´©¾î Àç»ç¿ë °¡´ÉÇÑ ÀÚ¹Ù °ÔÀÓ ÄÄÆ÷³ÍÆ®·Î ¸¸µå´Â ¹æ¹ý

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) ÁÂÇ¥, ȸÀüÀ² ¹× ¸ð¾ç
Four elements of each Tetris piece

Å×Æ®¸®½º ºóÀ¸·Î ¹«¾ùÀ» ÇÒ ¼ö ÀÖÀ»±î?

´ÙÀ½Àº Å×Æ®¸®½º ºóÀ» ¸¸µç ÈÄ ³»°¡ ¼öÇàÇÑ ¸î °¡Áö ÀϵéÀÌ´Ù.

  • ºóÀÇ µÎ ÀνºÅϽº¸¦ ¿¬°á½ÃÄÑ ´ë°á °ÔÀÓÀ» ¸¸µé´Ù.
  • 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;

À¯¿¬¼ºÀ» À¯ÁöÇϱâ À§ÇØ ÆÇÀÇ Å©±â¸¦ °¡º¯ÀûÀ¸·Î ÇÏ°ÚÁö¸¸ ÀÌ°ÍÀ» »ý¼ºÀÚ ³»¿¡ Á¤ÀÇÇÒ °ÍÀÌ´Ù. µû¶ó¼­ »ý¼ºÀÚ´Â ¿­°ú ÇàÀÇ ¼ö¸¦ ³ªÅ¸³»´Â µÎ ints¸¦ ¹Þ¾ÆµéÀÏ °ÍÀÌ´Ù. ±×¸®°í ³ª¼­ 2D ¹è¿­ ³»ÀÇ ¸ðµç °ªÀ» ±âº»ÀûÀ¸·Î ºó ºí·ÏÀ¸·Î ¸¸µå´Â resetBoard() ¸Þ¼Òµå¸¦ È£ÃâÇÒ °ÍÀÌ´Ù.

Á¶°¢ Ãß°¡ ¹× Á¦°ÅÇϱâ

Á¶°¢µéÀÌ ÆÇ¿¡ Ãß°¡µÇ°í Á¦°ÅµÇ±â ¶§¹®¿¡ ¿ì¸®´Â addPiece()¿Í removePiece()¸Þ¼Òµå¸¦ Á¦°øÇÑ´Ù. addPiece() ¸Þ¼Òµå´Â TetrisPiece()¸¦ ÃëÇÏ°í ÆÇ¿¡¼­ ÀÌ ¸Þ¼Òµå°¡ Â÷ÁöÇÏ´Â ¸ðµç À§Ä¡ÀÇ °ªÀ» ÀÚ½ÅÀÇ À¯ÇüÀ¸·Î ¼³Á¤ÇÔÀ¸·Î½á ÀÛµ¿ÇÑ´Ù. removePiece() ¸Þ¼Òµå´Â ÆÇÀÇ °ªÀÌ ºó ºí·ÏÀÇ °ªÀ¸·Î ¼³Á¤µÈ´Ù´Â Á¡À» Á¦¿ÜÇÏ¸é ºñ½ÁÇÏ´Ù.

»ç¿ëÀÚ¿¡°Ô º¯°æ ÅëÁöÇϱâ

ÆÇ¿¡ º¯È­°¡ ÀÖÀ» ¶§ »ç¿ëÀÚ°¡ ¾Ë ¼ö ÀÖµµ·Ï Çϱâ À§ÇØ, Á¶°¢ÀÌ Ãß°¡µÇ°Å³ª À̵¿µÇ¾úÀ» ¶§ BoardEvent°¡ ±¸µ¿µÉ °ÍÀÌ´Ù. ÀÌ À̺¥Æ®¸¦ µè´Â Ŭ·¡½ºµé¿¡ ´ëÇØ ¿ì¸®´Â BoardListener ÀÎÅÍÆäÀ̽º°¡ ÇÊ¿äÇѵ¥, À̺¥Æ®°¡ ±¸µ¿µÇ¾úÀ» ¶§ ÀÌ ÀÎÅÍÆäÀ̽ºÀÇ boardChange()¸Þ¼Òµå°¡ È£ÃâµÈ´Ù. ÀÌ À̺¥Æ®µéÀº È­¸é ¼öÁ¤ÀÌ ÇÊ¿äÇÒ ¶§ ÅëÁöµÇµµ·Ï Å×Æ®¸®½º ÆÇ GUI¿¡ ÀÇÇØ »ç¿ëµÉ ¼ö ÀÖ´Ù. listener¸¦ ÀúÀåÇϱâ À§ÇØ ¿ì¸®´Â java.util.Vector¸¦ »ç¿ëÇÒ °ÍÀÌ°í, listener¸¦ Ãß°¡/»èÁ¦ÇÏ°í À̺¥Æ®¸¦ ±¸µ¿½ÃÅ°±â À§ÇÑ °ü·Ã ¸Þ¼Òµå¸¦ Á¦°øÇÒ °ÍÀÌ´Ù.

¶§¶§·Î ¿©·¯ºÐÀÌ Á¶°¢À» Ãß°¡ÇÏ°í »èÁ¦ÇÒ ¶§ BoardEvents¸¦ ±¸µ¿½ÃÅ°´Â °ÍÀÌ ºÎÀûÀýÇÒ ¼ö ÀÖ´Ù. Á¶°¢ÀÌ ¶³¾îÁ®¾ß ÇÒ ¶§ (ÀÌ À̵¿Àº Á¶°¢À» ¶³¾î¶ß¸®±â À§ÇØ 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"¸¦ ½ÇÇà½ÃÅ°´Â °Í »ÓÀÌ´Ù.

³ª´Â ÀÌ·¯ÇÑ Å×Æ®¸®½º ºóÀ» ±¸ÇöÇÒ ¼ö ÀÖ´Â ¸¹Àº ¹æ¹ýÀÌ ÀÖ´Ù´Â °ÍÀ» ¾Ë°í ÀÖ´Ù. ³»°¡ ÀÌ ±Û¿¡¼­ ¼Ò°³ÇÑ °ÍÀº ¾ÆÁÖ °£´ÜÇÑ ¹æ¹ýÀ̸ç, ÀÌ°ÍÀÌ ¿©·¯ºÐÀÇ Ã¢Á¶·Â¿¡ ºÒÀ» ºÙÀÏ ¼ö Àֱ⸦ ¹Ù¶õ´Ù. ³ª´Â ¿©·¯ºÐÀÌ ÀÌ°ÍÀ» ÀÚÀ¯·Ó°Ô °³¼±½ÃÅ°±â ¹Ù¶õ´Ù.

Âü°íÀÚ·á

ÇÊÀÚ¼Ò°³
Photo of Scott CleeScott Clee´Â ÇöÀç IBMÀÇ CICS Á¦Ç°¿¡ ´ëÇÑ FV Tester·Î ÀÏÇÏ°í ÀÖ´Ù. 4³â°£ ÀÚ¹Ù ÇÁ·Î±×·¡¸Ó·Î ÀÏÇßÀ¸¸ç ÀÚ¹Ù¿Í °ü·ÃµÈ Àç¹ÌÀÖ´Â ÇÁ·ÎÁ§Æ®¸¦ Ãë¹Ì »ï¾Æ ¼öÇàÇÏ´Â °ÍÀ» Áñ±ä´Ù.


ÀÌ ±â»ç¿¡ ´ëÇÏ¿© ¾î¶»°Ô »ý°¢ÇϽʴϱî?

Á¤¸» ÁÁ´Ù (5) ÁÁ´Ù (4) ±×Àú±×·¸´Ù (3) ¼öÁ¤º¸¿ÏÀÌ ÇÊ¿äÇÏ´Ù(2) ÇüÆí¾ø´Ù (1)

  È¸»ç¼Ò°³  |  °³ÀÎÁ¤º¸ º¸È£Á¤Ã¥  |  ¹ý·ü  |  ¹®ÀÇ