14-3-´Ù.°ÔÀÓÆÇ

°ÔÀÓÆÇÀÇ ÇöÀç »óÅÂ, Áï ¾îµð¿¡ ¾ó¸¶¸¸Å­ º®µ¹ÀÌ ½×¿© Àִ°¡´Â board ¹è¿­¿¡ ±â·ÏµÈ´Ù. ÀÌ ¹è¿­Àº main¿¡¼­ ÃÖÃÊ ´ÙÀ½°ú °°ÀÌ ÃʱâÈ­µÇ´Âµ¥ °ÔÀÓÆÇ ¹Ù±ùÂÊ Å׵θ®´Â ¸ðµÎ 2(WALL)°¡ µÇ¸ç ¾ÈÂÊÀº ¸ðµÎ 0(EMPTY)ÀÌ µÉ °ÍÀÌ´Ù. °ÔÀÓÀÌ ÁøÇàµÇ¸é ¾Æ·¡ÂÊ¿¡ º®µ¹ÀÌ Çϳª µÑ ¾¿ ½×À̴µ¥ ÀÌ À§Ä¡¿¡ 1(BRICK)ÀÌ ±â·ÏµÈ´Ù. °ÔÀÓÀ» ÁøÇàÇÏ´Â ÄÚµå´Â ÀÌ ¹è¿­ÀÇ »óŸ¦ º¸°í ¾îµð¿¡ º®µ¹ÀÌ ½×¿© ÀÖ´ÂÁö, ÇÑ ÁÙÀÌ ´Ù ä¿öÁ³´ÂÁö¸¦ ÆÇ´ÜÇÑ´Ù.

board ¹è¿­ÀÇ Å©±â´Â °ÔÀÓÆÇ ¾ÈÂÊ, ±×·¯´Ï±î º®µ¹ÀÌ ½×ÀÌ´Â ¿µ¿ªº¸´Ù Æø, ³ôÀ̸¦ °¢°¢ 2¾¿ ´õ Å©°Ô Àâ¾Æ ÁÖ°í »óÇÏ Á¿쿡 2(WALL)¶ó´Â °ªÀ» Á× ³ª¿­ÇØ µÎ¾ú´Ù. ÀÌ °ªÀÌ ¹è¿­ÀÇ ¹Ù±ùÂÊÀ» ¿ÏÀüÈ÷ ¿¡¿ö½Î°í Àֱ⠶§¹®¿¡ °ÔÀÓ ÁøÇà Äڵ忡¼­´Â GetAround ÇÔ¼öÀÇ µµ¿òÀ» ¹Þ¾Æ º®µ¹ÀÌ È­¸é ¹ÛÀ¸·Î ³ª°¥ ¼ö ¾øµµ·Ï ¿¡·¯ 󸮸¦ ÇÒ ¼ö ÀÖ´Ù. ¸¸¾à board°¡ ¿ÜºÎº®¿¡ ´ëÇÑ Á¤º¸¾øÀÌ ¼ø¼öÇÏ°Ô °ÔÀÓÆÇ¿¡ ´ëÇÑ Á¤º¸¸¸ °¡Áöµµ·Ï ÇÑ´Ù¸é À̵¿ÇÒ ¶§¸¶´Ù º®µ¹ÀÇ ÁÂÇ¥¸¦ ÀÏÀÏÀÌ Á¡°ËÇÏ¿© º®µ¹ÀÌ °ÔÀÓÆÇ ¹ÛÀ¸·Î ¸ø³ª°¡µµ·Ï ÇØ¾ß ÇÏ´Â ¹ø°Å·Î¿òÀÌ ÀÖ´Ù.

°ÔÀÓÆÇÀ» ±×¸®´Â ÇÔ¼ö´Â µÎ °³°¡ ÀÛ¼ºµÇ¾î Àִµ¥ DrawScreenÀº È­¸é Àüü¸¦ ´Ù½Ã ±×¸°´Ù. 0ºÎÅÍ ¿ÜºÎº®±îÁö(BW+2, BH+2) ¼øȸÇϸ鼭 board ¹è¿­¿¡ ±â·ÏµÈ °ª´ë·Î ŸÀÏÀ» ¼ø¼­´ë·Î Ãâ·ÂÇϱ⸸ ÇÏ¸é µÈ´Ù. ±×¸®°í ¸î °¡Áö ¾È³» ¹®ÀÚ¿­µµ °°ÀÌ Ãâ·ÂÇß´Ù. DrawBoard ÇÔ¼ö´Â ¿ÜºÎº®Àº Á¦¿ÜÇÏ°í º®µ¹ÀÌ ¿òÁ÷ÀÌ´Â °ø°£¸¸ Ãâ·ÂÇϴµ¥ board ¹è¿­ÀÇ 1ºÎÅÍ BW+1, BH+1±îÁö¸¸ ¼øȸÇÏ¸é µÈ´Ù. ä¿öÁø ÁÙÀ» »èÁ¦ÇÑ ÈÄ ÀÌ ÇÔ¼ö¸¦ È£ÃâÇÏ¸é °ÔÀÓÆÇ ¾ÈÂʸ¸ ´Ù½Ã ±×¸± °ÍÀÌ´Ù.

´ÙÀ½Àº main ÇÔ¼öÀÇ ±¸Á¶¸¦ ºÐ¼®ÇØ º¸ÀÚ. ÀüüÀûÀ¸·Î µÎ °³ÀÇ ¹«ÇÑ ·çÇÁ·Î ±¸¼ºµÇ¾î Àִµ¥ ¹«ÇÑ ·çÇÁ¿¡ for (;1;), for(;2;) µîÀ¸·Î À̸§À» ºÙ¿© ³õ¾Ò´Ù. Á¶°Ç½ÄÀÇ »ó¼ö´Â ÄÄÆÄÀÏ·¯¿¡ ÀÇÇØ ¹«½Ã´çÇÏÁö¸¸ ÀÌ·¸°Ô ¹øÈ£°¡ ÀÖÀ¸¸é ·çÇÁ¸¦ ĪÇÒ ¶§ Æí¸®ÇÏ´Ù. Á¶°Ç½ÄÀÌ 0¸¸ ¾Æ´Ï¸é ¹«ÇÑ ·çÇÁ°¡ µÇ¹Ç·Î for (;0;)°¡ ¾Æ´Ñ ÀÓÀÇÀÇ Á¤¼ö·Î À̸§À» ºÙÀÏ ¼ö ÀÖ´Ù. ·çÇÁ¿¡ µé¾î°¡±â Àü¿¡ Ä¿¼­ ¼û±è, ³­¼ö »ý¼º±â ÃʱâÈ­, È­¸é »èÁ¦ µîÀÇ Ã³¸®¸¦ ÇÏ°í board ¹è¿­ÀÇ ¹Ù±ùÂÊÀ» º®À¸·Î ÃʱâÈ­ÇÑ ÈÄ DrawScreen ÇÔ¼ö¸¦ È£ÃâÇÏ¿© È­¸é Àüü¸¦ ¸ðµÎ ±×¸°´Ù. º®µ¹ÀÌ ¶³¾îÁö´Â ¼ÓµµÀÎ nFrame°ªÀ» 20À¸·Î ÃʱâÈ­ÇÑ ÈÄ for (;1;)·çÇÁ·Î ÁøÀÔÇÏ¿© °ÔÀÓÀ» ÁøÇàÇÑ´Ù.

for (;1;) ·çÇÁ´Â °ÔÀÓ Àüü¸¦ °¨½Î´Â ·çÇÁÀÌ°í for (;2;) ·çÇÁ´Â º®µ¹ Çϳª°¡ ¹Ù´Ú¿¡ ´êÀ» ¶§±îÁöÀÇ ·çÇÁÀÌ´Ù. for(;1;)¿¡¼­ »õ·Î¿î º®µ¹À» À§ÂÊ Áß¾Ó ÁÂÇ¥ÀÎ (BW/2, 3) À§Ä¡¿¡ »ý¼ºÇÏ°í ÀÌ º®µ¹À» ÀÏ´Ü È­¸é¿¡ Ãâ·ÂÇÑ´Ù. »õ·Î ¸¸µå´Â º®µ¹ÀÇ ¹øÈ£´Â ¹°·Ð ³­¼ö·Î ¼±ÅÃÇÏ¿´À¸¸ç ȸÀü ¸ð¾çÀº 0¹øºÎÅÍ ½ÃÀÛÇÑ´Ù. º®µ¹À» »ý¼ºÇÑ ÈÄ °ÔÀÓ ³¡ 󸮸¦ Çϴµ¥ ¸¸¾à »õ·Î »ý¼ºÇÑ º®µ¹ÀÇ ÁÖº¯ÀÌ °ø¹éÀÌ ¾Æ´Ï¶ó¸é ´Ù¸¥ º®µ¹ÀÌ ÀÌ¹Ì È­¸é À§ÂʱîÁö °¡µæ Â÷ ÀÖ´Â »óÅÂÀ̹ǷΠÀ̶§°¡ °ÔÀÓÀ» ³¡³¾ ¶§ÀÌ´Ù. GetAround ÇÔ¼ö·Î »õ·Î »ý¼ºÇÑ º®µ¹ÀÇ ÁÖº¯À» Á¡°ËÇØ º¸°í EMPTY°¡ ¾Æ´Ï¸é for (;1;) ·çÇÁ¸¦ Å»ÃâÇϵµ·Ï Çß´Ù.

for (;2;) ·çÇÁÀÇ ³¡¿¡¼­ 0.05Ãʾ¿ ½Ã°£À» Áö¿¬½ÃÅ°°í ÀÖÀ¸¹Ç·Î ÀÌ ·çÇÁ´Â ÃÊ´ç 20¹ø ¹Ýº¹µÈ´Ù. º®µ¹ Çϳª°¡ ³»·Á¿À´Â ÁÖ±âÀÎ nFrameÀÌ 20À¸·Î ÃʱâÈ­µÇ¾î ÀÖ°í nStay°¡ ÀÌ °ªÀ» ¿ªÄ«¿îÆ®Çϸ鼭 0ÀÌ µÉ ¶§ º®µ¹À» ÇÑÄ­ ³»¸°´Ù. ±×·¡¼­ º®µ¹Àº Á¤È®ÇÏ°Ô 1ÃÊ¿¡ ÇÑ ¹ø ÇÑÄ­ ¾Æ·¡·Î À̵¿ÇÒ °ÍÀÌ´Ù. ÀÌ·¸°Ô ÇÒ ¹Ù¿¡¾ß ¾Æ¿¹ delay(1000)À» ÁÖ°í 1ÃÊ¿¡ ÇÑ ¹ø¾¿ º®µ¹À» À̵¿½Ãų ¼öµµ ÀÖÁö¸¸ ±×·¸°Ô ÇÒ °æ¿ì Å° ÀԷµµ 1ÃÊ¿¡ ÇÑ ¹ø¹Û¿¡ ¸ø ¹ÞÀ¸¹Ç·Î ¹ÝÀÀ¼ºÀÌ ¶³¾îÁø´Ù. ±×·¡¼­ ½Ã°£À» 1/20ÃÊ·Î ºÐÇÒÇÏ°í º®µ¹Àº 20ÇÁ·¹ÀÓ¿¡ ÇÑ ¹ø¾¿ ¿òÁ÷ÀÌµÇ Å°´Â ¸Å ÇÁ·¹ÀÓ¸¶´Ù ÀԷ¹ÞÀ» ¼ö ÀÖµµ·Ï Çß´Ù.

for (;2;) ·çÇÁ´Â º®µ¹ÀÌ »ý¼ºµÇ¾î È­¸é À§¿¡¼­ºÎÅÍ ¾Æ·¡·Î À̵¿ÇÒ ¶§±îÁö °è¼Ó ¹Ýº¹µÈ´Ù. ½Ã°£ÀÌ Áö³ª º®µ¹ÀÌ ¹Ù´Ú¿¡ ´êÀ¸¸é MoveDown ÇÔ¼ö°¡ TRUE¸¦ ¸®ÅÏÇϸç, »ç¿ëÀÚ°¡ Á÷Á¢ º®µ¹À» ¹Ù´ÚÀ¸·Î ¶³¾î¶ß¸®¸é ProcessKey ÇÔ¼ö°¡ TRUE¸¦ ¸®ÅÏÇϴµ¥ ÀÌ µÎ °æ¿ì¿¡ break·Î for (;2;) ·çÇÁ¸¦ Å»ÃâÇÑ´Ù. ÀÌ ·çÇÁ¸¦ ¹þ¾î³ª¸é ´Ù½Ã for (;1;) ·çÇÁÀÇ ¼±µÎ·Î µ¹¾Æ°¡ »õ·Î¿î º®µ¹À» »ý¼ºÇϸç ÀÌ °úÁ¤Àº »õ·Î »ý¼ºÇÑ º®µ¹ ÁÖº¯ÀÌ ºñ¾îÀÖÁö ¾ÊÀ» ¶§±îÁö ¹Ýº¹µÈ´Ù. main ÇÔ¼öÀÇ Àüü ±¸Á¶´Â ´ÙÀ½°ú °°´Ù.

¸ÞÀÎ ·çÇÁ¿¡¼­ Å° ÀԷ ó¸®´Â ProcessKey ÇÔ¼ö¿¡°Ô À§ÀӵǾî ÀÖ´Ù. ÀÌ ºÎºÐÀº Ưº°È÷ ¹Ýº¹ÀÌ ÇÊ¿äÇؼ­ ÇÔ¼ö·Î ºÐ¸®½ÃŲ °ÍÀº ¾Æ´Ï¸ç Å° ÀԷ ó¸®¸¦ º°µµÀÇ ÇÔ¼ö·Î ºÐ¸®½ÃÅ´À¸·Î½á main ÇÔ¼öÀÇ ºÎ´ãÀ» ÁÙÀÌ°íÀÚ ÇÑ °ÍÀÌ´Ù. mainÀº Àüü ÇÁ·Î±×·¥ÀÇ È帧À» ÅëÁ¦ÇÏ´Â Áß¿äÇÑ ÇÔ¼öÀ̱⠶§¹®¿¡ À⽺·¯¿î 󸮴 °¡±ÞÀûÀ̸é Á¹º´ ÇÔ¼öµé¿¡°Ô À§ÀÓÇÏ´Â °ÍÀÌ ÁÁ´Ù.