home *** CD-ROM | disk | FTP | other *** search
/ For Beginners & Professional Hackers / cd.iso / docum / c.doc / 05.prn < prev    next >
Encoding:
Text File  |  1990-12-05  |  75.0 KB  |  2,461 lines

  1.                                 âïÇéÇ 5.                       -- 1 --
  2.                                 --------
  3.  
  4.                                éêäàÄêâÉ¢
  5.      -----------------------------------------------------------------
  6.            é¿ñÑ«¿úαδ »α¿¡«ß∩Γ óá¼ ½¿í« αáñ«ßΓ∞,  ½¿í«  «ú«ατÑ¡¿∩.  ¥Γ«
  7.      ºáó¿ß¿Γ  «Γ  óáΦÑú«  «Γ¡«ΦÑ¡¿∩  ¬  ¡¿¼.  Äñ¡á¬«  »α«úαá¼¼¿α«óá¡¿Ñ
  8.      ó¿ñÑ«¿úα ¡Ñ Γ«½∞¬« ¿¡ΓÑαÑß¡«,  ¡« ¿ »«½Ñº¡«. öá¬Γ¿τÑ߬¿, «ñ¡¿¼ ¿º
  9.      ½πτΦ¿σ  ß»«ß«í«ó «í«úáΘÑ¡¿∩ ∩ó½∩ÑΓß∩ αáºαáí«Γ¬á πñáτ¡δσ ó¿ñÑ«¿úα.
  10.      ò«α«Φá∩ ¿úαá,  «íΩÑñ¿¡∩εΘá∩ ½«ú¿¬π  ß  ª¿ó«⌐  úαáΣ¿¬«⌐,  ñ«ßΓáó¿Γ
  11.      í«½∞Φ«Ñ  πñ«ó«½∞ßΓó¿Ñ  ¿ú᫬π.  ïπτΦ¿Ñ  ¿º  ó¿ñÑ«¿úα,  ó¬½ετáεΘ¿Ñ
  12.      φ½Ñ¼Ñ¡Γδ ¿ß¬πßßΓóÑ¡¡«ú« ¿¡Γѽ½Ñ¬Γá,  »«ºó«½∩εΓ  ¬«¼»∞εΓÑαπ  óÑßΓ¿
  13.      ñ¿á½«ú ß ¿ú᫬«¼ ¿ "«ß¼δ߽ѡ¡«" αÑáú¿α«óáΓ∞ ¡á óó«ñ ñá¡¡δσ.
  14.            é φΓ«⌐ ú½áóÑ óδ «º¡á¬«¼¿ΓÑß∞  ß ¡Ñ¬«Γ«α묨 «ß¡«óἿ ΓÑσ¡¿¬¿
  15.      »α«úαá¼¼¿α«óá¡¿∩ ó¿ñÑ«¿úα,   τΓ«   »«ºó«½¿Γ   óá¼   αáºαáíáΓδóáΓ∞
  16.      ß«íßΓóÑ¡¡δÑ  ¿úαδ.  éδ  ¡áπτ¿ΓÑß∞ "«ª¿ó½∩Γ∞" αẽ¿τ¡δÑ «íΩѬΓδ ¡á
  17.      φ¬αá¡Ñ óáΦÑú«  ΓÑନ¡á½á.  Éáºαáí«Γ¬á  ó¿ñÑ«¿úα  ∩ó¿Γß∩  ñ½∩  óáß
  18.      «Γ»αáó¡«⌐  Γ«τ¬«⌐.  î¡«ú¿Ñ »α¿¡µ¿»δ,  ¿ß»«½∞ºπѼδÑ »α¿ αáºαáí«Γ¬Ñ
  19.      ó¿ñÑ«¿úα,  íπñπΓ »«½Ñº¡δ ñ½∩ óáß ¿ πóѽ¿τáΓ óáΦ ¿¡ΓÑαÑß ¬ αáí«ΓÑ.
  20.      ä½∩ ¿ß»«½∞º«óá¡¿∩ »α«úαá¼¼,  »α¿ó«ñ¿¼δσ ó ¬áτÑßΓóÑ »α¿¼Ñαá ó φΓ«⌐
  21.      ú½áóÑ,  ¡Ñ«íσ«ñ¿¼ ¬«¼»∞εΓÑα IBM PC ¿½¿ ñαπú«⌐, ß«ó¼ÑßΓ¿¼δ⌐ ß ¡¿¼,
  22.      ó  ß«ßΓáó  ¬«Γ«α«ú« óσ«ñ∩Γ áñá»ΓÑαδ CGA,  EGA ¿½¿ VGA.  î¡«ú¿Ñ ¿º
  23.      Σπ¡¬µ¿⌐,  ¿ß»«½∞ºπѼδσ ó ñá¡¡«⌐ ú½áóÑ, αáßß¼áΓα¿ó὿ß∞ ó ú½áóÑ 4.
  24.      Å«φΓ«¼π,  Ñß½¿ óδ ÑΘÑ ¡Ñ ¿ºπτ¿½¿ ú½áóπ 4, Γ« óá¼ »α¿ñÑΓß∩ ßñѽáΓ∞
  25.      φΓ« ßÑ⌐τáß.
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  61. â½áóá V                                                       -- 2 --
  62.  
  63.  
  64.                                   æÅÉÇëÆ¢
  65.      -----------------------------------------------------------------
  66.  
  67.           î¡«ú¿Ñ ó¿ñÑ«¿úαδ,   ó  ¬«Γ«αδσ  ¿ú᫬  π»αáó½∩ÑΓ  «íΩѬΓἿ,
  68.      áΓá¬πεΘ¿¼¿   ñαπú¿Ñ   «íΩѬΓδ,   π»αáó½∩ѼδÑ    »α«úαá¼¼«⌐    ¿½¿
  69.      ºáΘ¿ΘáεΘ¿¼¿ß∩  «Γ  ¡¿σ,  ó¬½ετáεΓ  ñóá  ¬½áßßá á¬Γ¿ó¡δσ «íΩÑ¬Γ«ó:
  70.      ßαÑñπ  (»αÑñßΓáó½∩εΘπε  ñ½∩  ¡áß  ¼á½«¼Ñ¡∩εΘÑÑß∩  »«½Ñ  ¿úαδ)   ¿
  71.      ß»αá⌐Γδ.   æÅÉÇëÆ  -  φΓ«  ¡Ñí«½∞Φ«⌐  »«ñ󿪡δ⌐  «íΩѬΓ,  ¬«Γ«αδ⌐
  72.      ñó¿ªÑΓß∩ »« »«½ε ó¿ñÑ«¿úαδ »« «»αÑñѽѡ¡δ¼  »αáó¿½á¼  ß  ºáñá¡¡«⌐
  73.      µÑ½∞ε.  ìá»α¿¼Ñα,  ¬«úñá  ¬«ß¼¿τÑ߬¿⌐  ¬«αáí½∞ ßΓαѽ∩ÑΓ Σ«Γ«¡¡δ¼¿
  74.      Γ«α»ÑñἿ,  ¿º«íαáªÑ¡¿Ñ Γ«α»Ññδ αÑ὿ºπÑΓß∩  ß»αá⌐Γ«¼.  é  αἬáσ
  75.      ñá¡¡«⌐  ú½áóδ  »«ñ  ß»αá⌐Γ«¼ íπñѼ »«¡¿¼áΓ∞ Σ¿úπαπ,  «»αÑñѽѡ¡πε
  76.      ¡Ñ¬«Γ«α묨 ºá¼¬¡πΓ묨 «ΓαѺ¬á¼¿ (¼¡«ú«πú«½∞¡¿¬).  ò«Γ∩,  ó  «íΘѼ
  77.      ß½πτáÑ ß»αá⌐Γ ¼«ªÑΓ ¿º«íαáªáΓ∞ß∩ ½εíδ¼ «íαẫ¼,  ¡á»α¿¼Ñα, ó ó¿ñÑ
  78.      «¬απª¡«ßΓ¿.  é  »α¿¼Ñαáσ,   αáßß¼áΓα¿óáѼδσ   ó   ñá¡¡«⌐   ú½áóÑ,
  79.      «»αÑñѽ∩Γ∞  ß»αá⌐Γ  íπñѼ  ó ó¿ñÑ ñóπ¼Ñα¡«ú« ¼áßß¿óᠵѽδσ τ¿ßѽ.
  80.      ìá»α¿¼Ñα,  ß»αá⌐Γ,  ß«ßΓ«∩Θ¿⌐ ¿º 4  «ΓαѺ¬«ó  ¼«ªÑΓ  íδΓ∞  «»¿ßá¡
  81.      ß½ÑñπεΘ¿¼ ¼áßß¿ó«¼
  82.  
  83.                              int sprite [4][4];
  84.  
  85.           ÅÑαóá∩ αẼÑα¡«ßΓ∞  ¼áßß¿óá  «»αÑñѽ∩ÑΓ  ¬«½¿τÑßΓó« «ΓαѺ¬«ó
  86.      ß»αá⌐Γá,  á óΓ«αá∩ - ¬««αñ¿¡áΓδ ¬«¡Ñτ¡δσ Γ«τѬ «ΓαѺ¬«ó (»«ñ«í¡δ⌐
  87.      ß»«ß«í  «»¿ßá¡¿∩   «íΩÑ¬Γ«ó  »«ñα«í¡«  αáßß¼«ΓαÑ¡  ó   ú½áóÑ  4).
  88.      ìáτá½∞¡δÑ ¿ ¬«¡Ñτ¡δÑ  ¬««αñ¿¡áΓδ  «ΓαѺ¬«ó  ºáñáεΓß∩  ó ß½ÑñπεΘÑ⌐
  89.      »«ß½Ññ«óáΓѽ∞¡«ßΓ¿:
  90.  
  91.                        start_x, start_y, end_x, end_y
  92.  
  93.           ÄΓαѺ«¬,  óσ«ñ∩Θ¿⌐  ó ß»αá⌐Γ,  ß ¬««αñ¿¡áΓἿ ¬«¡Ñτ¡δσ Γ«τѬ
  94.      0,0 ¿ 0,10 ¼«ªÑΓ íδΓ∞ «»¿ßá¡ ß½ÑñπεΘ¿¼ ¼áßß¿ó«¼:
  95.  
  96.                sprite[0][0] = 0;   /* start_x */
  97.                sprite[0][1] = 0;   /* start_y */
  98.                sprite[0][2] = 0;   /* end_x */
  99.                sprite[0][3] = 10;  /* end_y */
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  121. â½áóá V                                                       -- 3 --
  122.  
  123.  
  124.                                  ÅÄïà êâÉ¢
  125.      -----------------------------------------------------------------
  126.  
  127.           é í«½∞Φ¿¡ßΓóÑ  ó¿ñÑ«¿úα   »«½Ñ   ¿úαδ   »αÑñßΓáó½∩ÑΓ   ß«í«⌐
  128.      ¡Ñ¼Ñ¡∩εΘÑÑß∩   (¼Ññ½Ñ¡¡«   ¼Ñ¡∩εΘÑÑß∩)  ¿º«íαáªÑ¡¿Ñ,  ¡á  ¬«Γ«α«¼
  129.      »α«¿ßσ«ñ¿Γ  ñÑ⌐ßΓó¿Ñ  ¿úαδ.  Å«½Ñ  ¿úαδ  ¿º«íαáªáÑΓß∩  «Γñѽ∞¡δ¼¿
  130.      »α«úαἼἿ,    ºáúαπªáÑ¼δ¼¿   ó   ¡áτá½Ñ   ¿úαδ,   »«φΓ«¼π   ¡ÑΓ
  131.      ¡Ñ«íσ«ñ¿¼«ßΓ¿  ºáúαπªáΓ∞  óßÑ  »α«úαá¼¼δ  óÑασ¡Ñú«   πα«ó¡∩   ñ½∩
  132.      ñ¿¡á¼¿τÑ߬«⌐  úÑ¡Ñαᵿ¿  ¿úα«ó«ú«  »«½∩.  Æá¬«⌐  »«ñσ«ñ  «»¿ßá¡ ó
  133.      ñá¡¡«⌐ ú½áóÑ.  Åα«úαá¼¼δ, ¿ß»«½∞ºπѼδÑ ñ½∩ úÑ¡Ñαᵿ¿ ¿º«íαáªÑ¡¿⌐,
  134.      ¿σ σαá¡Ñ¡¿∩ ó Σá⌐½Ñ ¡á ñ¿ß¬Ñ ¿ ñ«ßΓπ»á ¬ ¡¿¼,  «»¿ßá¡δ ó ú½áóÑ 4.
  135.      Ä¡¿ ºáúαπªáεΓ φΓ¿ ¿º«íαáªÑ¡¿∩ »« ¼ÑαÑ ¡Ñ«íσ«ñ¿¼«ßΓ¿.
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142.  
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  181. â½áóá V                                                       -- 4 --
  182.  
  183.  
  184.                           îôï£ÆêÅïêèÇûꃠìÇ ¥èÉÇìà
  185.      -----------------------------------------------------------------
  186.  
  187.           è½ετÑóδ¼ ¿ ¡á¿í«½ÑÑ ó»ÑτáΓ½∩εΘ¿¼ ¼«¼Ñ¡Γ«¼ ó¿ñÑ«¿úαδ ∩ó½∩ÑΓß∩
  188.      ¼π½∞Γ¿»½¿¬áµ¿∩.  îπ½∞Γ¿»½¿¬áµ¿∩ - «ß¡«ó¡«⌐ «Γ½¿τ¿Γѽ∞¡δ⌐  »α¿º¡á¬
  189.      ó¿ñÑ«¿úα.   Äß¡«ó¡«⌐   ¼ÑΓ«ñ   ¼π½∞Γ¿»½¿¬áµ¿¿  »α«ßΓ:  π¡¿τΓ«ª¿Γ∞
  190.      ¿º«íαáªÑ¡¿Ñ  »αÑñ¼ÑΓá  ¿  ß«ºñáΓ∞  Ñú«  ó¡«ó∞,  ¡«  ß   ¡Ñ¬«Γ«αδ¼
  191.      ¡Ñí«½∞Φ¿¼  ß¼ÑΘÑ¡¿Ñ¼.  æ¬«α«ßΓ∞  φΓ«ú« »α«µÑßßá ñ«½ª¡á íδΓ∞ «τÑ¡∞
  192.      óδß«¬«⌐.  ¥Γ«  ¼«ªÑΓ  íδΓ∞  «íÑß»ÑτÑ¡«  »πΓѼ   ¡Ñ»«ßαÑñßΓóÑ¡¡«ú«
  193.      ñ«ßΓπ»á  ¬  ó¿ñÑ«»á¼∩Γ¿  ñ¿ß»½Ñ∩,  ó«º¼«ª¡«ßΓ∞ ¬«Γ«α«ú« «»¿ßá¡á ó
  194.      ú½áóÑ 4.
  195.  
  196.           ä½∩ »«óδΦÑ¡¿∩ ¬áτÑßΓóá ¿º«íαáªÑ¡¿∩,  íδßΓα«ñÑ⌐ßΓó¿∩ «»Ñαᵿ⌐
  197.      π¡¿τΓ«ªÑ¡¿∩   ¿   »«óΓ«α¡«ú«  ¿º«íαáªÑ¡¿∩   «íΩѬΓá  ¿ß»«½∞ºπÑΓß∩
  198.      «»Ñαᵿ∩  "ìà-êïê"  ñ½∩ ñó«¿τ¡«ú« ¬«ñá  ¬áªñ«⌐  Γ«τ¬¿  «íΩѬΓá ¡á
  199.      φ¬αá¡Ñ. ¥Γ«Γ ß»«ß«í «íÑß»Ñτ¿óáÑΓ ó«º¼«ª¡«ßΓ∞ íδßΓα«ú« »ÑαѼÑΘÑ¡¿∩
  200.      ß»αá⌐Γá »« φ¬αá¡π,  ¡Ñ ¼Ñ¡∩∩ Ñú« µóÑΓ ¿ αẼÑαδ, ¿ Σá¬Γ¿τÑ߬¿  ¡Ñ
  201.      π¡¿τΓ«ªá∩ ó »á¼∩Γ¿ ΓÑନ¡á½á ñá¡¡δÑ « Ñú« ¿º«íαáªÑ¡¿¿.
  202.  
  203.           Åα«úαá¼¼á,   «Γ«íαáªáεΘá∩   ¡á   φ¬αá¡Ñ   ΓÑନ¡á½á  ß»αá⌐Γ,
  204.      »αÑñßΓáó½∩ÑΓ ß«í«⌐ ¡Ñ¬«Γ«απε ¼«ñ¿Σ¿¬áµ¿ε Σπ¡¬µ¿¿ display_object()
  205.      ¿º ú½áóδ 4.
  206.  
  207.           /* «Γ«íαáªÑ¡¿Ñ «íΩѬΓá ¡á φ¬αá¡Ñ */
  208.  
  209.           void display_object(ob, sides,cc)
  210.           double ob[][4];
  211.           int sides,cc;
  212.           {
  213.             register int i;
  214.  
  215.             for(i=0; i<sides; i++)
  216.               line((int)ob[i][0], (int)ob[i][1],
  217.                    (int)ob[i][2], (int)ob[i][3], cc | 128);
  218.          }
  219.  
  220.           èᬠóδ ¼«ú½¿ πíÑñ¿Γ∞ß∩,  Σπ¡¬µ¿∩ display_object() α¿ßπÑΓ óßÑ
  221.      ½¿¡¿¿  «íΩѬΓá,  ¿ß»«½∞ºπ∩  »α¿óÑñÑ¡¡πε ó ú½áóÑ 4 Σπ¡¬µ¿ε line().
  222.      çá¼ÑΓ¿¼,  τΓ« º¡áτÑ¡¿Ñ ¡«¼Ñαá µóÑΓá ß¬½áñδóáÑΓß∩ »« ßσѼѠ"êïê" ß
  223.      τ¿ß½«¼  128  ó  ¬«¼á¡ñÑ  πßΓᡫ󬿠ßΓáαΦ¿σ í¿Γ«ó.  ¥Γ« »α¿ó«ñ¿Γ ¬
  224.      Γ«¼π, τΓ« ó Σπ¡¬µ¿¿ mempoint(), ¿ß»«½∞ºπѼ«⌐ ó Σπ¡¬µ¿¿ line() ñ½∩
  225.      »«¼ÑΘÑ¡¿∩ ¿º«íαáªÑ¡¿∩ ¬áªñ«⌐ Γ«τ¬¿, óδ»«½¡∩ÑΓß∩ ß½«ªÑ¡¿Ñ »« ßσѼÑ
  226.      "ìà-êïê" ñó«¿τ¡«ú« ¬«ñá.  ¥Γ« »«ºó«½∩ÑΓ ß»αá⌐Γπ óßÑúñá «ßΓáóáΓ∞ß∩
  227.      ó¿ñ¿¼δ¼ ¡Ñºáó¿ß¿¼« «Γ ß«íßΓóÑ¡¡«ú« µóÑΓá ¿ µóÑΓá Σ«¡á.
  228.  
  229.           ä½∩  ñѼ«¡ßΓαᵿ¿  ¼π½∞Γ¿»½¿¬áµ¿¿  óóÑñ¿ΓÑ  ó  óáΦ ¬«¼»∞εΓÑα
  230.      ß½ÑñπεΘπε »α«úαá¼¼π. ¥Γá »α«úαἼᠻ«ºó«½¿Γ óá¼ »ÑαѼÑΘáΓ∞ ß»αá⌐Γ
  231.      (ó ó¿ñÑ ¼á½Ñ¡∞¬«ú« ¬αÑßΓ¿¬á αẼÑα«¼ 6x6 Γ«τѬ αáßΓαá) »« φ¬αá¡π,
  232.      ¿ß»«½∞ºπ∩ ¬½áó¿Φ¿  π»αáó½Ñ¡¿∩  ¬παß«α«¼.  àß½¿  óáΦ  ¬«¼»∞εΓÑα ¡Ñ
  233.      ó¬½ετáÑΓ  Σπ¡¬µ¿ε   bioskey(),   Γ«   »α«ß¼«Γα¿ΓÑ   ú½áóπ  1  ñ½∩
  234.      «»αÑñѽѡ¿∩ óÑαß¿¿ ¬«¼»¿½∩Γ«αá, ¬«Γ«αá∩ óá¼ ¡Ñ«íσ«ñ¿¼á.
  235.  
  236.  
  237.         #include "dos.h"
  238.  
  239.  
  240.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  241. â½áóá V                                                       -- 5 --
  242.  
  243.  
  244.         #include "stdio.h"
  245.  
  246.         void mode(), line();
  247.         void mempoint(), palette();
  248.         void display_object(),update_object();
  249.         unsigned char read_point();
  250.  
  251.         int sprite[2][4] = {
  252.            3,0,3,5,
  253.            0,3,5,3
  254.         };
  255.  
  256.         main()
  257.         {
  258.              union k {
  259.                 char c[2];
  260.                 int i;
  261.              } key;
  262.  
  263.            int deltax=0,deltay=0;
  264.  
  265.            mode(4); /*m πßΓá¡«ó¬á 4 αѪ¿¼á úαáΣ¿¬¿ CGA/EGA */
  266.            palette(0); /* »á½¿Γαá 0 */
  267.  
  268.            display_object(sprite,2,1);
  269.            do {
  270.                   key.i = bioskey(0);
  271.                   deltax=0;deltay=0;
  272.                   if(!key.c[0]) switch(key.c[1]) {
  273.                      case 75: /* ó½Ñó« */
  274.                         deltay= -1;
  275.                          break;
  276.                      case 77: /* ó»αáó« */
  277.                         deltay= 1;
  278.                          break;
  279.                      case 72: /* óóÑασ */
  280.                         deltax= -1;
  281.                         break;
  282.                      case 80: /* ó¡¿º */
  283.                         deltax= 1;
  284.                         break;
  285.                      case 71: /* óóÑασ ¿ ó½Ñó« */
  286.                         deltay= -1;
  287.                         deltax= -1;
  288.                         break;
  289.                      case 73: /* óóÑασ ¿ ó»αáó« */
  290.                         deltay= 1;
  291.                         deltax= -1;
  292.                         break;
  293.                      case 79: /* ó¡¿º ¿ ó½Ñó« */
  294.                         deltay= -1;
  295.                         deltax= 1;
  296.                         break;
  297.                      case 81: /* ó¡¿º ¿ ó»αáó« */
  298.  
  299.  
  300.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  301. â½áóá V                                                       -- 6 --
  302.  
  303.  
  304.                         deltay= 1;
  305.                         deltax= 1;
  306.                         break;
  307.                     }
  308.                    /* ßΓ¿αá¡¿Ñ ΓѬπΘÑ⌐ »«º¿µ¿¿ ß»αá⌐Γá */
  309.                    display_object(sprite,2,1);
  310.                    if (is_legal(sprite,deltax,deltay,2))
  311.                    update_object(sprite,deltax,deltay,2);
  312.                    /* »ÑαѺỿß∞ ß»αá⌐Γá ó ¡«óπε »«º¿µ¿ε */
  313.                    displey_object(sprite2,1);
  314.                }   while (key.c[0]!='q');
  315.                getchar();
  316.                mode(2);
  317.            }
  318.  
  319.           /* éδí«α »á½¿Γαδ */
  320.           void palette(pnum)
  321.           int pnum;
  322.             {
  323.             union REGS r;
  324.  
  325.             r.h.bh = 1; /* ¬«ñ 4-ú« úαáΣ¿τÑ߬«ú« αѪ¿¼á */
  326.             r.h.bl = pnum;
  327.             r.h.ah = 11;
  328.             int86(0x10, &r, &r);
  329.             }
  330.  
  331.           /* éδí«α αѪ¿¼á */
  332.           void mode(mode_code)
  333.           int mode_code;
  334.             {
  335.             union REGS r;
  336.  
  337.             r.h.al = mode_code;
  338.             r.h.ah = 0;
  339.             int86(0x10, &r, &r);
  340.             }
  341.  
  342.       /* êº«íαáªÑ¡¿Ñ ½¿¡¿¿ ºáñá¡¡«ú« µóÑΓá ß ¿ß»«½∞º«ó᡿Ѽ
  343.          á½ú«α¿Γ¼á üαѺѡσá¼á */
  344.        void line(startx,starty,endx,endy,color)
  345.        int startx,starty,endx,endy,color;
  346.        {
  347.          register int t,distance;
  348.          int x=0,y=0,delta_x,delta_y;
  349.          int incx,incy;
  350.  
  351.        /* éδτ¿ß½Ñ¡¿Ñ αáßßΓ«∩¡¿∩ ó «í«¿σ ¡á»αáó½Ñ¡¿∩σ         */
  352.          delta_x=endx-startx;
  353.          delta_y=endy-starty;
  354.  
  355.        /* «»αÑñѽѡ¿Ñ ¡á»αáó½Ñ¡¿∩ Φáúá,
  356.           Φáú óδτ¿ß½∩ÑΓß∩ ½¿í« »« óÑαΓ¿¬á½∞¡«⌐, ½¿í« »« ú«α¿º«¡Γá½∞¡«⌐
  357.           ½¿¡¿¿                   */
  358.  
  359.  
  360.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  361. â½áóá V                                                       -- 7 --
  362.  
  363.  
  364.           if (delta_x>0) incx=1;
  365.           else  if (delta_x==0) incx=0;
  366.           else  incx= -1;
  367.  
  368.           if (delta_y>0) incy=1;
  369.           else  if (delta_y==0) incy=0;
  370.           else  incy= -1;
  371.  
  372.         /* «»αÑñѽѡ¿Ñ ¬á¬«Ñ αáßßΓ«∩¡¿Ñ í«½∞ΦÑ */
  373.           delta_x=abs(delta_x);
  374.           delta_y=abs(delta_y);
  375.           if (delta_x>delta_y) distance=delta_x;
  376.           else distance=delta_y;
  377.  
  378.         /* êº«íαáªÑ¡¿Ñ ½¿¡¿¿ */
  379.           for (t=0; t<=distance+1; t++) {
  380.              mempoint(startx,starty,color);
  381.              x+=delta_x;
  382.              y+=delta_y;
  383.              if (x>distance) {
  384.                 x-=distance;
  385.                 startx+=incx;
  386.              }
  387.              if (y>distance) {
  388.                 y-=distance;
  389.                 starty+=incy;
  390.              }
  391.           }
  392.        }
  393.  
  394.  
  395.         /* çỿß∞ Γ«τ¬¿ ó CGA/EGA */
  396.          void mempoint(x,y,color_code)
  397.          int x,y,color_code;
  398.          {
  399.             union mask {
  400.                char c[2];
  401.                int i;
  402.             } bit_mask;
  403.             int i,index,bit_position;
  404.             unsigned char t;
  405.             char xor; /* "¿ß¬½ετáεΘÑÑ êïê" µóÑΓá ó ß½πτáÑ Ñú«
  406.                           ¿º¼Ñ¡Ñ¡¿∩ */
  407.             char far *ptr=(char far *) 0xB8000000; /* Γ«τ¬á ó
  408.                                                   »á¼∩Γ¿ CGA */
  409.             bit_mask.i=0xFF3F; /* 11111111 00111111 ó
  410.                                   ñó«¿τ¡«¼ ó¿ñÑ */
  411.             if (x<0 || x>199 || y<0 || y>319) return;
  412.             xor=color_code & 128; /* »α«óÑα¬á, πßΓá¡áó½¿óá½ß∩ ½¿
  413.                                      αѪ¿¼ "¿ß¬½ετáεΘÑú« êïê" */
  414.             color_code=color_code & 127; /* ¼á߬á ßΓáαΦ¿σ í¿Γ«ó */
  415.  
  416.             /*  πßΓá¡«ó¬á í¿Γ«ó«⌐ ¼á߬¿ ¿ í¿Γ«ó αѪ¿¼á µóÑΓá
  417.                 ó »αáóπε »«º¿µ¿ε */
  418.  
  419.  
  420.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  421. â½áóá V                                                       -- 8 --
  422.  
  423.  
  424.  
  425.              bit_position=y%4; /* óδτ¿ß½Ñ¡¿Ñ ¡πª¡«⌐ »«º¿µ¿¿
  426.                                   ó íá⌐ΓÑ */
  427.              color_code<<=2*(3-bit_position); /* ßñó¿ú ¬«ñá µóÑΓá
  428.                                         ó ¡πª¡πε »«º¿µ¿ε */
  429.              bit_mask.i>>=2*bit_position; /* ßñó¿ú í¿Γ«ó«⌐ ¼á߬¿ ó
  430.                                           ¡πª¡πε »«º¿µ¿ε */
  431.  
  432.              /* «»αÑñѽѡ¿Ñ ΓαÑíπѼ«ú« íá⌐Γá ó »á¼∩Γ¿ ΓÑନ¡á½á */
  433.  
  434.               index=x*40+(y%4);
  435.               if (x%2) index+=8152; /* Ñß½¿ ¡ÑτÑΓ¡δ⌐, ¿ß»«½∞ºπÑΓß∩
  436.                                        óΓ«α«⌐ í½«¬ */
  437.  
  438.               /* ºá»¿ß∞ µóÑΓá */
  439.  
  440.                if (!xor) {  /* αѪ¿¼ ¿º¼Ñ¡Ñ¡¿∩ µóÑΓá */
  441.                   t=*(ptr+index) & bit_mask.c[0];
  442.                   *(ptr+index)=t|color_code;
  443.                }
  444.                else {
  445.                   t=*(ptr+index) | (char)0;
  446.                   *(ptr+index)=t & color_code;
  447.                }
  448.             }
  449.  
  450.         /* τΓÑ¡¿Ñ íá⌐Γá ¿º «»ÑαáΓ¿ó¡«⌐ »á¼∩Γ¿ CGA/EGA */
  451.          unsigned char read_point(x,y)
  452.          int x,y;
  453.          {
  454.             union mask {
  455.                char c[2];
  456.                int i;
  457.             } bit_mask;
  458.             int i,index,bit_position;
  459.             unsigned char t;
  460.             char xor; /* "¿ß¬½ετáεΘÑÑ êïê" µóÑΓá ó ß½πτáÑ Ñú«
  461.                           ¿º¼Ñ¡Ñ¡¿∩ */
  462.             char far *ptr=(char far *) 0xB8000000; /* Γ«τ¬á ó
  463.                                                   »á¼∩Γ¿ CGA */
  464.             bit_mask.i=3; /* 11111111 00111111 ó
  465.                                   ñó«¿τ¡«¼ ó¿ñÑ */
  466.             if (x<0 || x>199 || y<0 || y>319) return 0;
  467.  
  468.             /*  πßΓá¡«ó¬á í¿Γ«ó«⌐ ¼á߬¿ ¿ í¿Γ«ó αѪ¿¼á µóÑΓá
  469.                 ó »αáóπε »«º¿µ¿ε */
  470.              bit_position=y%4; /* óδτ¿ß½Ñ¡¿Ñ ¡πª¡«⌐ »«º¿µ¿¿
  471.                                   ó íá⌐ΓÑ */
  472.              bit_mask.i<<=2*(3-bit_position);
  473.  
  474.              /* «»αÑñѽѡ¿Ñ ΓαÑíπѼ«ú« íá⌐Γá ó »á¼∩Γ¿ ΓÑନ¡á½á */
  475.               index=x*40+(y>>4);
  476.               if (x%2) index+=8152; /* Ñß½¿ ¡ÑτÑΓ¡δ⌐, ¿ß»«½∞ºπÑΓß∩
  477.                                        óΓ«α«⌐ í½«¬ */
  478.  
  479.  
  480.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  481. â½áóá V                                                       -- 9 --
  482.  
  483.  
  484.  
  485.               /* ºá»¿ß∞ µóÑΓá */
  486.                t=*(ptr+index) & bit_mask.c[0];
  487.                t>>=2*(3-bit_position);
  488.                return t;
  489.             }
  490.  
  491.           /* «Γ«íαáªÑ¡¿Ñ «íΩѬΓá ¡á φ¬αá¡Ñ */
  492.  
  493.           void display_object(ob, sides,cc)
  494.           double ob[][4];
  495.           int sides,cc;
  496.           {
  497.             register int i;
  498.  
  499.             for(i=0; i<sides; i++)
  500.               line((int)ob[i][0], (int)ob[i][1],
  501.                    (int)ob[i][2], (int)ob[i][3], cc|128);
  502.          }
  503.  
  504.           /* æ¼ÑΘÑ¡¿Ñ (»áαώѽ∞¡δ⌐ »ÑαÑ¡«ß) «íΩѬΓá ó ¡á»αáó½Ñ¡¿¿,
  505.           «»αÑñѽѡ¡«¼ x ¿ y
  506.           */
  507.           void update_object(ob, x, y, sides)
  508.           int ob[][4];        /* «íΩÑ¬Γ */
  509.           int x, y;           /* ¡á»αáó½Ñ¡¿Ñ ß¼ÑΘÑ¡¿∩ */
  510.           register int sides; /* ¬«½¿τÑßΓó« ßΓ«α«¡ «íΩѬΓá */
  511.             {
  512.             sides--;
  513.             for(; sides>=0; sides--)
  514.               {
  515.               ob[sides][0] += x;
  516.               ob[sides][1] += y;
  517.               ob[sides][2] += x;
  518.               ob[sides][3] += y;
  519.               }
  520.             }
  521.  
  522.           /* Ä»αÑñѽѡ¿Ñ ñ«»πßΓ¿¼«ßΓ¿ »ÑαѼÑΘÑ¡¿∩ «íΩѬΓá.
  523.           é«ºóαáΘáÑΓ 1, Ñß½¿ »ÑαѼÑΘÑ¡¿Ñ ñ«»πßΓ¿¼«, 0- ó
  524.           »α«Γ¿ó¡«¼ ß½πτáÑ
  525.           */
  526.           void is_legal(ob, x, y, sides)
  527.           int ob[][4];          /* «íΩÑ¬Γ */
  528.           int x, y;             /* Φáú »ÑαѼÑΘÑ¡¿∩ */
  529.           int sides;            /* τ¿ß½« ßΓ«α«¡ «íΩѬΓá */
  530.             {
  531.             if(x==0 && y==0)
  532.               return 1;      /* »πßΓ«Ñ »ÑαѼÑΘÑ¡¿Ñ óßÑúñá ñ«»πßΓ¿¼«*/
  533.             sides--;
  534.             for(; sides>=0; sides--)
  535.               {
  536.               /* ¬«¡Γα«½∞ óδσ«ñá ºá ñ«»πßΓ¿¼πε «í½áßΓ∞ */
  537.               if(ob[sides][0]+x>199 || ob[sides][1]+y>319)
  538.  
  539.  
  540.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  541. â½áóá V                                                       -- 10 --
  542.  
  543.  
  544.                 return 0;
  545.               if(ob[sides][2]+x<0 || ob[sides][3]+y<0)
  546.                 return 0;
  547.               }
  548.             return 1;
  549.             }
  550.  
  551.            Éáßß¼«Γα¿¼ ¬αáΓ¬«,  ¬á¬  αáí«ΓáÑΓ  φΓá  »α«úαá¼¼á.  è½áó¿Φ¿
  552.      π»αáó½Ñ¡¿∩ ¬παß«α«¼  (¬½áó¿Φ¿  ß«  ßΓαѽ¬á¼¿  ¿  ¬½áó¿Φ¿  <HOME>,
  553.      <PGUP>, <END> ¿ <PGDN>) «»αÑñѽ∩εΓ »«½«ªÑ¡¿Ñ ß»αá⌐Γá. Åα¿ ¡áªáΓ¿¿
  554.      ¬½áó¿Φ¿  ß»αá⌐Γ  ß¼ÑΘáÑΓß∩  ¡á  «ñ¡π  Γ«τ¬π  αáßΓαá  ó  π¬áºá¡¡«¼
  555.      ¡á»αáó½Ñ¡¿¿.    è½áó¿Φ¿-ßΓαѽ¬¿    π»αáó½∩εΓ   ú«αº«¡Γá½∞¡δ¼¿   ¿
  556.      óÑαΓ¿¬á½∞¡δ¼¿ »ÑαѼÑΘÑ¡¿∩¼¿,  «ßΓá½∞¡δÑ - ñ¿áú«¡á½∞¡δ¼¿.  öπ¡¬µ¿∩
  557.      is_legal() «»αÑñѽ∩ÑΓ ó«º¼«ª¡«ßΓ∞ ñá½∞¡Ñ⌐ΦÑú« »ÑαѼÑΘÑ¡¿∩ ß»αá⌐Γá
  558.      ó óδíαá¡¡«¼ ¡á»αáó½Ñ¡¿¿.  àß½¿ ó«º¼«ªÑ¡ óδσ«ñ ß»αá⌐Γᠺᠠ»αÑñѽδ
  559.      úαá¡¿µ  φ¬αá¡á,  Γ« ΓᬫѠ»ÑαѼÑΘÑ¡¿Ñ ºá»αÑΘáÑΓß∩.  éßÑ «ßΓá½∞¡δÑ
  560.      Σπ¡¬µ¿¿ φΓ«⌐ »α«úαá¼¼δ αáí«ΓáεΓ, ¬á¬ «»¿ßá¡« ó ú½áóÑ 4.
  561.  
  562.            Äíδτ¡« ¡Ñ«íσ«ñ¿¼«  ß«σαá¡∩Γ∞  αẼÑα  «íΩѬΓá,  ¬«Γ«αδ⌐  óδ
  563.      "«ª¿ó½∩ÑΓÑ" («ß«íÑ¡¡« ¡Ñí«½∞Φ«ú«) ñ½∩ Γ«ú«,  τΓ«íδ Ñú« ¼«ª¡« í佫
  564.      »ÑαÑα¿ß«óδóáΓ∞ ß óδß«¬«⌐ ß¬«α«ßΓ∞ε.  ¥Γ«  «íÑß»Ñτ¿óáÑΓ  »½áó¡«ßΓ∞
  565.      ñó¿ªÑ¡¿∩ »α¿ ¼π½∞Γ¿»½¿¬áµ¿¿.  àß½¿ «íΩÑ¬Γ ñ«ßΓáΓ«τ¡« í«½∞Φ«⌐,  Γ«
  566.      Ñú« ñó¿ªÑ¡¿Ñ íπñÑΓ ñ¿ß¬αÑΓ¡«.  Åα¿ αáºαáí«Γ¬Ñ ó¿ñÑ«¿úα ¡Ñ«íσ«ñ¿¼«
  567.      Γᬠ »«ñí¿αáΓ∞  αẼÑαδ  ß»αá⌐Γá,  τΓ«íδ ó«º¼«ª¡«ßΓ¿ ¬«¼»∞εΓÑαá ¿
  568.      áñá»ΓÑαá αÑ὿º«óδó὿ß∞ «»Γ¿¼á½∞¡δ¼ «íαẫ¼.
  569.  
  570.  
  571.  
  572.  
  573.  
  574.  
  575.  
  576.  
  577.  
  578.  
  579.  
  580.  
  581.  
  582.  
  583.  
  584.  
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.  
  599.  
  600.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  601. â½áóá V                                                       -- 11 --
  602.  
  603.  
  604.                îôï£ÆêÅïêèÇûꃠæÅÉÇëÆÇ
  605.      -----------------------------------------------------------------
  606.  
  607.           ÅÑαÑñó¿ªÑ¡¿Ñ ß»αá⌐Γá  »«  φ¬αá¡π  ß«ßΓáó½∩ÑΓ Γ«½∞¬« »«½«ó¿¡π
  608.      ó«º¼«ª¡«ßΓÑ⌐   Ñú«   "«ª¿ó½Ñ¡¿∩".   é   «ß¡«ó¡«¼   ß»αá⌐Γ   íπñÑΓ
  609.      ¿ß»«½∞º«óáΓ∞ß∩  ¡á  φ¬αá¡Ñ  ñ½∩  Γ«ú«,  τΓ«íδ  ß«ºñáóáΓ∞  ¿½½εº¿ε
  610.      ñó¿ªÑ¡¿∩.  ìá»α¿¼Ñα,  ß»αá⌐Γ,  ¬«Γ«αδ⌐ óδú½∩ñ¿Γ »«ñ«í¡« τѽ«óѬπ,
  611.      ¼«ªÑΓ   »ÑαÑñó¿úáΓ∞   ¡«úἿ,   ¬á¬   íπñΓ«  «¡  ¿ñÑΓ.  ¥Γ«Γ  Γ¿»
  612.      "«ª¿ó½Ñ¡¿∩" ∩ó½∩ÑΓß∩ ¡á¿í«½ÑÑ ó»ÑτáΓ½∩εΘ¿¼ (¿  ¡á¿í«½ÑÑ  ½Ñú¬¿¼).
  613.      ä½∩  «íÑß»ÑτÑ¡¿∩  Γᬫ⌐ ó«º¼«ª¡«ßΓ¿ αáºαáíáΓδóáεΓß∩ ñóá ¿½¿ í«½ÑÑ
  614.      óáα¿á¡Γ«ó ß»αá⌐Γá,  «Γ½¿τ¿Ñ ¼Ñªñ𠬫ëα묨 ºá¬½ετáÑΓß∩ ó Γ«¼, τΓ«
  615.      ¡Ñ¬«Γ«αδÑ  ¿º  τáßΓÑ⌐  ß»αá⌐Γá  «Γ½¿τáεΓß∩ «Γ »Ñαó«¡áτá½∞¡«ú« Ñú«
  616.      óáα¿á¡Γá.  Åα«úαἼᠻ«ß½Ññ«óáΓѽ∞¡« ¼Ñ¡∩ÑΓ  óáα¿á¡Γδ  ß»αá⌐Γá  ó
  617.      »α«µÑßßÑ Ñú« ñó¿ªÑ¡¿∩ »« φ¬αá¡π.
  618.  
  619.           é ¬áτÑßΓóÑ   »α¿¼Ñαá   ¿º¼Ñ¡¿¼  »α«úαá¼¼π  main(),  ¬á¬  φΓ«
  620.      »«¬áºá¡« ¡¿ªÑ,  ¿ ñ«íáó¿¼ ó  ¡ÑÑ  óΓ«α«⌐  ß»αá⌐Γ.  éΓ«α«⌐  ß»αá⌐Γ
  621.      «Γ«íαáªáÑΓ  ¬αÑßΓ¿¬  ("+"),  »«óÑα¡πΓδ⌐  »«ñ πú½«¼ ó 45 úαáñπß«ó.
  622.      àß½¿ óδ ºá»πßΓ¿ΓÑ »α«úαá¼¼π,  Γ« íπñÑΓ  ß«ºñáóáΓ∞ß∩  ó»ÑτáΓ½Ñ¡¿Ñ,
  623.      τΓ«   ¬αÑßΓ¿¬   óαáΘáÑΓß∩  ó  »α«µÑßßÑ  »ÑαÑñó¿ªÑ¡¿∩  »«  φ¬αá¡π.
  624.      ÅÑαѼѡ¡á∩ swap ¿ß»«½∞ºπÑΓß∩ ñ½∩ óδí«αá Γ¿»á ΓѬπΘÑú« ß»αá⌐Γá.
  625.  
  626.  
  627.         int sprite2[2][4] = {
  628.            0,0,5,5,
  629.            0,5,5,0
  630.         };
  631.  
  632.         main()
  633.         {
  634.              union k {
  635.                 char c[2];
  636.                 int i;
  637.              } key;
  638.  
  639.            int deltax=0,deltay=0; /* ¡á»αáó½Ñ¡¿Ñ ñó¿ªÑ¡¿∩ */
  640.            int swap=0; /* Γ¿» ß»αá⌐Γá */
  641.  
  642.            mode(4); /* πßΓá¡«ó¬á 4 αѪ¿¼á úαáΣ¿¬¿ CGA/EGA */
  643.            palette(0); /* »á½¿Γαá 0 */
  644.  
  645.            display_object(sprite,2,1);
  646.            do {
  647.                   key.i = bioskey(0);
  648.                   deltax=0;deltay=0;
  649.                   if(!key.c[0]) switch(key.c[1]) {
  650.                      case 75: /* ó½Ñó« */
  651.                         deltay= -1;
  652.                          break;
  653.                      case 77: /* ó»αáó« */
  654.                         deltay= 1;
  655.                          break;
  656.                      case 72: /* óóÑασ */
  657.                         deltax= -1;
  658.  
  659.  
  660.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  661. â½áóá V                                                       -- 12 --
  662.  
  663.  
  664.                         break;
  665.                      case 80: /* ó¡¿º */
  666.                         deltax= 1;
  667.                         break;
  668.                      case 71: /* óóÑασ ¿ ó½Ñó« */
  669.                         deltay= -1;
  670.                         deltax= -1;
  671.                         break;
  672.                      case 73: /* óóÑασ ¿ ó»αáó« */
  673.                         deltay= 1;
  674.                         deltax= -1;
  675.                         break;
  676.                      case 79: /* ó¡¿º ¿ ó½Ñó« */
  677.                         deltay= -1;
  678.                         deltax= 1;
  679.                         break;
  680.                      case 81: /* ó¡¿º ¿ ó»αáó« */
  681.                         deltay= 1;
  682.                         deltax= 1;
  683.                         break;
  684.                     }
  685.                    /* ßΓ¿αá¡¿Ñ ΓѬπΘÑ⌐ »«º¿µ¿¿ ß»αá⌐Γá */
  686.                    if(!swap) displey_object(sprite,2,1);
  687.                    else displey_object(sprite2,2,1);
  688.  
  689.                    if (is_legal(sprite,deltax,deltay,2)) {
  690.                       update_object(sprite,deltax,deltay,2);
  691.                       update_object(sprite2,deltax,deltay,2);
  692.                    }
  693.                    swap= !swap; /* ß¼Ñ¡á Γ¿»á ß»αá⌐Γá */
  694.                    /* »ÑαѺỿß∞ ß»αá⌐Γá ó ¡«óπε »«º¿µ¿ε */
  695.                    if (!swap) displey_object(sprite,2,1);
  696.                    else displey_object(sprite2,2,1);
  697.                }   while (key.c[0]!='q');
  698.                getchar();
  699.                mode(2);
  700.            }
  701.  
  702.  
  703.  
  704.  
  705.  
  706.  
  707.  
  708.  
  709.  
  710.  
  711.  
  712.  
  713.  
  714.  
  715.  
  716.  
  717.  
  718.  
  719.  
  720.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  721. â½áóá V                                                       -- 13 --
  722.  
  723.  
  724.                       ÄÉâÇìêçÇûꃠäÇìì¢ò é éêäàÄêâÉÇò
  725.      -----------------------------------------------------------------
  726.  
  727.           Å«ñ«í¡« «ßΓá½∞¡δ¼  »α«úαá¼¼á¼,  »α«úαá¼¼δ  ó¿ñÑ«¿úα ó¬½ετáεΓ
  728.      ¬á¬  «»ÑαáΓ«αδ,  Γᬠ ¿  ñá¡¡δÑ.  èα«¼Ñ  ßτÑΓá  ¿úαδ  ¿   ßΓáΓπßá
  729.      αẽ¿τ¡δσ,   αáßσ«ñπѼδσ  ó  »α«µÑßßÑ  ¿úαδ  αÑßπαß«ó  (¡á»α¿¼Ñα,
  730.      ¬«½¿τÑßΓó«  ºá»πΘÑ¡¡δσ  Σ«Γ«¡¡δσ  Γ«α»Ññ),  í«½∞Φ¿¡ßΓó«   ñá¡¡δσ,
  731.      ¿ß»«½∞ºπѼδσ ó ó¿ñÑ«¿úαáσ,  »αÑñßΓáó½∩εΓ ß«í«⌐ »«º¿µ¿¿ φ¬αá¡á ñ½∩
  732.      αẽ¿τ¡δσ «íΩÑ¬Γ«ó.  è««αñ¿¡áΓδ  »«º¿µ¿⌐  φ¬αá¡á  ñ½∩  ñó¿ªπΘ¿σß∩
  733.      «íΩÑ¬Γ«ó  ñ«½ª¡δ σαá¡¿Γ∞ß∩ ó πßΓá¡«ó½Ñ¡¡δσ »ÑαѼѡ¡δσ. ê¡Σ«α¼áµ¿ε
  734.      « Σ¿¬ß¿α«óá¡¡δσ  «íΩѬΓáσ  ¿úα«ó«ú«  »«½∩  µÑ½Ñß««íαạ«  σαá¡¿Γ∞
  735.      ¡Ñ»«ßαÑñßΓóÑ¡¡«  ó  ó¿ñÑ«»á¼∩Γ¿  ΓÑନ¡á½á.  àß½¿ ó »α«µÑßßÑ ¿úαδ
  736.      »«ΓαÑíπÑΓß∩ ¿¡Σ«α¼áµ¿∩ ñ½∩ ¿º¼Ñ¡Ñ¡¿∩ ¿úα«ó«ú« »«½∩ (¬á¬ φΓ« τáßΓ«
  737.      íδóáÑΓ), «ßπΘÑßΓó½∩ÑΓß∩ ñ«ßΓπ» ¬ ó¿ñÑ«»á¼∩Γ¿ ¿ «ΓΓπñá ßτ¿ΓδóáεΓß∩
  738.      ¼áßß¿óδ ß ¿¡Σ«α¼áµ¿Ñ⌐ «í ¿º¼Ñ¡Ñ¡¡«¼ «íΩѬΓÑ.
  739.  
  740.  
  741.  
  742.  
  743.  
  744.  
  745.  
  746.  
  747.  
  748.  
  749.  
  750.  
  751.  
  752.  
  753.  
  754.  
  755.  
  756.  
  757.  
  758.  
  759.  
  760.  
  761.  
  762.  
  763.  
  764.  
  765.  
  766.  
  767.  
  768.  
  769.  
  770.  
  771.  
  772.  
  773.  
  774.  
  775.  
  776.  
  777.  
  778.  
  779.  
  780.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  781. â½áóá V                                                       -- 14 --
  782.  
  783.  
  784.           è«¡Γα««½∞ úαá¡¿µ.
  785.           -----------------
  786.  
  787.           é í«½∞Φ¿¡ßΓóÑ ó¿ñÑ«¿úα ßπΘÑßΓóπεΓ ß»αá⌐Γδ, ¬«Γ«αδÑ ¡áσ«ñ∩Γß∩
  788.      »«ñ  π»αáó½Ñ¡¿Ñ¼  »«½∞º«óáΓѽ∩.  Äíδτ¡«  ¿úα«¬π  ¡Ñ   αáºαÑΦáÑΓß∩
  789.      »ÑαѼÑΘáΓ∞ ß»αá⌐Γ τÑαѺ ¡Ñ¬«Γ«αδÑ «íΩѬΓδ ¿úα«ó«ú« »«½∩ ¿½¿ τÑαѺ
  790.      ñαπú«⌐ ß»αá⌐Γ.  àßΓ∞  ñóá  ß»«ß«íá  «úαá¡¿τÑ¡¿∩   ¼ÑßΓ«¡áσ«ªñÑ¡¿∩
  791.      ß»αá⌐Γá.  é  »Ñαó«¼  ß»«ß«íÑ  ó πßΓá¡«ó½Ñ¡¡δσ »ÑαѼѡ¡δσ σαá¡∩Γß∩
  792.      úαá¡¿τ¡δÑ Γ«τ¬¿ «í½áßΓ¿,  úñÑ  αáºαÑΦÑ¡«  ñó¿ªÑ¡¿Ñ  ß»αá⌐Γá.  Åα¿
  793.      »ÑαÑñó¿ªÑ¡¿¿  ß»αá⌐Γá  »« φ¬αá¡π «ßπΘÑßΓó½∩ÑΓß∩ ¬«¡Γα«½∞ ¡á óδσ«ñ
  794.      ºá »αÑñѽδ φΓ¿σ ñ«»πßΓ¿¼δσ º¡áτÑ¡¿⌐.  Äñ¡á¬« φëà¼ÑΓ«ñ  «í½áñáÑΓ
  795.      ñ«ó«½∞¡«  ¼á½«⌐  αÑá¬Γ¿ó¡«ßΓ∞ε  ¿  ñ½∩  ¿úα ß í«½∞Φ¿¼ ¬«½¿τÑßΓó«¼
  796.      «íΩÑ¬Γ«ó ¡ÑφΣΣÑ¬Γ¿óÑ¡.  ü«½ÑÑ πñ«í¡δ¼ ß»«ß«í«¼  ∩ó½∩ÑΓß∩  »α«ßΓá∩
  797.      »α«óÑα¬á  «í½áßΓ¿  φ¬αá¡á ¡á »αÑñ¼ÑΓ ¡áσ«ªñÑ¡¿∩ ó ¡Ñ⌐ ¬á¬«ú«-½¿í«
  798.      «íΩѬΓá »πΓѼ ¬«¡Γα«½∩ ß««ΓóÑΓßΓóπεΘÑ⌐ «í½áßΓ¿  ó¿ñÑ«»á¼∩Γ¿.  ¥Γ«
  799.      «íÑß»Ñτ¿óáÑΓß∩ ΓѼ,  τΓ« ¿¡Σ«α¼áµ¿∩ «í ¿úα«ó«¼ »«½Ñ πªÑ ¡áσ«ñ¿Γß∩
  800.      ó ó¿ñÑ«»á¼∩Γ¿ ¿ íÑßß¼δ߽ѡ¡« ÑÑ úñÑ-½¿í« ñπí½¿α«óáΓ∞.
  801.  
  802.  
  803.  
  804.  
  805.  
  806.  
  807.  
  808.  
  809.  
  810.  
  811.  
  812.  
  813.  
  814.  
  815.  
  816.  
  817.  
  818.  
  819.  
  820.  
  821.  
  822.  
  823.  
  824.  
  825.  
  826.  
  827.  
  828.  
  829.  
  830.  
  831.  
  832.  
  833.  
  834.  
  835.  
  836.  
  837.  
  838.  
  839.  
  840.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  841. â½áóá V                                                       -- 15 --
  842.  
  843.  
  844.           êº¼Ñ¡Ñ¡¿Ñ µóÑΓá.
  845.           ----------------
  846.  
  847.           é »α«µÑßßÑ ¿úαδ πñ«í¡« «»Ñα¿α«óáΓ∞ «íΩѬΓἿ  αạ«ú« µóÑΓá.
  848.      ìá»α¿¼Ñα,  ¬αáß¡δ⌐  µóÑΓ  ¼«ªÑΓ «Γ«íαáªáΓ∞ úαá¡¿µδ ¡Ñ»ÑαÑßѬáѼδσ
  849.      «í½áßΓÑ⌐, ºÑ½Ñ¡δ⌐ µóÑΓ ¿ß»«½∞ºπÑΓß∩ ñ½∩ óáΦÑú« ß»αá⌐Γá,  á ªÑ½Γδ⌐
  850.      - ñ½∩ ß»αá⌐Γá »α«Γ¿ó¡¿¬á. ò«Γ∩ φΓ« ¼«ª¡« ßñѽáΓ∞ ß ¿ß»«½∞º«ó᡿Ѽ
  851.      »ÑαѼѡ¡δσ, «»¿ßδóáεΘ¿σ φΓ¿ «íΩѬΓδ, τáßΓ« íδóáÑΓ πñ«í¡ÑÑ ºáαá¡ÑÑ
  852.      «»αÑñѽ∩Γ∞  ñ½∩ «íΩѬΓá Ñú« µóÑΓ.  ¥Γ« ¡Ñ Γ«½∞¬« π»α«ßΓ¿Γ »α«µÑßß
  853.      »α«úαá¼¼¿α«óá¡¿∩   ó¿ñÑ«¿úαδ,   ¡«    ¿    ßñѽáÑΓ    ÑÑ    í«½ÑÑ
  854.      íδßΓα«ñÑ⌐ßΓóπεΘÑ⌐. ìá»α¿¼Ñα, Ñß½¿ ó »πα»πα¡δ⌐ µóÑΓ «¬αáΦѡᠼ¿¡á,
  855.      Γ« ßτ¿ΓáÑΓß∩,  τΓ« óδ ¡á ¡Ñ⌐ »«ñ«αó὿ß∞ ½¿Φ∞ ó Γ«¼ ß½πτáÑ,  Ñß½¿
  856.      «ñ¡á ¿º Γ«τѬ óáΦÑú« ß»αá⌐Γá «¬αáΦ¿óáÑΓß∩ ó »πα»πα¡δ⌐ µóÑΓ.
  857.  
  858.           Åα«úαá¼¼¿α«óá¡¿Ñ ó  µóÑΓÑ  ó¿ñÑ«¿úα  ¿¼ÑÑΓ  ñ½¿¡¡πε ¿ßΓ«α¿ε.
  859.      ìá»α¿¼Ñα, »Ñαóá∩ ¿úαá "»¿¡ú-»«¡ú" ¿¼Ñ½á Γ«½∞¬« ñóá µóÑΓá: íѽδ⌐ ¿
  860.      τÑα¡δ⌐.  é  φΓ«⌐  ¿úαÑ  íѽδ⌐  µóÑΓ  íδ½ ¡Ñß«ó¼ÑßΓ¿¼ ß íÑ½δ¼ («¡¿
  861.      «ΓΓὬ¿ó὿ß∞), ¡« ¼«ª¡« í佫 ñó¿úáΓ∞ß∩ »« τÑα¡«¼π ¿úα«ó«¼π »«½ε.
  862.      Æá¬¿¼ «íαẫ¼, íѽδ⌐ Φáਪ ¼«ú »ÑαѼÑΘáΓ∞ß∩ »« τÑα¡«¼π »«½ε, Ñß½¿
  863.      πñáα∩½ß∩ íѽ«⌐ αá¬ÑΓ¬«⌐ ¿½¿  «Γαáªá½ß∩  «Γ  íѽ«⌐  ßΓÑ¡δ  (½¿¡¿¿)
  864.      »«ºáñ¿  αá¬ÑΓ¬¿.  ¥Γ¿  «ß¡«ó¡δÑ  »α¿¡µ¿»δ ¿ß»«½∞º«ó὿ß∞ ¿ Γ«úñá,
  865.      ¬«úñá ó ¿úαÑ ßΓ὿ »«∩ó½∩Γ∞ß∩ ¿ ñαπú¿Ñ  µóÑΓá.  Å«ß½Ñ  Γ«ú«,  ¬á¬
  866.      «íΩѬΓδ  ó¿ñÑ«¿úα  ßΓ὿  »α«úαá¼¼¿α«óáΓ∞ß∩  ó µóÑΓÑ,  αáºαáí«Γ¬á
  867.      »α«úαá¼¼ «íαáí«Γ¬¿ ¿úα«óδσ  ß¿Γπᵿ⌐  º¡áτ¿Γѽ∞¡«  π»α«ßΓ¿½áß∞  ¿
  868.      πóѽ¿τ¿½áß∞ ß¬«α«ßΓ∞ ¿σ αáí«Γδ.
  869.  
  870.  
  871.  
  872.  
  873.  
  874.  
  875.  
  876.  
  877.  
  878.  
  879.  
  880.  
  881.  
  882.  
  883.  
  884.  
  885.  
  886.  
  887.  
  888.  
  889.  
  890.  
  891.  
  892.  
  893.  
  894.  
  895.  
  896.  
  897.  
  898.  
  899.  
  900.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  901. â½áóá V                                                       -- 16 --
  902.  
  903.  
  904.                       ÆÇüïÄ æùàÆÇ ÇèÆêéìÄâÄ ÅÉÄÆêéìêèÇ
  905.      -----------------------------------------------------------------
  906.  
  907.           É«½∞ ¬«¼»∞εΓÑαá ó ¿úαÑ ó« ¼¡«ú«¼ ºáó¿ß¿Γ «Γ  Γ«ú«,  ∩ó½∩ÑΓß∩
  908.      ½¿  φΓá  ¿úαá  ñ½∩  «ñ¡«ú«  τѽ«óѬᠠ¿½¿ ñ½∩ ñó«¿σ.  àß½¿ ó ¿úαÑ
  909.      πτáßΓóπεΓ ñóá  τѽ«óѬá,  ¬«¼»∞εΓÑαπ  «Γó«ñ¿Γß∩  α«½∞  áαí¿Γαá  ¿
  910.      Σπ¡¬µ¿¿   Γáí½«  ñ½∩  «Γ«íαáªÑ¡¿∩  ßτÑΓá.  Äñ¡á¬«,  ó  ¿úαÑ,  úñÑ
  911.      πτáßΓóπÑΓ «ñ¿¡ ¿ú᫬,  ¬«¼»∞εΓÑα ßΓá¡«ó¿Γß∩ á¬Γ¿ó¡δ¼ »α«Γ¿ó¡¿¬«¼.
  912.      æ  Γ«τ¬¿  ºαÑ¡¿∩  »α«úαá¼¼¿α«óá¡¿∩ αáºαáí«Γ¬á ¿úα,  úñÑ ¬«¼»∞εΓÑα
  913.      óδßΓπ»áÑΓ ó α«½¿ »α«Γ¿ó¡¿¬á, º¡áτ¿Γѽ∞¡« ¿¡ΓÑαÑß¡Ñ⌐.
  914.  
  915.  
  916.  
  917.  
  918.  
  919.  
  920.  
  921.  
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928.  
  929.  
  930.  
  931.  
  932.  
  933.  
  934.  
  935.  
  936.  
  937.  
  938.  
  939.  
  940.  
  941.  
  942.  
  943.  
  944.  
  945.  
  946.  
  947.  
  948.  
  949.  
  950.  
  951.  
  952.  
  953.  
  954.  
  955.  
  956.  
  957.  
  958.  
  959.  
  960.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  961. â½áóá V                                                       -- 17 --
  962.  
  963.  
  964.                            ÉÇçÉÇüÄÆèÇ  éêäàÄêâÉ¢
  965.      -----------------------------------------------------------------
  966.  
  967.           é φΓ«¼  »áαáúαáΣÑ  ¼δ  «»¿ΦѼ αáºαáí«Γ¬π ó¿ñÑ«¿úαδ,  ¬«Γ«αá∩
  968.      ¿½½εßΓα¿απÑΓ ¼¡«ú¿Ñ »α¿¡µ¿»δ, «»¿ßá¡¡δÑ ó ñá¡¡«⌐ ú½áóÑ.
  969.  
  970.  
  971.           Ä»¿ßá¡¿Ñ ¿úαδ
  972.           -------------
  973.  
  974.           ÅÑαóδ¼ Φáú«¼  ó   »α«µÑßßÑ   ß«ºñá¡¿∩   ó¿ñÑ«¿úαδ   ∩ó½∩ÑΓß∩
  975.      «»αÑñѽѡ¿Ñ   ÑÑ  »α¿α«ñδ  ¿  »αáó¿½,  »«  ¬«Γ«αδ¼  «¡á  óÑñÑΓß∩.
  976.      Åα«úαá¼¼á, «»¿ßá¡¡á∩ ºñÑß∞, »αÑñßΓáó½∩ÑΓ ß«í«⌐ ¬«¼»∞εΓÑਧ«óá¡¡πε
  977.      óÑαß¿ε  Γαáñ¿µ¿«¡¡«⌐  ñÑΓ߬«⌐  ¿úαδ "ßὫτ¬¿".  êú᫬ ¿ ¬«¼»∞εΓÑα
  978.      π»αáó½∩εΓ ¬áªñδ⌐ ßó«¿¼ "τѽ«óѬ«¼". Äñ¿¡ ¿º ¡¿σ ñ«ú«¡∩ÑΓ ñαπú«ú«,
  979.      ¿,  Ñß½¿  π  ¡¿σ  »α«¿º«Φѽ  ¬«¡Γá¬Γ,  »α«¿ßσ«ñ¿Γ  ß¼Ñ¡á  á¼»½πá.
  980.      Å«íÑñ¿ΓѽѼ ó ¿úαÑ ßΓá¡«ó¿Γß∩ Γ«Γ, ¬Γ« í«½∞Φ¿⌐ »α«¼ÑªπΓ«¬ óαѼѡ¿
  981.      íδ½ ó »«½«ªÑ¡¿¿ ñ«ú«¡∩Ѽ«ú«.
  982.  
  983.           CτÑΓ «»αÑñѽ∩ÑΓß∩  »πΓѼ  Σ¿¬ßᵿ¿  ¿úα«ó«ú« óαѼѡ¿:  »«ß½Ñ
  984.      ¬áªñ«⌐  »α«ΦÑñΦÑ⌐  ßѬπ¡ñδ  ñ«íáó½∩ÑΓß∩  «ñ¡«  «τ¬«   Γ«¼π,   ¬Γ«
  985.      ¡áσ«ñ¿Γß∩ ó α«½¿ ñ«ú«¡∩Ѽ«ú«. æτÑΓ ¡Ñ»αÑαδó¡« «Γ«íαáªáÑΓß∩ ó πú½π
  986.      φ¬αá¡á.  êúαá ºá¬á¡τ¿óáÑΓß∩,  ¬«úñá «ñ¿¡ ¿º ¿ú᫬«ó ¡áí¿αáÑΓ  999
  987.      «τ¬«ó.  ä½∩  πñ«íßΓóá  ¿úαá  ¼«ªÑΓ  íδΓ∞  ºá¬«¡τѡᠻπΓѼ ¡áªáΓ¿∩
  988.      ¬½áó¿Φ¿ <Q>.
  989.  
  990.           êú᫬ π»αáó½∩ÑΓ   ñó¿ªÑ¡¿Ñ¼   ß»αá⌐Γá   »«ßαÑñßΓó«¼   ¬½áó¿Φ
  991.      π»αáó½Ñ¡¿∩  ¬παß«α«¼.  êúα«ó«Ñ  »«½Ñ ó ñá¡¡«¼ ß½πτáÑ ¡Ñ ß«ºñáÑΓß∩
  992.      ßἫ⌐ »α«úαá¼¼«⌐ ¿úαδ.  ä½∩  φΓ¿σ  µÑ½Ñ⌐  ¿ß»«½∞ºπεΓß∩  »α«úαá¼¼δ
  993.      α¿ß«óá¡¿∩ ("»α«úαá¼¼δ-σπñ«ª¡¿¬¿"),  «»¿ßá¡¡δÑ ó ú½áóÑ 4. Å«φΓ«¼π,
  994.      óδ ¼«ªÑΓÑ ßἫßΓ«∩Γѽ∞¡« ß«ºñáóáΓ∞ αẽ¿τ¡πε ßαÑñπ ¿úαδ.
  995.  
  996.  
  997.  
  998.  
  999.  
  1000.  
  1001.  
  1002.  
  1003.  
  1004.  
  1005.  
  1006.  
  1007.  
  1008.  
  1009.  
  1010.  
  1011.  
  1012.  
  1013.  
  1014.  
  1015.  
  1016.  
  1017.  
  1018.  
  1019.  
  1020.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  1021. â½áóá V                                                       -- 18 --
  1022.  
  1023.  
  1024.           êß»«½∞º«óá¡¿Ñ µóÑΓá ¿ úαá¡¿τ¡δÑ πß½«ó¿∩.
  1025.           ---------------------------------------
  1026.  
  1027.           êúαá "ßὫτ¬¿"  ¿ß»«½∞ºπÑΓ  »α«úαá¼¼¿α«óá¡¿Ñ  ó  µóÑΓÑ   ñ½∩
  1028.      ¿ñÑ¡Γ¿Σ¿¬áµ¿¿  αẽ¿τ¡δσ  «íΩÑ¬Γ«ó.  ìá»α¿¼Ñα,  óδ ¼«ªÑΓÑ ßñѽáΓ∞
  1029.      ß»αá⌐Γ ¿úα«¬á ºÑ½Ñ¡δ¼, ß»αá⌐Γ ¬«¼»∞εΓÑαá - ªÑ½Γδ¼, á úαá¡¿µδ »«½∩
  1030.      ¿úαδ   -   ¬αáß¡δ¼¿.   é   ß««ΓóÑΓßΓó¿¿   ß  φΓ¿¼  »«ñσ«ñ«¼,  ¡ÑΓ
  1031.      ¡Ñ«íσ«ñ¿¼«ßΓ¿ σαá¡¿Γ∞  «Γñѽ∞¡δÑ  ¼áßß¿óδ  ñá¡¡δσ  ó  αáºñѽ∩Ѽ«⌐
  1032.      «í½áßΓ¿ »α«úαá¼¼δ,  Γ.¬. »«ñ»α«úαá¼¼δ ¼«úπΓ »α«ßΓ« ¬«¡Γα«½¿α«óáΓ∞
  1033.      ß«ñÑন¼«Ñ ó¿ñÑ«»á¼∩Γ¿.  é ñá¡¡«¼  ß½πτáÑ,  Γᬠ ªÑ,  º¡áτ¿Γѽ∞¡«
  1034.      π»α«ΘáÑΓß∩  »α«µÑßß «úαá¡¿τÑ¡¿∩ «í½áßΓ¿ ñó¿ªÑ¡¿∩ ß»αá⌐Γ«ó ¬αáß¡«⌐
  1035.      ½¿¡¿Ñ⌐.  ä½∩  φΓ«⌐  µÑ½¿  ¡Ñ«íσ«ñ¿¼«  ¡Ñ¼¡«ú«  ¿º¼Ñ¡¿Γ∞   Σπ¡¬µ¿ε
  1036.      is_legal(), «»¿ßá¡¡πε αá¡ÑÑ, ¬á¬ φΓ« »«¬áºá¡« ¡¿ªÑ.
  1037.  
  1038.           /* Ä»αÑñѽѡ¿Ñ ñ«»πßΓ¿¼«ßΓ¿ »ÑαѼÑΘÑ¡¿∩ «íΩѬΓá.
  1039.           é«ºóαáΘáÑΓ 1, Ñß½¿ »ÑαѼÑΘÑ¡¿Ñ ñ«»πßΓ¿¼«, 0 - ó
  1040.           »α«Γ¿ó¡«¼ ß½πτáÑ
  1041.           */
  1042.           void is_legal(ob, x, y, sides)
  1043.           int ob[][4];          /* «íΩÑ¬Γ */
  1044.           int x, y;             /* Φáú »ÑαѼÑΘÑ¡¿∩ */
  1045.           int sides;          /* τ¿ß½« ßΓ«α«¡ «íΩѬΓá */
  1046.             {
  1047.             if(x==0 && y==0)
  1048.               return 1;    /* »πßΓ«Ñ »ÑαѼÑΘÑ¡¿Ñ óßÑúñá ñ«»πßΓ¿¼«*/
  1049.             sides--;
  1050.             for(; sides>=0; sides--)
  1051.               {
  1052.               /* ¬«¡Γα«½∞ óδσ«ñá ºá ñ«»πßΓ¿¼πε «í½áßΓ∞ */
  1053.               if(ob[sides][0]+x>199 || ob[sides][1]+y>319)
  1054.                 return 0;
  1055.               if(ob[sides][2]+x<0 || ob[sides][3]+y<0)
  1056.                 return 0;
  1057.               /* ¬«¡Γα«½∞ »αÑ»∩ΓßΓó¿⌐ */
  1058.               if(read_point(ob[sides][0]+x, ob[sides][1]+y)==2)
  1059.                 return 0;
  1060.               if(read_point(ob[sides][2]+x, ob[sides][3]+y)==2)
  1061.                 return 0;
  1062.               }
  1063.             return 1;
  1064.             }
  1065.  
  1066.           ìừ¼¡¿¼ ¬«ñδ  αẽ¿τ¡δσ  µóÑΓ«ó:  ªÑ½Γδ⌐ - 1,  ¬αáß¡δ⌐ - 2,
  1067.      ºÑ½Ñ¡δ⌐ - 3, τÑα¡δ⌐ (Σ«¡) - 0.
  1068.  
  1069.  
  1070.  
  1071.  
  1072.  
  1073.  
  1074.  
  1075.  
  1076.  
  1077.  
  1078.  
  1079.  
  1080.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  1081. â½áóá V                                                       -- 19 --
  1082.  
  1083.  
  1084.           Ä»¿ßá¡¿Ñ ß»αá⌐Γá.
  1085.           -----------------
  1086.  
  1087.           æ»αá⌐Γ,  ¿ß»«½∞ºπѼδ⌐ ó ñá¡¡«⌐ ¿úαÑ, íπñÑΓ »«σ«ª ¡á íÑúπΘÑú«
  1088.      τѽ«óѬá.
  1089.  
  1090.      _________________________________________________________________
  1091.  
  1092.       é¿ñ ß»αá⌐Γá ¡á ßΓα. 187 ¡Ñ ¼«ªÑΓ íδΓ∞ ó«ß»α«¿ºóÑñÑ¡ ¿¼ÑεΘ¿¼¿ß∩
  1093.       ßαÑñßΓóἿ. (ÉÑñ. »Ñα. ê.üδτ¬«ó߬¿⌐.)
  1094.      _________________________________________________________________
  1095.  
  1096.           é »α«úαἼѠ ßπΘÑßΓóπÑΓ ñóá Γ¿»á ß»αá⌐Γá.  é« óΓ«α«¼ ß»αá⌐ΓÑ
  1097.      ¡«ú¿ "τѽ«óѬá" ßªáΓδ ó¼ÑßΓÑ.  üδßΓαá∩ ß¼Ñ¡á ¼Ñªñπ  ¿º«íαáªÑ¡¿∩¼¿
  1098.      ñóπσ Γ¿»«ó ß»αá⌐Γá ß«ºñáÑΓ ¿½½εº¿ε íÑúπΘÑú« τѽ«óѬá.
  1099.  
  1100.           æ»αá⌐Γ »«½∞º«óáΓѽ∩  ¡áτ¿¡áÑΓ  ¿úαπ  ó  óÑασ¡Ñ¼  ½Ñó«¼  πú½π
  1101.      φ¬αá¡á, á ß»αá⌐Γ ¬«¼»∞εΓÑαá - ó ¡¿ª¡Ñ¼ »αáó«¼.  Ä»¿ßá¡¿Ñ ß»αá⌐Γ«ó
  1102.      »α¿óÑñÑ¡« ¡¿ªÑ.
  1103.  
  1104.           int human[4][4] = /* φΓ« óáΦ ß»αá⌐Γ */
  1105.                {
  1106.                1,     6,     6,     6,
  1107.                4,     2,     3,     9,
  1108.                9,     1,     6,     6,
  1109.                9,     11,    6,     6
  1110.                };
  1111.  
  1112.           int human2[4][4] =
  1113.                {
  1114.                1,     6,     6,     6,
  1115.                4,     2,     3,     9,
  1116.                9,     3,     6,     6,
  1117.                9,     9,     6,     6
  1118.                };
  1119.  
  1120.           int computer[4][4] = /* φΓ«  ß»αá⌐Γ ¬«¼»∞εΓÑαá */
  1121.                {
  1122.                180,     6,     185,     6,
  1123.                183,     2,     182,     9,
  1124.                188,     1,     185,     6,
  1125.                188,     11,    185,     6
  1126.                };
  1127.           int computer2[4][4] =
  1128.                {
  1129.                180,     6,     185,     6,
  1130.                183,     2,     182,     9,
  1131.                188,     3,     185,     6,
  1132.                188,     9,     185,     6
  1133.                };
  1134.  
  1135.  
  1136.  
  1137.  
  1138.  
  1139.  
  1140.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  1141. â½áóá V                                                       -- 20 --
  1142.  
  1143.  
  1144.                ÆàïÄ âïÇéìÄë ÅÉÄâÉÇîî¢
  1145.      -----------------------------------------------------------------
  1146.  
  1147.           Å«ß½Ñ Γ«ú«   ¬á¬   óδ  ¡áπτ¿ΓÑß∞  αáºαáíáΓδóáΓ∞  ß«íßΓóÑ¡¡δÑ
  1148.      ó¿ñÑ«¿úαδ,  óδ »«⌐¼ÑΓÑ,  τΓ« óßÑ «¡¿  ¿¼ÑεΓ  «ñ¡π  ú½áó¡πε  «íΘπε
  1149.      ñÑΓá½∞  - »α«úαá¼¼π,  π»αáó½∩εΘπε ¿úα«⌐.  Ç½ú«α¿Γ¼ Γᬿσ »α«úαá¼¼
  1150.      ñ«ó«½∞¡«-Γᬿ ßσ«ñÑ¡ ñ½∩ αẽ¿τ¡δσ  ó¿ñÑ«¿úα.  â½áó¡á∩  »α«úαá¼¼á
  1151.      úÑ¡Ñα¿απÑΓ  ñó¿ªÑ¡¿Ñ  «íΩÑ¬Γ«ó  »«  φ¬αá¡π,  ¬«¡Γα«½¿απÑΓ ¡áªáΓ¿Ñ
  1152.      ¬½áó¿Φ »«½∞º«óáΓѽѼ ¿ αÑáú¿απÑΓ ¡á ¡¿σ,  »α«óÑα∩ÑΓ  ñ«»πßΓ¿¼«ßΓ∞
  1153.      ºáñá¡¡δσ  »ÑαѼÑΘÑ¡¿⌐,  »«ñßτ¿ΓδóáÑΓ  ¡áíαá¡¡δÑ «τ¬¿ ¿ «Γ«íαáªáÑΓ
  1154.      ßτÑΓ,  »«ß½Ññ«óáΓѽ∞¡« óδºδóáÑΓ Σπ¡¬µ¿¿ «Γ«íαáªÑ¡¿∩  «íΩÑ¬Γ«ó  ¡á
  1155.      φ¬αá¡Ñ.
  1156.  
  1157.  
  1158.           int directx,directy; /* ¡á»αáó½Ñ¡¿Ñ  */
  1159.  
  1160.           main()
  1161.           {
  1162.              union k {
  1163.                 char c[2];
  1164.                 int i;
  1165.              } key;
  1166.  
  1167.            int deltax=0,deltay=0;
  1168.            int swaph=0,swapc=0;
  1169.            int it=COMPUTER;
  1170.            long htime,ctime,starttime,curtime; /* Γá⌐¼Ñα ßτÑΓá */
  1171.            int count;
  1172.            mode(4); /* πßΓá¡«ó¬á 4 αѪ¿¼á úαáΣ¿¬¿ CGA/EGA */
  1173.            palette(0); /* »á½¿Γαá 0 */
  1174.  
  1175.            load_pic(); /* óó«ñ ¿úα«ó«ú« »«½∩ */
  1176.  
  1177.            time(&starttime); /* πßΓá¡«ó¬á óαѼѡ¿ */
  1178.            htime=ctime=0;
  1179.  
  1180.            display_object(human,4,1);
  1181.            display_object(computer,4,3);
  1182.            count=0;
  1183.  
  1184.            /* ú½áó¡δ⌐ µ¿¬½ ¿úαδ */
  1185.            do {
  1186.                /* óδτ¿ß½Ñ¡¿Ñ ΓѬπΘÑú« ßτÑΓá  */
  1187.               time(&curtime);
  1188.               if (it==COMPUTER) htime+=curtime-starttime;
  1189.               else ctime+=curtime-starttime;
  1190.               time(&starttime);
  1191.               show_score(it,htime,ctime);
  1192.  
  1193.               if (bioskey(1)) { /* Ñß½¿ ¡áªáΓá ¬½áó¿Φá */
  1194.                   directx=directy=IDLE; /* πßΓá¡áó½¿óáÑΓ
  1195.                                ¡á»αáó½Ñ¡¿Ñ »ÑαѼÑΘÑ¡¿∩ */
  1196.                   key.i = bioskey(0);
  1197.                   deltax=0;deltay=0;
  1198.  
  1199.  
  1200.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  1201. â½áóá V                                                       -- 21 --
  1202.  
  1203.  
  1204.                   if(!key.c[0]) switch(key.c[1]) {
  1205.                      case 75: /* ó½Ñó« */
  1206.                         deltay= -1;
  1207.                         directy=LEFT;
  1208.                         break;
  1209.                      case 77: /* ó»αáó« */
  1210.                         deltay=1;
  1211.                         directy=RIGHT;
  1212.                         break;
  1213.                      case 72: /* óóÑασ */
  1214.                         deltax= -1;
  1215.                         directx=UP;
  1216.                          deltax= -1;
  1217.                         directx=UP;
  1218.                         break;
  1219.                      case 80: /* ó¡¿º */
  1220.                         deltax=1;
  1221.                         directx=DOWN;
  1222.                         break;
  1223.                      case 71: /* óóÑασ ¿ ó½Ñó« */
  1224.                         deltay= -1;
  1225.                         directy=LEFT;
  1226.                         deltax= -1;
  1227.                         directx=UP;
  1228.                         break;
  1229.                      case 73: /* óóÑασ ¿ ó»αáó« */
  1230.                         deltay=1;
  1231.                         directy=RIGHT;
  1232.                         deltax= -1;
  1233.                         directx=UP;
  1234.                         break;
  1235.                      case 79: /* ó¡¿º ¿ ó½Ñó« */
  1236.                         deltay= -1;
  1237.                         directy=LEFT;
  1238.                         deltax=1;
  1239.                         directx=DOWN;
  1240.                         break;
  1241.                      case 81: /* ó¡¿º ¿ ó»αáó« */
  1242.                         deltay=1;
  1243.                         directy=RIGHT;
  1244.                         deltax=1;
  1245.                         directx=DOWN;
  1246.                         break;
  1247.                    }
  1248.                  }
  1249.                  /* ß¼Ñ¡á Γ¿»á ß»αá⌐Γá ¿úα«¬á  */
  1250.                  if (!swaph) display_object(human,4,1);
  1251.                  else display_object(human2,4,1);
  1252.                  if (is_legal(human,deltax,deltay,4)) {
  1253.                     update_object(human,deltax,deltay,4);
  1254.                     update_object(human2,deltax,deltay,4);
  1255.                  }
  1256.                  /* »α«óÑα∩ÑΓ: »«»á½ß∩ ½¿ πíÑúáεΘ¿⌐ */
  1257.                  if (!count && tag(human,computer)) {
  1258.  
  1259.  
  1260.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  1261. â½áóá V                                                       -- 22 --
  1262.  
  1263.  
  1264.                     it= !it; /* ß¼Ñ¡á á¼»½πá */
  1265.                     count=6;
  1266.                  }
  1267.                  swaph= !swaph; /* ß¼Ñ¡á Σ¿úπαδ ¿¼¿Γ¿απεΘÑ⌐ íÑú */
  1268.  
  1269.                  /* ¿º«íαáªÑ¡¿Ñ "τѽ«óѬá" ó ¡«ó«⌐ »«º¿µ¿¿ */
  1270.                  if (!swaph) displey_object(human,4,1);
  1271.                  else displey_object(human2,4,1);
  1272.  
  1273.                  if (!swapc) display_object(computer,4,3);
  1274.                  else display_object(computer2,4,3);
  1275.  
  1276.                  /* úÑ¡Ñαᵿ∩ ñó¿ªÑ¡¿∩ ß»αá⌐Γá ¬«¼»∞εΓÑαá */
  1277.                  if (it==COMPUTER)
  1278.                  it_comp_move(computer,computer2,human,4);
  1279.                  else
  1280.                not_it_comp_move(computer,computer2,directx,directy,4);
  1281.                  if (!count && tag(human,computer)) {
  1282.                     it= !it;
  1283.                     count=6;
  1284.                /* ¬«¼»∞εΓÑα ñ«ú«¡∩ÑΓ; ¿º¼Ñ¡Ñ¡¿Ñ ¬««αñ¿¡áΓδ ò ¡á 2
  1285.                   Γá¬, τΓ«íδ íδßΓαÑ⌐ ßΓáΓ∞ ñ«ú«¡∩Ѽδ¼
  1286.                */
  1287.                      if (is_legal(computer, 2, 0, 4))
  1288.                      {
  1289.                         update_object(computer, 2, 0, 4);
  1290.                        update_object(computer2, 2, 0, 4);
  1291.                     }
  1292.                    else
  1293.                    {
  1294.                      update_object(computer, -2, 0, 4);
  1295.                      update_object(computer2, -2, 0, 4);
  1296.                    }
  1297.                 }
  1298.                 swapc = !swapc; /* ºá¼Ñ¡¿Γ∞ Γ¿» ß»αá⌐Γá */
  1299.             /* óδó«ñ ¡á φ¬αá¡ ß»αá⌐Γá ¬«¼»∞εΓÑαá */
  1300.                 if(!swapc) display_object(computer, 4, 3);
  1301.                 else       display_object(computer2, 4, 3);
  1302.                 if(count) count--;
  1303.              }
  1304.              while (key.c[0] !='q' && htime<999 && ctime<999);
  1305.              mode(2);
  1306.              if(ctime>htime)
  1307.                 printf("諼»∞εΓÑα óδ¿úαá½!");
  1308.              else
  1309.                 printf("éδ »«íÑñ¿½¿!");
  1310.            }
  1311.  
  1312.  
  1313.           é  ΓѽѠú½áó¡«⌐  »α«úαá¼¼δ φ¬αá¡ ΓÑନ¡á½á πßΓá¡áó½¿óáÑΓß∩ ó
  1314.      4-⌐ úαáΣ¿τÑ߬¿⌐ αѪ¿¼,  óδí¿αáÑΓß∩ »á½¿Γαá 0  ¿  ¿¡¿µ¿á½¿º¿απεΓß∩
  1315.      »ÑαѼѡ¡δÑ  ßτÑΓá  ¿úαδ.  Å«ß½Ñ  φΓ«ú« «íá ß»αá⌐Γá «Γ«íαáªáεΓß∩ ó
  1316.      ßó«¿σ ¿ßσ«ñ¡δσ »«º¿µ¿∩σ.
  1317.  
  1318.  
  1319.  
  1320.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  1321. â½áóá V                                                       -- 23 --
  1322.  
  1323.  
  1324.           ÅÑαѼѡ¡á∩ htime ß«ñÑαª¿Γ º¡áτÑ¡¿Ñ ßτÑΓá ¿ú᫬á,  á ctime  -
  1325.      ¬«¼»∞εΓÑαá.  ÅÑαѼѡ¡δÑ  swapc ¿ swaph »αÑñ¡áº¡áτÑ¡δ ñ½∩ π¬áºá¡¿∩
  1326.      Γ¿»á ß»αá⌐Γá.  ÅÑαѼѡ¡δÑ  deltax  ¿  deltay  ß«ñÑαªáΓ  ¿º¼Ñ¡Ñ¡¿∩
  1327.      º¡áτÑ¡¿⌐  ¬««αñ¿¡áΓ  »«ß½Ñ  «τÑαÑñ¡«ú«  ¡áªáΓ¿∩  ¬½áó¿Φ  ¿ú᫬«¼.
  1328.      â½«íá½∞¡δÑ  »ÑαѼѡ¡δÑ  directx  ¿  directy  ß«ñÑαªáΓ  ¬««αñ¿¡áΓδ
  1329.      ß»αá⌐Γá, π»αáó½∩Ѽ«ú« ¿ú᫬«¼. ç¡áτÑ¡¿∩ φΓ¿σ óѽ¿τ¿¡ ¿ß»«½∞ºπεΓß∩
  1330.      ¬«¼»∞εΓÑα«¼ ñ½∩ úÑ¡Ñαᵿ¿ »ÑαѼÑΘÑ¡¿∩ ßó«Ñú« ß»αá⌐Γá. ÅÑαѼѡ¡á∩-
  1331.      »α¿º¡á¬  it  ß«ñÑαª¿Γ  ¿¡Σ«α¼áµ¿ε  «  Γ«¼,  ¬Γ«  ó  ñá¡¡δ⌐ ¼«¼Ñ¡Γ
  1332.      ¡áσ«ñ¿Γß∩ ó αѪ¿¼Ñ ñ«ú«¡∩εΘÑú«.  Ä¡á ¼«ªÑΓ »α¿¡¿¼áΓ∞ «ñ¡« ¿º ñóπσ
  1333.      º¡áτÑ¡¿⌐,  «»¿ßá¡¡δσ  ó  ¼á¬α««»αÑñѽѡ¿¿  #define:  COMPUTER ¿½¿
  1334.      HUMAN.
  1335.  
  1336.           â½áó¡á∩   »α«úαἼᠠ αáí«ΓáÑΓ    µ¿¬½¿τÑ߬¿.    ìá   φ¬αá¡Ñ
  1337.      «Γ«íαáªáÑΓß∩  ΓѬπΘ¿⌐  ßτÑΓ.  Å«ß½Ñ  φΓ«ú«  »α«óÑα∩ÑΓß∩,  íδ½á ½¿
  1338.      ¡áªáΓá  ¬á¬á∩-½¿í«  ¬½áó¿Φá.   àß½¿   ¬½áó¿Φá   íδ½á  ¡áªáΓá,  Γ«
  1339.      «»αÑñѽ∩ÑΓß∩ ÑÑ  ¬«ñ ¿ »α«¿ºó«ñ¿Γß∩  ºáñá¡¡«Ñ »ÑαѼÑΘÑ¡¿Ñ ß»αá⌐Γá
  1340.      ¿ú᫬á.  ÄíαáΓ¿ΓÑ  ó¡¿¼á¡¿Ñ  ¡á  Γ«,  τΓ« ó  ñá¡¡«⌐ »α«úαἼѠ¡ÑΓ
  1341.      αѪ¿¼á «ª¿ñá¡¿∩  ¡áªáΓ¿∩ ¬½áó¿Φ¿ ¿ú᫬«¼.  Å«φΓ«¼π,  ¡Ñ ß¼«Γα∩ ¡á
  1342.      Γ«,  τΓ« ¿ú᫬  ¡Ñ  ¡áª¿¼áÑΓ  ¬½áó¿Φ,  ¬«¼»∞εΓÑα  »α«ñ«½ªáÑΓ ßó«ε
  1343.      αáí«Γπ,  ¿ ß»αá⌐Γ ¿úα«¬á »α«ñ«½ªáÑΓ π¬áºá¡¡«Ñ  »ÑαѼÑΘÑ¡¿Ñ ñ« ΓÑσ
  1344.      »«α,  »«¬á ¡Ñ íπñÑΓ ¡áªáΓá ñαπúá∩ ¬½áó¿Φá. Æá¬«Ñ ñó¿ªÑ¡¿Ñ ß»αá⌐Γá
  1345.      «íÑß»Ñτ¿óáÑΓ ñ«ßΓáΓ«τ¡« óδß«¬πε ñ¿¡á¼¿τ¡«ßΓ∞ ¿úαδ.
  1346.  
  1347.           Å«ß½Ñ «τÑαÑñ¡«ú«   »ÑαѼÑΘÑ¡¿∩   ß»αá⌐Γá  ¿ú᫬á,  ¬«¼»∞εΓÑα
  1348.      úÑ¡Ñα¿απÑΓ ñó¿ªÑ¡¿Ñ ß«íßΓóÑ¡¡«ú« ß»αá⌐Γá,  Ñß½¿  φΓ«  ¡Ñ«íσ«ñ¿¼«.
  1349.      ÄíαáΓ¿ΓÑ  ó¡¿¼á¡¿Ñ  ¡á  Γ«,  τΓ«  ñ½∩  úÑ¡Ñαᵿ¿ ñó¿ªÑ¡¿∩ ß»αá⌐Γá
  1350.      ¿ß»«½∞ºπεΓß∩ αẽ¿τ¡δÑ Σπ¡¬µ¿¿ ó ºáó¿ß¿¼«ßΓ¿  «Γ  Γ«ú«  ó  αѪ¿¼Ñ
  1351.      ñ«ú«¡∩εΘÑú«  ¿½¿  ñ«ú«¡∩Ѽ«ú«  ¡áσ«ñ¿Γß∩  ß»αá⌐Γ.  Åα¿ αÑ὿ºáµ¿¿
  1352.      «τÑαÑñ¡«ú« »ÑαѼÑΘÑ¡¿∩ ß«íßΓóÑ¡¡«ú«  ß»αá⌐Γá,  ¬«¼»∞εΓÑα  Γᬠ ªÑ
  1353.      »α«óÑα∩ÑΓ Ñú« ¬«ααÑ¬Γ¡«ßΓ∞.
  1354.  
  1355.           Éáßß¼«Γα¿¼ ¡Ñ¬«Γ«αδÑ »α«úαá¼¼δ, ¿ß»«½∞ºπѼδÑ ó φΓ«⌐ ¿úαÑ.
  1356.  
  1357.  
  1358.  
  1359.  
  1360.  
  1361.  
  1362.  
  1363.  
  1364.  
  1365.  
  1366.  
  1367.  
  1368.  
  1369.  
  1370.  
  1371.  
  1372.  
  1373.  
  1374.  
  1375.  
  1376.  
  1377.  
  1378.  
  1379.  
  1380.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  1381. â½áóá V                                                       -- 24 --
  1382.  
  1383.  
  1384.           Åα«úαá¼¼á úÑ¡Ñαᵿ¿ ñó¿ªÑ¡¿∩ ß»αá⌐Γá ¬«¼»∞εΓÑαá.
  1385.           ------------------------------------------------
  1386.  
  1387.           àß½¿ ß»αá⌐Γ  ¬«¼»∞εΓÑαá  ¡áσ«ñ¿Γß∩ ó αѪ¿¼Ñ ñ«ú«¡∩εΘÑú«,  Γ«
  1388.      ñ½∩ úÑ¡Ñαᵿ¿ «τÑαÑñ¡«ú« Ñú« ¬óá¡Γá ñó¿ªÑ¡¿∩ ¿ß»«½∞ºπÑΓß∩ Σπ¡¬µ¿∩
  1389.      it_comp_move(). é «ß¡«ó¡«¼ ¬«¼»∞εΓÑα »«óΓ«α∩ÑΓ ßΓαáΓÑú¿ε ñó¿ªÑ¡¿∩
  1390.      »«½∞º«óáΓѽ∩. äó¿ªÑ¡¿Ñ Ñú« ß»αá⌐Γá «Γ¬½«¡∩ÑΓß∩ ¿º-ºá Γ«ú«, τΓ« «¡
  1391.      ñ«½ªÑ¡  «íσ«ñ¿Γ∞  «íΩѬΓδ-»αÑ»∩ΓßΓó¿∩.  Äñ¡á¬«  ß»αá⌐Γ ¬«¼»∞εΓÑαá
  1392.      ¼«ªÑΓ ¿ú¡«α¿α«óáΓ∞ ¡Ñ¬«Γ«αδÑ  «íΩѬΓδ,  τΓ«  »«ºó«½∩ÑΓ  óδα«ó¡∩Γ∞
  1393.      íá½á¡ß ¿úαδ.
  1394.  
  1395.           Åα¿óÑñѼ ΓѬßΓ Σπ¡¬µ¿¿ it_comp_move().
  1396.  
  1397.  
  1398.           /* âÑ¡Ñαᵿ∩ ñó¿ªÑ¡¿∩ ß»αá⌐Γá ¬«¼»∞εΓÑαá, ¬«úñá
  1399.              «¡ ó α«½¿ ñ«ú«¡∩εΘÑú« */
  1400.           void it_comp_move(ob1, ob2, human, sides)
  1401.           int ob1[][4], ob2[][4], human[][4], sides;
  1402.                {
  1403.                register int x, y, d; /* d = direction */
  1404.                static skip = 0;
  1405.                skip++;
  1406.                if(skip==3)
  1407.                  {
  1408.                  skip=0;
  1409.                  return;
  1410.                  /* π¼Ñ¡∞ΦÑ¡¿Ñ óαѼѡ¿ αÑᬵ¿¿ ¬«¼»∞εΓÑαá */
  1411.                  }
  1412.                x = 0;
  1413.                y = 0;
  1414.  
  1415.         /* ñó¿ªÑ¡¿Ñ ¬ ¿ú᫬π */
  1416.           if(human[0][0]<ob1[0][0])
  1417.                  x = -1;
  1418.                else
  1419.                  if(human[0][0]>ob1[0][0])
  1420.                    x = 1;
  1421.                if(human[0][1]<ob1[0][1])
  1422.                  y = -1;
  1423.                else
  1424.                  if(human[0][1]>ob1[0][1])
  1425.                    y = 1;
  1426.  
  1427.                if(is_legal(ob1, x, y, sides))
  1428.                  {
  1429.                  update_object(ob1, x, y, sides);
  1430.                  update_object(ob2, x, y, sides);
  1431.                  }
  1432.                else
  1433.                  {
  1434.                  if(x && is_legal(ob1, x, 0, sides))
  1435.                    {
  1436.                    update_object(ob1, x, 0, sides);
  1437.                    update_object(ob2, x, 0, sides);
  1438.  
  1439.  
  1440.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  1441. â½áóá V                                                       -- 25 --
  1442.  
  1443.  
  1444.                    }
  1445.                  else
  1446.                    if(is_legal(ob1, 0, y, sides))
  1447.                    {
  1448.                    update_object(ob1, 0, y, sides);
  1449.                    update_object(ob2, 0, y, sides);
  1450.                    }
  1451.                  }
  1452.                }
  1453.  
  1454.           çá¼ÑΓ¿¼, τΓ« φΓá Σπ¡¬µ¿∩ ¼Ñ¡∩ÑΓ »«½«ªÑ¡¿Ñ ß»αá⌐Γá ó  3  αáºá
  1455.      ¼Ññ½Ñ¡¡ÑÑ,  τѼ  φΓ« ó«º¼«ª¡«.  äѽáÑΓß∩ ΓᬫѠºá¼Ññ½Ñ¡¿Ñ ß µÑ½∞ε
  1456.      ß¡¿ªÑ¡¿∩ íδßΓα«ñÑ⌐ßΓó¿∩ ¬«¼»∞εΓÑαá ñ« πα«ó¡∩ τѽ«óѬá.
  1457.  
  1458.           öπ¡¬µ¿∩, úÑ¡Ñα¿απεΘá∩ ñó¿ªÑ¡¿Ñ ß»αá⌐Γá ó αѪ¿¼Ñ ñ«ú«¡∩Ѽ«ú«,
  1459.      «íÑß»Ñτ¿óáÑΓ  ñó¿ªÑ¡¿Ñ  ó  ßΓ«α«¡π,  »α«Γ¿ó«»«½«ª¡πε  «Γ  ß»αá⌐Γá
  1460.      ¿ú᫬á. ò«Γ∩ φëàá½ú«α¿Γ¼ ∩ó½∩ÑΓß∩ ¡Ñ«»Γ¿¼á½∞¡δ¼, «¡ ñѽáÑΓ ¿úαπ
  1461.      ñ«ßΓáΓ«τ¡«  »α¿ó½Ñ¬áΓѽ∞¡«⌐  ¿  ΓαÑíπÑΓ  «Γ  »«½∞º«óáΓѽ∩ σ«α«ΦÑ⌐
  1462.      αÑᬵ¿¿.
  1463.  
  1464.  
  1465.           /* âÑ¡Ñαᵿ∩ ñó¿ªÑ¡¿∩ ß»αá⌐Γá ¬«¼»∞εΓÑαá, ¬«úñá
  1466.              «¡ óδßΓπ»áÑΓ ó α«½¿ πíÑúáεΘÑú« */
  1467.           void it_comp_move(ob1, ob2, human, sides)
  1468.           int ob1[][4], ob2[][4], human[][4], sides;
  1469.                {
  1470.                register int x, y, d; /* d = direction */
  1471.                static skip = 0;
  1472.                skip++;
  1473.                if(skip==3)
  1474.                  {
  1475.                  skip=0;
  1476.                  return;
  1477.                  /* π¼Ñ¡∞ΦÑ¡¿Ñ óαѼѡ¿ αÑᬵ¿¿ ¬«¼»∞εΓÑαá */
  1478.                  }
  1479.                x = 0;
  1480.                y = 0;
  1481.  
  1482.         /* ñó¿ªÑ¡¿Ñ ¬ ¿ú᫬π */
  1483.           if(human[0][0]<ob1[0][0])
  1484.                  x = -1;
  1485.                else
  1486.                  if(human[0][0]>ob1[0][0])
  1487.                    x = 1;
  1488.                if(human[0][1]<ob1[0][1])
  1489.                  y = -1;
  1490.                else
  1491.                  if(human[0][1]>ob1[0][1])
  1492.                    y = 1;
  1493.  
  1494.                if(is_legal(ob1, x, y, sides))
  1495.                  {
  1496.                  update_object(ob1, x, y, sides);
  1497.                  update_object(ob2, x, y, sides);
  1498.  
  1499.  
  1500.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  1501. â½áóá V                                                       -- 26 --
  1502.  
  1503.  
  1504.                  }
  1505.                else
  1506.                  {
  1507.                  if(x && is_legal(ob1, x, 0, sides))
  1508.                    {
  1509.                    update_object(ob1, x, 0, sides);
  1510.                    update_object(ob2, x, 0, sides);
  1511.                    }
  1512.                  else
  1513.                    if(is_legal(ob1, 0, y, sides))
  1514.                    {
  1515.                    update_object(ob1, 0, y, sides);
  1516.                    update_object(ob2, 0, y, sides);
  1517.                    }
  1518.                  }
  1519.                }
  1520.  
  1521.           /* úÑ¡Ñαᵿ∩ ñó¿ªÑ¡¿∩ ß»αá⌐Γá ¬«¼»∞εΓÑαá, ¬«úñá
  1522.              «¡ πíÑúáÑΓ     */
  1523.           void not_it_comp_move(ob1, ob2, dx, dy, sides)
  1524.           int ob1[][4], ob2[][4];
  1525.           int dx, dy; /* ¡á»αáó½Ñ¡¿Ñ »«ß½Ññ¡Ñú« »ÑαѼÑΘÑ¡¿∩
  1526.                        "τѽ«óѬá" */
  1527.           int sides;
  1528.                {
  1529.                register int x, y, d;
  1530.                static skip = 1;
  1531.  
  1532.                skip++;
  1533.                if (skip==3)
  1534.                  {
  1535.                  skip = 0;
  1536.                  return;
  1537.                  /* π¼Ñ¡∞ΦÑ¡¿Ñ óαѼѡ¿ αÑᬵ¿¿ ¬«¼»∞εΓÑαá ó 3 αáºá */
  1538.                  }
  1539.                x = 0;
  1540.                y = 0;
  1541.                /* »ÑαѼÑΘÑ¡¿Ñ ó »α«Γ¿ó«»«½«ª¡«¼ ¡á»αáó½Ñ¡¿¿ */
  1542.                x = -dx;
  1543.                y = -dy;
  1544.  
  1545.                if (is_legal(ob1, x, y, sides))
  1546.                  {
  1547.                  updáte_object(ob1, x, y, sides);
  1548.                  updáte_object(ob2, x, y, sides);
  1549.                  }
  1550.                else
  1551.                  {
  1552.                  if (x && is_legal(ob1, x, 0, sides))
  1553.                    {
  1554.                    update_object(ob1, x, 0, sides);
  1555.                    update_object(ob2, x, 0, sides);
  1556.                    }
  1557.                  else if (is_legal(ob1, 0, y, sides)) {
  1558.  
  1559.  
  1560.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  1561. â½áóá V                                                       -- 27 --
  1562.  
  1563.  
  1564.                      update_object(ob1, 0, y, sides);
  1565.                      update_object(ob2, 0, y, sides);
  1566.                      }
  1567.                    }
  1568.                  }
  1569.  
  1570.  
  1571.           ¥Γá  Σπ¡¬µ¿∩ ΓᬠªÑ  ¬á¬ ¿ »αÑñδñπΘá∩,  αáí«ΓáÑΓ ß 3-¬αáΓ¡δ¼
  1572.      ºá¼Ññ½Ñ¡¿Ñ¼.
  1573.  
  1574.  
  1575.  
  1576.  
  1577.  
  1578.  
  1579.  
  1580.  
  1581.  
  1582.  
  1583.  
  1584.  
  1585.  
  1586.  
  1587.  
  1588.  
  1589.  
  1590.  
  1591.  
  1592.  
  1593.  
  1594.  
  1595.  
  1596.  
  1597.  
  1598.  
  1599.  
  1600.  
  1601.  
  1602.  
  1603.  
  1604.  
  1605.  
  1606.  
  1607.  
  1608.  
  1609.  
  1610.  
  1611.  
  1612.  
  1613.  
  1614.  
  1615.  
  1616.  
  1617.  
  1618.  
  1619.  
  1620.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  1621. â½áóá V                                                       -- 28 --
  1622.  
  1623.  
  1624.           Åα«úαἼᠬ«¡Γα«½∩ ¬áßá¡¿∩ ß»αá⌐Γ«ó.
  1625.           ------------------------------------
  1626.  
  1627.           é φΓ«⌐ ¿úαÑ αѪ¿¼δ ß»αá⌐Γ«ó ¿º¼Ñ¡∩εΓß∩ ¡á  »α«Γ¿ó«»«½«ª¡δÑ ó
  1628.      Γ«¼  ß½πτáÑ,  Ñß½¿ ¬««αñ¿¡áΓδ  σ«Γ∩  íδ  «ñ¡«⌐  Γ«τ¬¿ ñ«ú«¡∩εΘÑú«
  1629.      ß»αá⌐Γá ß«ó»áñπΓ ß ¬««αñ¿¡áΓἿ ½εí«⌐ Γ«τ¬«⌐ ñ«ú«¡∩Ѽ«ú«. Åαáó¿½á
  1630.      ¿úαδ ¼«úπΓ íδΓ∞  ¿º¼Ñ¡Ñ¡δ  Γᬿ¼  «íαẫ¼,  τΓ«  ¿º¼Ñ¡Ñ¡¿Ñ αѪ¿¼á
  1631.      »α«¿º«⌐ñÑΓ ½¿Φ∞  ó ß½πτáÑ  »«½¡«ú«  ß«ó¼ÑΘÑ¡¿∩  ß»αá⌐Γ«ó.  ì« φΓá
  1632.      ñ«ó«½∞¡«-Γᬿ ß½«ª¡á∩ ºáñáτá ñ½∩ ¼¡«ú¿σ ¿ú᫬«ó. Åα¿óÑñÑ¡¡á∩ ¡¿ªÑ
  1633.      Σπ¡¬µ¿∩ tag()  ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ 1, Ñß½¿ ß»αá⌐Γδ ßΓ«½¬¡π½¿ß∞, ¿
  1634.      0 - ó »α«Γ¿ó¡«¼ ß½πτáÑ.
  1635.  
  1636.           /* Åα«óÑα∩ÑΓ ÑßΓ∞ ½¿ ¬«¡Γá¬Γ ¼Ñªñπ ß»αá⌐ΓἿ */
  1637.           tag(ob1, ob2)
  1638.           int ob1[][4], ob2[][4];
  1639.                {
  1640.                register int i;
  1641.                /* ñ½∩ ß¼Ñ¡δ á¼»½πá ¡Ñ«íσ«ñ¿¼«, τΓ«íδ ß»αá⌐Γδ
  1642.                   ¿¼Ñ½¿ σ«Γ∩ íδ «ñ¡π «íΘπε Γ«τ¬π αáßΓαá */
  1643.                for (i= -1; i<2; i++)
  1644.                  if (ob1[0][0]==ob2[0][0]+i && ob1[0][1]==ob2[0][2]+i)
  1645.                    return 1;
  1646.                return 0;
  1647.                }
  1648.  
  1649.           éδ ¼«ªÑΓÑ ó¡ÑßΓ¿ ¿º¼Ñ¡Ñ¡¿∩ ó Σπ¡¬µ¿ε tag() ¿ πßΓá¡«ó¿Γ∞ ßó«¿
  1650.      »αáó¿½á ¬«¡Γα«½∩ αѪ¿¼«ó ß»αá⌐Γ«ó.
  1651.  
  1652.  
  1653.  
  1654.  
  1655.  
  1656.  
  1657.  
  1658.  
  1659.  
  1660.  
  1661.  
  1662.  
  1663.  
  1664.  
  1665.  
  1666.  
  1667.  
  1668.  
  1669.  
  1670.  
  1671.  
  1672.  
  1673.  
  1674.  
  1675.  
  1676.  
  1677.  
  1678.  
  1679.  
  1680.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  1681. â½áóá V                                                       -- 29 --
  1682.  
  1683.  
  1684.           Å«½¡δ⌐ ΓѬßΓ »α«úαá¼¼δ ¿úαδ TAG.
  1685.           --------------------------------
  1686.  
  1687.           é ñá¡¡«¼  αáºñѽѠ»α¿óÑñÑ¡ ΓѬßΓ »α«úαá¼¼δ ¿úαδ TAG, »«σ«ªÑ⌐
  1688.      ¡á απß߬¿Ñ "ßὫτ¬¿".  éδ ¼«ªÑΓÑ óóÑßΓ¿ ÑÑ ó ßó«⌐ ¬«¼»∞εΓÑα, Ñß½¿
  1689.      «¡ ß¡áíªÑ¡ úαáΣ¿τÑ߬¿¼ áñá»ΓÑα«¼.
  1690.  
  1691.  
  1692.        /* Åα¿¼Ñα ¼π½∞Γ¿»½¿¬áµ¿¿ ¿úαδ "ßὫτ¬¿"
  1693.  
  1694.           ÄíΩÑ¬Γ«¼ ó ¿úαÑ ∩ó½∩ÑΓß∩ "τѽ«óѬ", ¬«Γ«αδ⌐
  1695.           ñ«ú«¡∩ÑΓ ñαπú«ú« "τѽ«óѬá".
  1696.  
  1697.           éáΦ "τѽ«óѬ"- ºÑ½Ñ¡δ⌐,"τѽ«óѬ" ¬«¼»∞εΓÑαá-
  1698.           ªÑ½Γδ⌐. éßÑ, τΓ« «¬αáΦÑ¡« ó ¬αáß¡δ⌐ µóÑΓ,
  1699.           »ÑαÑßѬáΓ∞ ¡Ñ½∞º∩.
  1700.  
  1701.           ä½∩ ß¼Ñ¡δ α«½Ñ⌐ ñ«ú«¡∩εΘÑú« ¿ ñ«ú«¡∩Ѽ«ú«
  1702.           ¡Ñ«íσ«ñ¿¼«, τΓ«íδ "½εñ¿" »ÑαÑßѬ½¿ß∞
  1703.           σ«Γ∩ íδ ó «ñ¡«⌐ Γ«τ¬Ñ αáßΓαá  */
  1704.  
  1705.         #define COMPUTER 0
  1706.         #define HUMAN 1
  1707.  
  1708.         #define IDLE 0
  1709.         #define DOWN 1
  1710.         #define UP -1
  1711.         #define LEFT -1
  1712.         #define RIGHT 1
  1713.  
  1714.         #include "dos.h"
  1715.         #include "stdio.h"
  1716.         #include "math.h"
  1717.         #include "time.h"
  1718.  
  1719.         void mode(), line();
  1720.         void mempoint(), palette(), xhairs();
  1721.         void goto_xy(),show_score();
  1722.         void display_object(),update_object();
  1723.         void it_comp_move(),not_it_comp_move();
  1724.         void save_pic(), load_pic();
  1725.         unsigned char read_point();
  1726.  
  1727.         int human[4][4] = { /* óáΦ ß»αá⌐Γ */
  1728.            1,6,6,6,
  1729.            4,2,3,9,
  1730.            9,1,6,6,
  1731.            9,11,6,6
  1732.          };
  1733.  
  1734.          int human2[4][4] = {
  1735.  
  1736.            1,6,6,6,
  1737.            4,2,3,9,
  1738.  
  1739.  
  1740.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  1741. â½áóá V                                                       -- 30 --
  1742.  
  1743.  
  1744.            9,3,6,6,
  1745.            9,9,6,6
  1746.           };
  1747.  
  1748.           int computer[4][4] = { /* ß»αá⌐Γ ¬«¼»∞εΓÑαá */
  1749.             180,6,185,6,
  1750.             183,2,182,9,
  1751.             188,1,185,6,
  1752.             188,11,185,6
  1753.           };
  1754.  
  1755.           int computer2[4][4] = {
  1756.             180,6,185,6,
  1757.             183,2,182,9,
  1758.             188,3,185,6,
  1759.             188,9,185,6
  1760.           };
  1761.  
  1762.           int directx,directy; /* ¡á»αáó½Ñ¡¿Ñ  */
  1763.  
  1764.           main()
  1765.           {
  1766.              union k {
  1767.                 char c[2];
  1768.                 int i;
  1769.              } key;
  1770.  
  1771.            int deltax=0,deltay=0;
  1772.            int swaph=0,swapc=0;
  1773.            int it=COMPUTER;
  1774.            long htime,ctime,starttime,curtime;
  1775.            int count;
  1776.            mode(4); /* πßΓá¡«ó¬á 4 αѪ¿¼á úαáΣ¿¬¿ CGA/EGA */
  1777.            palette(0); /* »á½¿Γαá 0 */
  1778.  
  1779.            load_pic(); /* óó«ñ ¿úα«ó«ú« »«½∩ */
  1780.  
  1781.            time(&starttime); /* πßΓá¡«ó¬á óαѼѡ¿ */
  1782.            htime=ctime=0;
  1783.  
  1784.            display_object(human,4,1);
  1785.            display_object(computer,4,3);
  1786.            count=0;
  1787.  
  1788.            /* ú½áó¡δ⌐ µ¿¬½ ¿úαδ */
  1789.            do {
  1790.                /* óδτ¿ß½Ñ¡¿Ñ ΓѬπΘÑú« ßτÑΓá  */
  1791.               time(&curtime);
  1792.               if (it==COMPUTER) htime+=curtime-starttime;
  1793.               else ctime+=curtime-starttime;
  1794.               time(&starttime);
  1795.               show_score(it,htime,ctime);
  1796.  
  1797.               if (bioskey(1)) { /* Ñß½¿ ¡áªáΓá ¬½áó¿Φá */
  1798.  
  1799.  
  1800.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  1801. â½áóá V                                                       -- 31 --
  1802.  
  1803.  
  1804.                   directx=directy=IDLE; /* πßΓá¡áó½¿óáÑΓ
  1805.                                ¡á»αáó½Ñ¡¿Ñ »ÑαѼÑΘÑ¡¿∩ */
  1806.                   key.i = bioskey(0);
  1807.                   deltax=0;deltay=0;
  1808.                   if(!key.c[0]) switch(key.c[1]) {
  1809.                      case 75: /* ó½Ñó« */
  1810.                         deltay= -1;
  1811.                         directy=LEFT;
  1812.                         break;
  1813.                      case 77: /* ó»αáó« */
  1814.                         deltay=1;
  1815.                         directy=RIGHT;
  1816.                         break;
  1817.                      case 72: /* óóÑασ */
  1818.                         deltax= -1;
  1819.                         directx=UP;
  1820.                          deltax= -1;
  1821.                         directx=UP;
  1822.                         break;
  1823.                      case 80: /* ó¡¿º */
  1824.                         deltax=1;
  1825.                         directx=DOWN;
  1826.                         break;
  1827.                      case 71: /* óóÑασ ¿ ó½Ñó« */
  1828.                         deltay= -1;
  1829.                         directy=LEFT;
  1830.                         deltax= -1;
  1831.                         directx=UP;
  1832.                         break;
  1833.                      case 73: /* óóÑασ ¿ ó»αáó« */
  1834.                         deltay=1;
  1835.                         directy=RIGHT;
  1836.                         deltax=-1;
  1837.                         directx=UP;
  1838.                         break;
  1839.                      case 79: /* ó¡¿º ¿ ó½Ñó« */
  1840.                         deltay= -1;
  1841.                         directy=LEFT;
  1842.                         deltax=1;
  1843.                         directx=DOWN;
  1844.                         break;
  1845.                      case 81: /* ó¡¿º ¿ ó»αáó« */
  1846.                         deltay=1;
  1847.                         directy=RIGHT;
  1848.                         deltax=1;
  1849.                         directx=DOWN;
  1850.                         break;
  1851.                     }
  1852.                  }
  1853.                  /* ß¼Ñ¡á Γ¿»á ß»αá⌐Γá ¿úα«¬á  */
  1854.                  if (!swaph) displáy_object(human,4,1);
  1855.                  else displey_object(human2,4,1);
  1856.                  if (is_legal(human,deltax,deltay,4)) {
  1857.                     update_object(human,deltax,deltay,4);
  1858.  
  1859.  
  1860.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  1861. â½áóá V                                                       -- 32 --
  1862.  
  1863.  
  1864.                     update_object(human2,deltax,deltay,4);
  1865.                  }
  1866.                  /* »α«óÑα∩ÑΓ: »«»á½ß∩ ½¿ πíÑúáεΘ¿⌐ */
  1867.                  if (!count && tag(human,computer)) {
  1868.                     it=!it; /* ß¼Ñ¡á á¼»½πá */
  1869.                     count=6;
  1870.                  }
  1871.                  swaph= !swaph; /* ß¼Ñ¡á Σ¿úπα, ¿¼¿Γ¿απεΘ¿σ íÑú */
  1872.                  /* óδó«ñ "τѽ«óѬá" ó ¡«ó«⌐ »«º¿µ¿¿ */
  1873.                  if (!swaph) displáy_object(human,4,1);
  1874.                  else displáy_object(human2,4,1);
  1875.  
  1876.                  if (!swapc) displáy_object(computer,4,3);
  1877.                  else displáy_object(computer2,4,3);
  1878.  
  1879.                  /* úÑ¡Ñαᵿ∩ ñó¿ªÑ¡¿∩ ß»αá⌐Γá ¬«¼»εΓÑαá */
  1880.                  if (it==COMPUTER)
  1881.                  it_comp_move(computer,computer2,human,4);
  1882.                  else
  1883.                not_it_comp_move(computer,computer2,directx,directy,4);
  1884.                  if (!count && tag(human,computer)) {
  1885.                     it= !it;
  1886.                     count=6;
  1887.                /* ¬«¼»∞εΓÑα ñ«ú«¡∩ÑΓ; ¿º¼Ñ¡Ñ¡¿Ñ ¬««αñ¿¡áΓδ ò ¡á 2
  1888.                   Γá¬, τΓ«íδ íδßΓαÑ⌐ ßΓáΓ∞ ñ«ú«¡∩Ñ¼δ¼ */
  1889.                      if(is_legal(computer, 2, 0, 4))
  1890.                      {
  1891.                         update_object(computer, 2, 0, 4);
  1892.                        update_object(computer2, 2, 0, 4);
  1893.                     }
  1894.                    else
  1895.                    {
  1896.                      update_object(computer, -2, 0, 4);
  1897.                      update_object(computer2, -2, 0, 4);
  1898.                    }
  1899.                 }
  1900.                 swapc = !swapc; /* ºá¼Ñ¡¿Γ∞ Γ¿» ß»αá⌐Γá */
  1901.             /* óδó«ñ ¡á φ¬αá¡ ß»αá⌐Γá ¬«¼»∞εΓÑαá */
  1902.                 if(!swapc) display_object(computer, 4, 3);
  1903.                 else       display_object(computer2, 4, 3);
  1904.                 if(count) count--;
  1905.              }
  1906.              while (key.c[0] !='q' && htime<999 && ctime<999);
  1907.              getchar();
  1908.              mode(2);
  1909.              if(ctime>htime)
  1910.                 printf("諼»∞εΓÑα óδ¿úαá½!");
  1911.              else
  1912.                 printf("éδ »«íÑñ¿½¿!");
  1913.            }
  1914.  
  1915.           /* éδó«ñ ¡á φ¬αá¡ ΓÑନ¡á½á ßτÑΓá */
  1916.           void shou_score(it, htime, ctime)
  1917.           int it;
  1918.  
  1919.  
  1920.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  1921. â½áóá V                                                       -- 33 --
  1922.  
  1923.  
  1924.           long htime, ctime;
  1925.             {
  1926.             goto_xy(24, 6);
  1927.             if(it==COMPUTER)
  1928.               printf("é¢:%ld", htime);
  1929.             else
  1930.               printf("óδ:%ld", htime);
  1931.             goto_xy(24, 26);
  1932.             if(it==HUMAN)
  1933.               printf("ƒ:%ld", ctime);
  1934.             else
  1935.               printf("∩:%ld", ctime);
  1936.             }
  1937.  
  1938.           /* éδí«α »á½¿Γαδ */
  1939.           void palette(pnum)
  1940.           int pnum;
  1941.             {
  1942.             union REGS r;
  1943.  
  1944.             r.h.bh = 1; /* ¬«ñ 4-ú« úαáΣ¿τÑ߬«ú« αѪ¿¼á */
  1945.             r.h.bl = pnum;
  1946.             r.h.ah = 11;
  1947.             int86(0x10, &r, &r);
  1948.             }
  1949.  
  1950.           /* éδí«α αѪ¿¼á */
  1951.           void mode(mode_code)
  1952.           int mode_code;
  1953.             {
  1954.             union REGS r;
  1955.  
  1956.             r.h.al = mode_code;
  1957.             r.h.ah = 0;
  1958.             int86(0x10, &r, &r);
  1959.             }
  1960.  
  1961.       /* ¿º«íαáªÑ¡¿Ñ ½¿¡¿¿ ºáñá¡¡«ú« µóÑΓá ß ¿ß»«½∞º«ó᡿Ѽ
  1962.          á½ú«α¿Γ¼á üαѺѡσá¼á */
  1963.        void line(startx,starty,endx,endy,color)
  1964.        int startx,starty,endx,endy,color;
  1965.        {
  1966.          register int t,distance;
  1967.          int x=0,y=0,delta_x,delta_y;
  1968.          int incx,incy;
  1969.  
  1970.        /* óδτ¿ß½Ñ¡¿Ñ αáßßΓ«∩¡¿∩ ó «í«¿σ ¡á»αáó½Ñ¡¿∩σ         */
  1971.          delta_x=endx-startx;
  1972.          delta_y=endy-starty;
  1973.  
  1974.        /* «»αÑñѽѡ¿Ñ  ¡á»αáó½Ñ¡¿∩  Φáúá,  Φáú  óδτ¿ß½∩ÑΓß∩  ½¿í«   »«
  1975.           óÑαΓ¿¬á½∞¡«⌐,  ½¿í«  ú«α¿º«¡Γá½∞¡«⌐  ½¿¡¿¿ */
  1976.           if (delta_x>0) incx=1;
  1977.           else if (delta_x==0) incx=0; else incx=-1;
  1978.  
  1979.  
  1980.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  1981. â½áóá V                                                       -- 34 --
  1982.  
  1983.  
  1984.  
  1985.           if (delta_y>0) incy=1;
  1986.           else  if (delta_y==0) incy=0;
  1987.           else  incy=-1;
  1988.  
  1989.         /* «»αÑñѽѡ¿Ñ ¬á¬«Ñ αáßßΓ«∩¡¿Ñ í«½∞ΦÑ */
  1990.           delta_x=abs(delta_x);
  1991.           delta_y=abs(delta_y);
  1992.           if (delta_x>delta_y) distance=delta_x;
  1993.           else distance=delta_y;
  1994.  
  1995.         /* ¿º«íαáªÑ¡¿Ñ ½¿¡¿¿ */
  1996.           for (t=0; t<=distance+1; t++) {
  1997.              mempoint(startx,starty,color);
  1998.              x+=delta_x;
  1999.              y+=delta_y;
  2000.              if (x>distance) {
  2001.                 x-=distance;
  2002.                 startx+=incx;
  2003.              }
  2004.              if (y>distance) {
  2005.                 y-=distance;
  2006.                 starty+=incy;
  2007.              }
  2008.           }
  2009.        }
  2010.  
  2011.  
  2012.         /* ºá»¿ß∞ Γ«τ¬¿ ó CGA/EGA */
  2013.  
  2014.          void mempoint(x,y,color_code)
  2015.          int x,y,color_code;
  2016.          {
  2017.             union mask {
  2018.                char c[2];
  2019.                int i;
  2020.             } bit_mask;
  2021.             int i,index,bit_position;
  2022.             unsigned char t;
  2023.             char xor; /* "¿ß¬½ετáεΘÑÑ êïê" µóÑΓá ó ß½πτáÑ Ñú«
  2024.                           ¿º¼Ñ¡Ñ¡¿∩ */
  2025.             char far *ptr=(char far *) 0xB8000000; /* Γ«τ¬á ó
  2026.                                                   »á¼∩Γ¿ CGA */
  2027.             bit_mask.i=0xFF3F; /* 11111111 00111111 ó
  2028.                                   ñó«¿τ¡«¼ ó¿ñÑ */
  2029.             if (x<0 || x>199 || y<0 || y>319) return;
  2030.             xor=color_code & 128; /* »α«óÑα¬á, πßΓá¡áó½¿óá½ß∩ ½¿
  2031.                                      αѪ¿¼ "¿ß¬½ετáεΘÑú« êïê" */
  2032.             color_code=color_code & 127; /* ¼á߬á ßΓáαΦ¿σ í¿Γ«ó */
  2033.  
  2034.             /*  πßΓá¡«ó¬á í¿Γ«ó«⌐ ¼á߬¿ ¿ í¿Γ«ó αѪ¿¼á µóÑΓá
  2035.                 ó »αáóπε »«º¿µ¿ε */
  2036.  
  2037.              bit_position=y%4; /* óδτ¿ß½Ñ¡¿Ñ ¡πª¡«⌐ »«º¿µ¿¿
  2038.  
  2039.  
  2040.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  2041. â½áóá V                                                       -- 35 --
  2042.  
  2043.  
  2044.                                   ó íá⌐ΓÑ */
  2045.              color_code<<=2*(3-bit_position); /* ßñó¿ú ¬«ñá µóÑΓá
  2046.                                         ó ¡πª¡πε »«º¿µ¿ε */
  2047.              bit_mask.i>>=2*bit_position; /* ßñó¿ú í¿Γ«ó«⌐ ¼á߬¿ ó
  2048.                                           ¡πª¡πε »«º¿µ¿ε */
  2049.  
  2050.              /* «»αÑñѽѡ¿Ñ ΓαÑíπѼ«ú« íá⌐Γá ó »á¼∩Γ¿ ΓÑନ¡á½á */
  2051.  
  2052.               index=x*40+(y%4);
  2053.               if (x%2) index+=8152; /* Ñß½¿ ¡ÑτÑΓ¡δ⌐, ¿ß»«½∞ºπÑΓß∩
  2054.                                        óΓ«α«⌐ í½«¬ */
  2055.  
  2056.               /* ºá»¿ß∞ µóÑΓá */
  2057.  
  2058.                if (!xor) {  /* αѪ¿¼ ¿º¼Ñ¡Ñ¡¿∩ µóÑΓá */
  2059.                   t=*(ptr+index) & bit_mask.c[0];
  2060.                   *(ptr+index)=t|color_code;
  2061.                }
  2062.                else {
  2063.                   t=*(ptr+index) | (char)0;
  2064.                   *(ptr+index)=t & color_code;
  2065.                }
  2066.             }
  2067.  
  2068.         /* τΓÑ¡¿Ñ íá⌐Γá ¿º «»ÑαáΓ¿ó¡«⌐ »á¼∩Γ¿ CGA/EGA */
  2069.          unsigned char read_point(x,y)
  2070.          int x,y;
  2071.          {
  2072.             union mask {
  2073.                char c[2];
  2074.                int i;
  2075.             } bit_mask;
  2076.             int i,index,bit_position;
  2077.             unsigned char t;
  2078.             char xor; /* "¿ß¬½ετáεΘÑÑ êïê" µóÑΓá ó ß½πτáÑ Ñú«
  2079.                           ¿º¼Ñ¡Ñ¡¿∩ */
  2080.             char far *ptr=(char far *) 0xB8000000; /* Γ«τ¬á ó
  2081.                                                   »á¼∩Γ¿ CGA */
  2082.             bit_mask.i=3; /* 11111111 00111111 ó
  2083.                                   ñó«¿τ¡«¼ ó¿ñÑ */
  2084.             if (x<0 || x>199 || y<0 || y>319) return 0;
  2085.  
  2086.             /*  πßΓá¡«ó¬á í¿Γ«ó«⌐ ¼á߬¿ ¿ í¿Γ«ó αѪ¿¼á µóÑΓá
  2087.                 ó »αáóπε »«º¿µ¿ε */
  2088.              bit_position=y%4; /* óδτ¿ß½Ñ¡¿Ñ ¡πª¡«⌐ »«º¿µ¿¿
  2089.                                   ó íá⌐ΓÑ */
  2090.              bit_mask.i<<=2*(3-bit_position);
  2091.  
  2092.              /* «»αÑñѽѡ¿Ñ ΓαÑíπѼ«ú« íá⌐Γá ó »á¼∩Γ¿ ΓÑନ¡á½á */
  2093.               index=x*40+(y>>4);
  2094.               if (x%2) index+=8152; /* Ñß½¿ ¡ÑτÑΓ¡δ⌐, ¿ß»«½∞ºπÑΓß∩
  2095.                                        óΓ«α«⌐ í½«¬ */
  2096.  
  2097.               /* ºá»¿ß∞ µóÑΓá */
  2098.  
  2099.  
  2100.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  2101. â½áóá V                                                       -- 36 --
  2102.  
  2103.  
  2104.                t=*(ptr+index) & bit_mask.c[0];
  2105.                t>>=2*(3-bit_position);
  2106.                return t;
  2107.             }
  2108.  
  2109.        /* ºáúαπº¬á ¿º«íαáªÑ¡¿∩ */
  2110.  
  2111.            void load_pic()
  2112.            {
  2113.               char fname[80];
  2114.               FILE *fp;
  2115.               register int i,j;
  2116.  
  2117.               char far *ptr=(char far *) 0xB8000000; /* Γ«τ¬á ó
  2118.                                                      »á¼∩Γ¿   CGA  */
  2119.               char far *temp;
  2120.               unsigned char buf[14][80]; /* ß«ñÑαª¿Γ «íαẠφ¬αá¡á */
  2121.  
  2122.               temp=ptr;
  2123.          /* ß«σαá¡Ñ¡¿Ñ óÑασ¡¿σ ßΓ᫬ ΓѬπΘÑú« ß«ñÑন¼«ú« φ¬αá¡á */
  2124.               for (i=0;i<14;++i)
  2125.                  for (j=0;j<80;j+=2) {
  2126.                     buf[i][j]=*temp;
  2127.                     buf[i][j+1]=*(temp+8152);
  2128.                     *temp=0; *(temp+8152)=0;/*τ¿ßΓ¬á »«º¿µ¿⌐ φ¬αá¡á*/
  2129.                     temp++;
  2130.                  }
  2131.               goto_xy(0,0);
  2132.               printf("ê¼∩ Σá⌐½á:");
  2133.               gets(fname);
  2134.               if (!(fp=fopen(fname,"rb"))) {
  2135.                  goto_xy(0,0);
  2136.                  printf("öá⌐½ ¡Ñ ¼«ªÑΓ íδΓ∞ «Γ¬αδΓ\n");
  2137.                  temp=ptr;
  2138.          /* ó«ßßΓá¡«ó½Ñ¡¿Ñ ß«ñÑন¼«ú« φ¬αá¡á */
  2139.                  for (i=0;i<14;++i)
  2140.                     for (j=0;j<80;j+=2) {
  2141.                        *temp= buf[i][j];
  2142.                        *(temp+8125)=buf[i][j+1];
  2143.                        temp++;
  2144.                     }
  2145.                  return;
  2146.                }
  2147.         /* ºáúαπº¬á ¿º«íαáªÑ¡¿∩ ¿º Σá⌐½á */
  2148.               for (i=0;i<8152;i++) {
  2149.                 *ptr=getc(fp); /* τÑΓ¡δ⌐ íá⌐Γ */
  2150.                 *(ptr+8125)=getc(fp); /* ¡ÑτÑΓ¡δ⌐ íá⌐Γ */
  2151.                 ptr++;
  2152.               }
  2153.  
  2154.               fclose(fp);
  2155.            }
  2156.  
  2157.        /* »«¼ÑßΓ¿Γ∞ ¬παß«α ó ºáñá¡¡«Ñ »«½«ªÑ¡¿Ñ */
  2158.  
  2159.  
  2160.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  2161. â½áóá V                                                       -- 37 --
  2162.  
  2163.  
  2164.            void goto_xy(x,y)
  2165.            int x,y;
  2166.            {
  2167.               r.h.ah=2; /* áñαÑßᵿ∩ ¬παß«αá */
  2168.               r.h.dl=y; /* ¬««αñ¿¡áΓá ßΓ«½íµá */
  2169.               r.h.dh=x; /* ¬««αñ¿¡áΓá ßΓ᫬¿ */
  2170.               r.h.bh=0; /* ó¿ñÑ«-ßΓαá¡¿µá */
  2171.               int86(0x10,&r,&r);
  2172.             }
  2173.  
  2174.           /* «Γ«íαáªÑ¡¿Ñ «íΩѬΓá ¡á φ¬αá¡Ñ */
  2175.  
  2176.           void display_object(ob, sides,cc)
  2177.           double ob[][4];
  2178.           int sides,cc;
  2179.           {
  2180.             register int i;
  2181.  
  2182.             for(i=0; i<sides; i++)
  2183.               line((int)ob[i][0], (int)ob[i][1],
  2184.                    (int)ob[i][2], (int)ob[i][3], cc|128);
  2185.          }
  2186.  
  2187.           /* æ¼ÑΘÑ¡¿Ñ (»áαώѽ∞¡δ⌐ »ÑαÑ¡«ß) «íΩѬΓá ó ¡á»αáó½Ñ¡¿¿,
  2188.           «»αÑñѽѡ¡«¼ x ¿ y
  2189.           */
  2190.           void update_object(ob, x, y, sides)
  2191.           int ob[][4];        /* «íΩÑ¬Γ */
  2192.           int x, y;           /* ¡á»αáó½Ñ¡¿Ñ ß¼ÑΘÑ¡¿∩ */
  2193.           register int sides; /* ¬«½¿τÑßΓó« ßΓ«α«¡ «íΩѬΓá */
  2194.             {
  2195.             sides--;
  2196.             for(; sides>=0; sides--)
  2197.               {
  2198.               ob[sides][0] += x;
  2199.               ob[sides][1] += y;
  2200.               ob[sides][2] += x;
  2201.               ob[sides][3] += y;
  2202.               }
  2203.             }
  2204.  
  2205.           /* Ä»αÑñѽѡ¿Ñ  ñ«»πßΓ¿¼«ßΓ¿ »ÑαѼÑΘÑ¡¿∩ «íΩѬΓá. é«ºóαáΘáÑΓ
  2206.           1, Ñß½¿ »ÑαѼÑΘÑ¡¿Ñ ñ«»πßΓ¿¼«, 0 - ó »α«Γ¿ó¡«¼ ß½πτáÑ */
  2207.           is_legal(ob, x, y, sides)
  2208.           int ob[][4];        /* «íΩÑ¬Γ */
  2209.           int x, y;           /* Φáú »ÑαѼÑΘÑ¡¿∩ */
  2210.           int sides;          /* τ¿ß½« ßΓ«α«¡ «íΩѬΓá */
  2211.             {
  2212.             if(x==0 && y==0)
  2213.               return 1;       /* »πßΓ«Ñ »ÑαѼÑΘÑ¡¿Ñ óßÑúñá ñ«»πßΓ¿¼«*/
  2214.             sides--;
  2215.             for(; sides>=0; sides--)
  2216.               {
  2217.               /* ¬«¡Γα«½∞ óδσ«ñá ºá ñ«»πßΓ¿¼πε «í½áßΓ∞ */
  2218.  
  2219.  
  2220.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  2221. â½áóá V                                                       -- 38 --
  2222.  
  2223.  
  2224.               if(ob[sides][0]+x>199 || ob[sides][1]+y>319)
  2225.                 return 0;
  2226.               if(ob[sides][2]+x<0 || ob[sides][3]+y<0)
  2227.                 return 0;
  2228.               if(read_point(ob[sides][0]+x, ob[sides][1]+y)==2)
  2229.                 return 0;
  2230.               if(read_point(ob[sides][2]+x, ob[sides][3]+y)==2)
  2231.                 return 0;
  2232.               }
  2233.             return 1;
  2234.             }
  2235.  
  2236.           /* úÑ¡Ñαᵿ∩ ñó¿ªÑ¡¿∩ ß»αá⌐Γá ¬«¼»∞εΓÑαá,  ¬«úñá «¡ ñ«ú«¡∩ÑΓ
  2237.           */
  2238.             void it_comp_move(ob1,  ob2,  human, sides)
  2239.             int ob1[][4],ob2[][4], human[][4], sides;
  2240.                {
  2241.                register int x, y, d; /* d = direction */
  2242.                static skip = 0;
  2243.                skip++;
  2244.                if(skip==3)
  2245.                  {
  2246.                  skip=0;
  2247.                  return;
  2248.                  /* π¼Ñ¡∞ΦÑ¡¿Ñ óαѼѡ¿ αÑᬵ¿¿ ¬«¼»εΓÑαá */
  2249.                  }
  2250.                x = 0;
  2251.                y = 0;
  2252.  
  2253.         /* ñó¿ªÑ¡¿Ñ ¬ ¿ú᫬π */
  2254.           if(human[0][0]<ob1[0][0])
  2255.                  x = -1;
  2256.                else
  2257.                  if(human[0][0]>ob1[0][0])
  2258.                    x = 1;
  2259.                if(human[0][1]<ob1[0][1])
  2260.                  y = -1;
  2261.                else
  2262.                  if(human[0][1]>ob1[0][1])
  2263.                    y = 1;
  2264.  
  2265.                if(is_legal(ob1, x, y, sides))
  2266.                  {
  2267.                  update_object(ob1, x, y, sides);
  2268.                  update_object(ob2, x, y, sides);
  2269.                  }
  2270.                else
  2271.                  {
  2272.                  if(x && is_legal(ob1, x, 0, sides))
  2273.                    {
  2274.                    update_object(ob1, x, 0, sides);
  2275.                    update_object(ob2, x, 0, sides);
  2276.                    }
  2277.                  else
  2278.  
  2279.  
  2280.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  2281. â½áóá V                                                       -- 39 --
  2282.  
  2283.  
  2284.                    if(is_legal(ob1, 0, y, sides))
  2285.                    {
  2286.                    update_object(ob1, 0, y, sides);
  2287.                    update_object(ob2, 0, y, sides);
  2288.                    }
  2289.                  }
  2290.                }
  2291.  
  2292.           /* úÑ¡Ñαᵿ∩ ñó¿ªÑ¡¿∩ ß»αá⌐Γá ¬«¼»∞εΓÑαá, ¬«úñá
  2293.              «¡ πíÑúáÑΓ     */
  2294.           void not_it_comp_move(ob1, ob2, dx, dy, sides)
  2295.           int ob1[][4], ob2[][4];
  2296.           int dx, dy; /* ¡á»αáó½Ñ¡¿Ñ »«ß½Ññ¡Ñú« »ÑαѼÑΘÑ¡¿∩
  2297.                        "τѽ«óѬá" */
  2298.           int sides;
  2299.                {
  2300.                register int x, y, d;
  2301.                static skip = 1;
  2302.  
  2303.                skip++;
  2304.                if (skip==3)
  2305.                  {
  2306.                  skip = 0;
  2307.                  return;
  2308.                  /* π¼Ñ¡∞ΦÑ¡¿Ñ óαѼѡ¿ αÑᬵ¿¿ ¬«¼»∞εΓÑαá ó 3 αáºá */
  2309.                  }
  2310.                x = 0;
  2311.                y = 0;
  2312.                /* »ÑαѼÑΘÑ¡¿Ñ ó »α«Γ¿ó«»«½«ª¡«¼ ¡á»αáó½Ñ¡¿¿ */
  2313.                x = -dx;
  2314.                y = -dy;
  2315.  
  2316.                if (is_legal(ob1, x, y, sides))
  2317.                  {
  2318.                  updáte_object(ob1, x, y, sides);
  2319.                  updáte_object(ob2, x, y, sides);
  2320.                  }
  2321.                else
  2322.                  {
  2323.                  if (x && is_legal(ob1, x, 0, sides))
  2324.                    {
  2325.                    updáte_object(ob1, x, 0, sides);
  2326.                    updáte_object(ob2, x, 0, sides);
  2327.                    }
  2328.                  else if (is_legal(ob1, 0, y, sides)) {
  2329.                      updáte_object(ob1, 0, y, sides);
  2330.                      updáte_object(ob2, 0, y, sides);
  2331.                      }
  2332.                    }
  2333.                  }
  2334.  
  2335.           /*  »α«óÑα∩ÑΓ ¡á½¿τ¿Ñ ¬«¡Γá¬ΓᠼѪñπ ß»αá⌐ΓἿ */
  2336.           tag(ob1, ob2)
  2337.           int ob1[][4], ob2[][4];
  2338.  
  2339.  
  2340.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  2341. â½áóá V                                                       -- 40 --
  2342.  
  2343.  
  2344.                {
  2345.                register int i;
  2346.                /* ñ½∩ ß¼Ñ¡δ á¼»½πá ¡Ñ«íσ«ñ¿¼«, τΓ«íδ ß»αá⌐Γδ
  2347.                   ¿¼Ñ½¿ σ«Γ∩ íδ «ñ¡π «íΘπε Γ«τ¬π αáßΓαá */
  2348.                for (i=-1; i<2; i++)
  2349.                  if (ob1[0][0]==ob2[0][0]+i && ob1[0][1]==ob2[0][2]+i)
  2350.                    return 1;
  2351.                return 0;
  2352.                }
  2353.  
  2354.  
  2355.           ä½∩ ¿ß»«½∞º«óá¡¿∩  ¿úαδ óδ ñ«½ª¡δ ß«ºñáΓ∞ «ñ¡« ¿½¿ ¡Ñ߬«½∞¬«
  2356.      ¿úα«óδσ  »«½Ñ⌐,  ¿ß»«½∞ºπ∩  Σπ¡¬µ¿¿,   «»¿ßá¡¡δÑ   ó   ú½áóÑ   4.
  2357.      êß»«½∞ºπ⌐ΓÑ  ¬αáß¡δ⌐  µóÑΓ ñ½∩ ¿º«íαáªÑ¡¿∩ »αÑ»∩ΓßΓó¿⌐.  åѽΓδ⌐ ¿
  2358.      ºÑ½Ñ¡δ⌐ µóÑΓá ¼«ª¡« ¿ß»«½∞º«óáΓ∞ ñ½∩ Σ«¡á.  ¥Γ¿  µóÑΓá  ¡Ñ  ¡ÑßπΓ
  2359.      ¡áúαπº¬¿,  »«φΓ«¼π ¼«úπΓ ¿ß»«½∞º«óáΓ∞ß∩ ó ñѬ«αáΓ¿ó¡δσ µÑ½∩σ.  ìá
  2360.      α¿ßπ¡¬áσ 5-1 ¿ 5-2 »«¬áºá¡δ ñóá óáα¿á¡Γá ¿úα«óδσ  »«½Ñ⌐  ó  Γᬫ¼
  2361.      ó¿ñÑ, ó ¬«Γ«α«¼ «¡¿ «Γ«íαáªáεΓß∩ ¡á φ¬αá¡Ñ óáΦÑú« ΓÑନ¡á½á.
  2362.  
  2363.           üδßΓα«ñÑ⌐ßΓó¿Ñ ¬«¼»∞εΓÑα«ó,  Γá¬¿σ  ¼«ñѽÑ⌐  ¬á¬ AT ¿½¿ PS/2
  2364.      ¼«ñѽÑ⌐ 50,  60 ¿½¿ 80,  ó»«½¡Ñ ñ«ßΓáΓ«τ¡« ñ½∩ ñá¡¡«⌐ ¿úαδ.  ÆÑ¼»
  2365.      ¿úαδ íπñÑΓ ¡Ñ߬«½∞¬« ß¡¿ªÑ¡ ¡á «íδτ¡«¼ ¬«¼»∞εΓÑαÑ PC.  Äñ¡á¬« óá¼
  2366.      πªÑ ¿ºóÑßΓ¡«, ¬á¬ ¼«ªÑΓ íδΓ∞ »«óδΦÑ¡á ñ¿¡á¼¿τ¡«ßΓ∞ ¿úαδ.
  2367.  
  2368.      _________________________________________________________________
  2369.  
  2370.       É¿ß. 5-1 ¡á ßΓα. 205 ¿¼ÑεΘ¿¼¿ß∩ ßαÑñßΓóἿ ó«ß»α«¿ºóÑñÑ¡ íδΓ∞ ¡Ñ
  2371.       ¼«ªÑΓ. (ÉÑñ. »Ñα. ê.üδτ¬«ó߬¿⌐.)
  2372.      _________________________________________________________________
  2373.  
  2374.      É¿ß. 5-1. ÅÑαó«Ñ ¿úα«ó«Ñ »«½Ñ ó¿ñÑ«¿úαδ "ßὫτ¬¿"
  2375.  
  2376.  
  2377.      _________________________________________________________________
  2378.  
  2379.       É¿ß. 5-2 ¡á ßΓα. 205 ¿¼ÑεΘ¿¼¿ß∩ ßαÑñßΓóἿ ó«ß»α«¿ºóÑñÑ¡ íδΓ∞ ¡Ñ
  2380.      ¼«ªÑΓ. (ÉÑñ. »Ñα. ê.üδτ¬«ó߬¿⌐.)
  2381.      _________________________________________________________________
  2382.  
  2383.      É¿ß. 5-2. éΓ«α«Ñ ¿úα«ó«Ñ »«½Ñ ó¿ñÑ«¿úαδ "ßὫτ¬¿"
  2384.  
  2385.  
  2386.  
  2387.  
  2388.  
  2389.  
  2390.  
  2391.  
  2392.  
  2393.  
  2394.  
  2395.  
  2396.  
  2397.  
  2398.  
  2399.  
  2400.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  2401. â½áóá V                                                       -- 41 --
  2402.  
  2403.  
  2404.                ìàèÄÆÄÉ¢à æÄÄüÉÇåàìꃠÅÄ éÄçîÄåìÄë îÄäêöêèÇûêê
  2405.                                  ÅÉÄâÉÇîî¢
  2406.      -----------------------------------------------------------------
  2407.  
  2408.           é«º¼«ª¡«, óδ ß« óαѼѡѼ ºáσ«Γ¿ΓÑ  ß«ºñáΓ∞  ßó«ε  ó¿ñÑ«¿úαπ,
  2409.      óº∩ó,  «ñ¡á¬«,  ºá  «ß¡«óπ  αáßß¼«ΓαÑ¡¡πε ºñÑß∞ ¿úαπ TAG.  é φΓ«¼
  2410.      ß½πτáѠ󠼫ªÑΓÑ,  ¡á»α¿¼Ñα,  ¿º¼Ñ¡¿Γ∞ ΓαáÑ¬Γ«α¿ε ñó¿ªÑ¡¿∩ ß»αá⌐Γá
  2411.      ¬«¼»∞εΓÑαá   ºáßΓáó¿ó  Ñú«  ñó¿úáΓ∞ß∩  ó«¬απú  ¬á¬«ú«-Γ«  «íΩѬΓá
  2412.      ("«σαá¡∩Γ∞"  Ñú«).  ê¡ΓÑαÑß¡δ¼  ñ«»«½¡Ñ¡¿Ñ¼  ¬  »α«úαἼѠ  íπñÑΓ
  2413.      ó«º¼«ª¡«ßΓ∞ ¿º¼Ñ¡∩Γ∞ ó¡ÑΦ¡¿⌐ ó¿ñ ¬áªñ«ú« «íΩѬΓá-πτáßΓ¡¿¬á ¿úαδ ó
  2414.      ºáó¿ß¿¼«ßΓ¿ «Γ ¬á¬¿σ-½¿í« πß½«ó¿⌐. èßΓáΓ¿, αÑΦÑ¡¿Ñ φΓ«⌐ ºáñáτ¿ ¡Ñ
  2415.      ΓαÑíπÑΓ  «Γ óáß ¬á¬¿σ-½¿í« ñ«»«½¡¿Γѽ∞¡δσ πß¿½¿⌐,  Γᬠ¬á¬ ¬áªñ«Ñ
  2416.      ¿º«íαáªÑ¡¿Ñ  ß»αá⌐Γá  ¼«ª¡«  σαá¡¿Γ∞   ó   ó¿ñÑ«»á¼∩Γ¿,   á   óßÑ
  2417.      ¡Ñ«íσ«ñ¿¼δÑ »«ñ»α«úαá¼¼δ ñ½∩ αáí«Γδ ß ¡Ñ⌐ π óáß πªÑ ÑßΓ∞.
  2418.  
  2419.           äαπú¿¼,  ΓᬪѠ »αÑñßΓáó½∩εΘ¿¼  ¿¡ΓÑαÑß  ñ«»«½¡Ñ¡¿Ñ¼,  ¼«ªÑΓ
  2420.      ßΓáΓ∞   ¡áñѽѡ¿Ñ    ¬«¼»∞εΓÑαá   ó«º¼«ª¡«ßΓ∞ε   "»α«ú¡«º¿α«óáΓ∞"
  2421.      ¡á»αáó½Ñ¡¿Ñ  ñó¿ªÑ¡¿∩  ß»αá⌐Γá τѽ«óѬá.  é  ßἫ¼ ñѽÑ,  óδ óÑñ∞
  2422.      º¡áÑΓÑ,  ¬πñá  ¼«ª¡« ñó¿úáΓ∞ß∩,  á ¬πñᠡѽ∞º∩,  ó ºáó¿ß¿¼«ßΓ¿ «Γ
  2423.      ß¿Γπᵿ¿ ¡á φ¬αá¡Ñ ñ¿ß»½Ñ∩.  Æá¬ ¡áπτ¿ΓÑ φΓ« ñѽáΓ∞  ¿ ¬«¼»∞εΓÑα!
  2424.      Å«ß¬«½∞¬π  ¿úα«ó«Ñ »«½Ñ  ßΓáΓ¿τ¡«,  Γ« αÑΦÑ¡¿Ñ ¿  φΓ«⌐  ºáñáτ¿ ¡Ñ
  2425.      íπñÑΓ »αÑñßΓáó½∩Γ∞ ß½«ª¡«ßΓ¿.
  2426.           Å«»α«íπ⌐ΓÑ ñ«íáó¿Γ∞  ó »α«úαá¼¼π  ÑΘÑ  «ñ¿¡  ß»αá⌐Γ, ¬áßá¡¿Ñ
  2427.      ¬«Γ«α«ú« íπñÑΓ »α¿¡«ß¿Γ∞ ñ«»«½¡¿Γѽ∞¡δÑ «τ¬¿ ¿úαáεΘ¿¼.
  2428.  
  2429.           ê, ¡á¬«¡Ñµ,  »«ß½Ññ¡∩∩  ¼δß½∞:  »α«µÑßß   αáºαáí«Γ¬¿   ½εí«⌐
  2430.      ó¿ñÑ«¿úαδ  ¡áτ¿¡á⌐ΓÑ ß ß«ºñá¡¿∩ ÑÑ »α«ßΓÑ⌐ΦÑú« "߬ѽÑΓá".  ê ½¿Φ∞
  2431.      »«ß½Ñ Γ«ú«,  ¬á¬ óáΦ "߬ѽÑΓ"  "ºáñδΦá½",  ¡áτ¿¡á⌐ΓÑ  ¡áαáΘ¿óá¡¿Ñ
  2432.      ó«º¼«ª¡«ßΓÑ⌐ ßó«Ñ⌐ ¿úαδ. éßÑúñá ßΓαѼ¿ΓÑß∞ ¿ñΓ¿ »πΓѼ «Γ »α«ßΓ«ú«
  2433.      ¬ ß½«ª¡«¼π.
  2434.  
  2435.  
  2436.  
  2437.  
  2438.  
  2439.  
  2440.  
  2441.  
  2442.  
  2443.  
  2444.  
  2445.  
  2446.  
  2447.  
  2448.  
  2449.  
  2450.  
  2451.  
  2452.  
  2453.  
  2454.  
  2455.  
  2456.  
  2457.  
  2458.  
  2459.  
  2460.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  2461.