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

  1.                                   âïÇéÇ 9                     -- 1 --
  2.                                   -------
  3.  
  4.                             êìÆàÉöàëæ æ "î¢ÿ£₧"
  5.      -----------------------------------------------------------------
  6.  
  7.           ìá¿í«½ÑÑ   »«»π½∩α¡δ¼   πßΓα«⌐ßΓó«¼   óó«ñá   ñá¡¡δσ   »«ß½Ñ
  8.      ¬½áó¿áΓπαδ ∩ó½∩ÑΓß∩ "¼δΦ∞"  (mouse). ìÑß¼«Γα∩ ¡á Γ«, τΓ« "¼δΦ∞" ¿
  9.      ßσ«ñ¡δÑ  ΓÑσ¡«½«ú¿¿,  ΓᬿѠ ¬á¬ "roller ball",  »«½πτ¿½¿ Φ¿α«¬«Ñ
  10.      αáß»α«ßΓαá¡Ñ¡¿Ñ   ½¿Φ∞  ó  »«ß½Ññ¡ÑÑ  óαѼ∩,  »«»π½∩α¡«ßΓ∞ "¼δΦ¿"
  11.      íÑαÑΓ ßó«Ñ ¡áτὫ ß ¼«¼Ñ¡Γá óδσ«ñá ¡á  αδ¡«¬ «τÑαÑñ¡«⌐ αáºαáí«Γ¬¿
  12.      Σ¿α¼δ  Apple  ¬«¼»∞εΓÑαá  Apple  Lisa,  ó  ¬«Γ«α«¼  ó»ÑαóδÑ  íδ½á
  13.      »α¿¼Ñ¡Ñ¡á ΓÑσ¡«½«ú¿∩ "¼δΦ∞" ñ½∩ αáí«Γδ ß  »¿¬Γ«úαá¼¼¡δ¼ (¿¬«¡¡δ¼)
  14.      ¿¡ΓÑαΣÑ⌐ß«¼ «»Ñαᵿ«¡¡«⌐  ß¿ßΓѼδ φΓ«ú« ¬«¼»∞εΓÑαá.  î«ñѽ∞ Apple
  15.      Lisa  »α«¿ºóѽá Σ«α¼Ñ¡¡δ⌐ »ÑαÑó«α«Γ  ó  Σ¿α¼Ñ  Macintosh, ¬«Γ«αá∩
  16.      »«Φ½á »« »πΓ¿ ¿ß»«½∞º«óá¡¿∩ "¼δΦ¿"  ¿ »¿¬Γ«úαá¼¼¡«ú« ¿¡ΓÑαΣÑ⌐ßá ó
  17.      ßó«¿σ  »α«úαá¼¼¡δσ »α«ñπ¬Γáσ.  ÅÑαÑñ óδσ«ñ«¼ ¡á  αδ¡«¬  ßÑα¿¿ IBM
  18.      PS/2  "¼δΦ∞",  »« ßπΘÑßΓóπ, íδ½á ΓαÑΓ∞¿¼ ñ«»«½¡Ñ¡¿Ñ¼ ¬ Éæ. ÆÑ¼ ¡Ñ
  19.      ¼Ñ¡ÑÑ πªÑ »α¿ á¡«¡ß¿α«óá¡¿¿ ß¿ßΓѼδ IBM  PS/2 ß««íΘὫß∞, τΓ« «¡á
  20.      ß¡áíªÑ¡á  »«αΓ«¼  ñ½∩  »«ñ¬½ετÑ¡¿∩  "¼δΦ¿",   ¿  "¼δΦ∞"  ºá¡¿¼áÑΓ
  21.      º¡áτ¿Γѽ∞¡«Ñ ¼ÑßΓ« ßαÑñ¿ Éæ.
  22.  
  23.           ì´πτΦÑÑ   ¿ß»«½∞º«óá¡¿Ñ   "¼δΦ¿"   -   »αÑñ¼ÑΓ  »«ßΓ«∩¡¡δσ
  24.      ñ¿ß¬πßß¿⌐.  ìÑ óßÑ »α«úαá¼¼¿ßΓδ  (¿½¿  »«½∞º«óáΓѽ¿) ó«ß»α¿¡¿¼áεΓ
  25.      »¿¬Γ«úαἡδ⌐  ¿¡ΓÑαΣÑ⌐ß.  é ßó∩º¿ ß ΓѼ,  τΓ« "¼δΦ∞" ó»ÑαóδÑ íδ½á
  26.      ¿ß»«½∞º«óá¡á   ¿¼Ñ¡¡«  ß   »¿¬Γ«úαá¼¼¡δ¼   ¿¡ΓÑαΣÑ⌐ß«¼,   ó«»α«ßδ
  27.      ¿ß»«½∞º«óá¡¿∩ "¼δΦ¿"  τáΘÑ óßÑú« ßó«ñ∩Γß∩ ¿¼Ñ¡¡« ¬ ¡Ñ¼π, á φΓ« ó,
  28.      ßó«ε «τÑαÑñ∞,  «ΓΓὬ¿óáÑΓ «Γ "¼δΦ¿"  í«½∞Φ«⌐ ¬απú »α«úαá¼¼¿ßΓ«ó,
  29.      ¡ÑúáΓ¿ó¡« «Γ¡«ß∩Θ¿σß∩ ¬  Γᬫ¼π  ¿¡ΓÑαΣÑ⌐ßπ.  Äñ¡á¬«  "¼δΦ∞" óÑñ∞
  30.      ¼«ªÑΓ  ¿ß»«½∞º«óáΓ∞ß∩   ¿   íѺ   Γᬫú«   ¿¡ΓÑαΣÑ⌐ßá.  ìá»α¿¼Ñα,
  31.      »αá¬Γ¿τÑ߬¿ óßÑ  ß«ú½áß¡δ  ß  ΓѼ,  τΓ«  "¼δΦ∞"  φΣΣÑ¬Γ¿ó¡« ¼«ªÑΓ
  32.      ¿ß»«½∞º«óáΓ∞ß∩ »α¿ αáí«ΓÑ  ß  ¿¡ΓÑαá¬Γ¿ó¡«⌐  úαáΣ¿¬«⌐.
  33.  
  34.           ìѬ«Γ«αδÑ ¼«ñѽ¿ ¼á¡¿»π½∩Γ«α«ó  Γ¿»á  "¼δΦ∞",  αáó¡«  ¬á¬  ¿
  35.      óδ»«½¡∩ѼδÑ  ¿¼¿  Σπ¡¬µ¿¿,  ¼«úπΓ  º¡áτ¿Γѽ∞¡« «Γ½¿τáΓ∞ß∩ ñαπú «Γ
  36.      ñαπúá.  Å«φΓ«¼π ºá¼ÑΓ¿¼,  τΓ« óßÑ »α«úαá¼¼δ,  »α¿óÑñÑ¡¡δÑ ó  φΓ«⌐
  37.      ú½áóÑ,  «α¿Ñ¡Γ¿α«óá¡δ  ¡á  ¿ß»«½∞º«óá¡¿Ñ  "¼δΦ¿" Σ¿α¼δ Microsoft,
  38.      ¬«Γ«αá∩ Σπ¡¬µ¿«¡á½∞¡« ¿ñÑ¡Γ¿τ¡á "¼δΦ¿", ¿ß»«½∞ºπѼ«⌐ ó ¼«ñѽ∩σ PS
  39.      /2.  ä½∩  «íÑß»ÑτÑ¡¿∩  ¿¡ΓÑαΣÑ⌐ßá  ß  "¼δΦ∞ε" Σ¿α¼δ Microsoft óá¼
  40.      ¡Ñ«íσ«ñ¿¼«  ¿¼ÑΓ∞  »«  ¬αá⌐¡Ñ⌐  ¼ÑαÑ  ßá¼π  "¼δΦ∞",   απ¬«ó«ñßΓó«
  41.      »«½∞º«óáΓѽ∩  »« »α«úαá¼¼¡«¼π «íÑß»ÑτÑ¡¿ε "¼δΦ¿" (Microsoft Mouse
  42.      Programmer's Reference Guide) ¿ »«ßΓáó½∩Ѽδ⌐ ß  φΓ¿¼ απ¬«ó«ñßΓó«¼
  43.      ñ¿ß¬.  ìá  φΓ«¼ ñ¿ß¬Ñ αáß»«½«ªÑ¡á ß»Ñµ¿á½∞¡á∩ í¿í½¿«ΓѬá ß ¿¼Ñ¡Ñ¼
  44.      MOUSE.LIB, óδ»«½¡∩εΘá∩ »«ññÑ᪬π Σπ¡¬µ¿«¡¿α«óá¡¿∩ "¼δΦ¿" ¡á ßἫ¼
  45.      ¡¿ª¡Ñ¼ πα«ó¡Ñ. îδ íπñѼ ¿ß»«½∞º«óáΓ∞ Σπ¡¬µ¿¿ ¿º φΓ«⌐ í¿í½¿«ΓѬ¿ ó
  46.      ¬áτÑßΓóÑ íẫóδσ Σπ¡¬µ¿⌐ »α¿ αáßß¼«ΓαÑ¡¿¿  »α«úαá¼¼, »αÑñ½áúáѼδσ
  47.      óá¼ ó φΓ«⌐ ú½áóÑ.  óδ ñ«½ª¡δ »«¼¡¿Γ∞, τΓ« óáΦ ¬«¼»¿½∩Γ«α æ ñ«½ªÑ¡
  48.      íδΓ∞ ß«ó¼ÑßΓ¿¼ ß »«ñ¬½ετáÑ¼δ¼¿  ¡á  φΓá»Ñ  αÑñá¬Γ¿α«óá¡¿∩  ßó∩ºÑ⌐
  49.      »«ñ»α«úαἼἿ  ¿º  í¿í½¿«ΓѬ¿  »«ñ»α«úαá¼¼ »«ßΓáó½∩Ѽδσ ¡á ñ¿ß¬Ñ
  50.      Σ¿α¼«⌐ Microsoft.  óá¼ ΓᬪѠ¡áñ½Ñª¿Γ  »«¼¡¿Γ∞,  τΓ«  «í∩ºáΓѽ∞¡«
  51.      ¡Ñ«íσ«ñ¿¼« ¡á½¿τ¿Ñ ñαá⌐óÑαá πßΓα«⌐ßΓóá MOUSE.SYS.
  52.  
  53.           Å«ß½Ñ íÑú½«ú«  «íº«αá  «ß¡«ó ¿ß»«½∞º«óá¡¿∩ ¼á¡¿»π½∩Γ«αá Γ¿»á
  54.      "¼δΦ∞" ó φΓ«⌐ ú½áóÑ óδ  »«½πτ¿ΓÑ  ¿¡Σ«α¼áµ¿ε  «  Γ«¼,  ¬á¬  ¼«ª¡«
  55.      ¼«ñ¿Σ¿µ¿α«óáΓ∞  αá¡ÑÑ  αáßß¼«ΓαÑ¡¡πε »α«úαá¼¼π "α¿ß«óá¡¿∩" ß ΓѼ,
  56.      τΓ«íδ «¡á ¼«ú½á αáí«ΓáΓ∞ ß "¼δΦ∞ε" (ß πτÑΓ«¼ Γ«ú«,  τΓ«  «ß¡«ó¡δÑ
  57.      ¬«¡µÑ»µ¿¿  »α¿¼Ñ¡Ñ¡¿∩  "¼δΦ¿",  á  ΓᬪѠαáºαáí«Γá¡¡δÑ ó »α«µÑßßÑ
  58.  
  59.  
  60.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  61. â½áóá IX                                                    -- 2 --
  62.  
  63.  
  64.      ¿º½«ªÑ¡¿∩ ¼áΓÑα¿á½á »«ñ»α«úαá¼¼δ,  ¼«úπΓ  ¿ß»«½∞º«óáΓ∞ß∩  óἿ  ó
  65.      ñá½∞¡Ñ⌐ΦѼ »α¿ ß«ºñá¡¿¿ αẽ¿τ¡δ󠬫¡¬αÑΓ¡δσ »α¿½«ªÑ¡¿⌐).
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  121. â½áóá IX                                                    -- 3 --
  122.  
  123.  
  124.                    ìàèÄÆÄÉ¢à ìÇùÇï£ì¢à æéàäàìꃠĠ"î¢ÿê"
  125.      -----------------------------------------------------------------
  126.  
  127.           ä½∩ Γ«ú«, τΓ«íδ ¿ß»«½∞º«óáΓ∞ "¼δΦ∞", »αѪñÑ óßÑú« ¡Ñ«íσ«ñ¿¼«
  128.      ¿¡ßΓ὿α«óáΓ∞ ß««ΓóÑΓßΓóπεΘ¿⌐ ñαá⌐óÑα. ä½∩ "¼δΦ¿" Σ¿α¼δ Microsoft
  129.      ó Σá⌐½ CONFIG.SYS ñ«½ª¡á íδΓ∞ ñ«íáó½Ñ¡á ß½ÑñπεΘá∩ ßΓ᫬á:
  130.  
  131.                              device = mouse.sys
  132.  
  133.           ä½∩ ¿¡ßΓá½∩µ¿¿   ñαá⌐óÑαá   "¼δΦ¿"  Σ¿α¼δ  IBM  ñ«½ª¡á  íδΓ∞
  134.      ºá»πΘѡᠻα«úαá¼¼á MOUSE.COM.  æ φΓ«⌐ µÑ½∞ε ó  Σá⌐½  AUTOEXEC.BAT
  135.      ¼«ªÑΓ íδΓ∞ ñ«íáó½Ñ¡á ßΓ᫬á ó¿ñá:
  136.  
  137.                                    mouse
  138.  
  139.           Å«ß½Ñ Γ«ú«,  ¬á¬ ñαá⌐óÑα αẼÑΘÑ¡ ó  ß¿ßΓѼÑ, ½εíδÑ ñÑ⌐ßΓó¿∩
  140.      »«  »ÑαѼÑΘÑ¡¿ε  "¼δΦ¿"  ¿½¿  ¡áªáΓ¿ε  ÑÑ  ¬½áó¿Φ  íπñπΓ óδºδóáΓ∞
  141.      úÑ¡Ñαáµ¿ε »αÑαδóá¡¿∩ 33ì.  Åα«µÑßß, π»αáó½∩εΘ¿⌐ "¼δΦ∞ε", óδºδóáÑΓ
  142.      »αÑαδóá¡¿Ñ,    ºáΓѼ   πßΓá¡áó½¿óáÑΓ   º¡áτÑ¡¿∩   ß««ΓóÑΓßΓóπεΘ¿σ
  143.      ó¡πΓαÑ¡¡¿σ »ÑαѼѡ¡δσ ¿ »α«ñ«½ªáÑΓ ßó«ε αáí«Γπ.  éß½ÑñßΓó¿Ñ Γ«ú«,
  144.      τΓ« »αÑαδóá¡¿Ñ  úÑ¡Ñα¿απÑΓß∩  ½¿Φ∞  »α¿ ¿º¼Ñ¡Ñ¡¿¿  "¼δΦ∞ε" ßó«Ñú«
  145.      »«½«ªÑ¡¿∩, ¡Ñ»«ñ󿪡á∩ "¼δΦ∞" ¡Ñ óδºδóáÑΓ ¡Ñ«íσ«ñ¿¼«ßΓ¿ óδñѽѡ¿∩
  146.      ¡á ¡ÑÑ αÑßπα߫󠬫¼»∞ΓÑαá.
  147.  
  148.           Æ«τ¡« ΓᬠªÑ,  ¬á¬  ß  ¬½áó¿áΓπα«⌐  áßß«µ¿¿α«óá¡  ¬παß«α,  ß
  149.      "¼δΦ∞ε"  ΓᬪѠ áßß«µ¿¿α«óá¡  ¡Ñ¬¿⌐  ¼áα¬Ñα ¡á φ¬αá¡Ñ (¡áºδóáѼδ⌐
  150.      ñá½ÑÑ π¬áºáΓѽ∞).  Å«ñ»α«úαá¼¼δ ó í¿í½¿«ΓѬѠ󠠻«ññÑαª¬Ñ  "¼δΦ¿"
  151.      Σ¿α¼δ   Microsoft   «»αÑñѽ∩εΓ   »«   π¼«½τá¡¿ε  ß½ÑñπεΘπε  Σ«α¼π
  152.      π¬áºáΓѽ∩:  ó úαáΣ¿τÑ߬¿σ αѪ¿¼áσ - φΓ« ßΓαѽ¬á,  á  ó  ΓѬßΓ«óδσ
  153.      αѪ¿¼áσ  -  »α∩¼«πú«½∞¡¿¬  ó  αἬáσ úáíáα¿Γ¡δσ αẼÑα«ó ß¿¼ó«½á.
  154.      Ç¡á½«ú¿τ¡«  ¬παß«απ  ¬½áó¿áΓπαδ  π¬áºáΓѽ∞-¬παß«α  "¼δΦ¿"   ¼«ªÑΓ
  155.      «Γ«íαáªáΓ∞ß∩    ½¿Φ∞    Γ«úñá,   ¬«úñá   "¼δΦ∞"   ¡Ñ»«ßαÑñßΓóÑ¡¡«
  156.      ¿ß»«½∞ºπÑΓß∩.  é  »α«Γ¿ó¡«¼  ß½πτáÑ  π¬áºáΓѽ∞-¬παß«α  "¼δΦ¿"  ¡Ñ
  157.      «Γ«íαáªáÑΓß∩ ¡á φ¬αá¡Ñ Γá¬, ¬á¬ íπñΓ« ¿¡ΓÑαΣÑ⌐ßá ß "¼δΦ∞ε" ó««íΘÑ
  158.      ¡Ñ ßπΘÑßΓóπÑΓ.
  159.  
  160.           ìÑß¼«Γα∩ ¡á Γ«,  τΓ« "¼δΦ∞" ¿ φ¬αá¡ Σ¿º¿τÑ߬¿ «ΓñÑ½Ñ¡δ  ñαπú
  161.      «Γ ñαπúá,  ßó∩º∞  ¼Ñªñπ  ¡¿¼¿  óßÑ  ªÑ  ¿¼ÑÑΓß∩,  Γᬠ¬á¬ ñαá⌐óÑα
  162.      "¼δΦ¿" áóΓ«¼áΓ¿τÑ߬¿    «Γ߽Ѫ¿óáÑΓ     ß«ñÑন¼«Ñ     ßτÑΓτ¿¬«ó,
  163.      ¿¡ñ¿µ¿απεΘ¿σ   ΓѬπΘÑÑ   ß«ßΓ«∩¡¿Ñ  π¬áºáΓѽ∩-¬παß«αá  "¼δΦ¿"  ¡á
  164.      φ¬αá¡Ñ.  Åα¿ »ÑαѼÑΘÑ¡¿¿ "¼δΦ¿" ¬παß«α áóΓ«¼áΓ¿τÑ߬¿ »ÑαѼÑΘáÑΓß∩
  165.      ¡á  φ¬αá¡Ñ  ó  Γ«τ¡«¼ ß««ΓóÑΓßΓó¿¿ ß ¿º¼Ñ¡Ñ¡¿Ñ¼ ¬««αñ¿¡áΓ "¼δΦ¿".
  166.      ÉáßßΓ«∩¡¿Ñ,  ¡á ¬«Γ«α«Ñ  íδ½á  »ÑαѼÑΘá¡á  "¼δΦ∞",  ¿º¼Ñα∩ÑΓß∩  ó
  167.      "¼δΦ¿¡δσ"  Φáúáσ.  Äñ¿¡  Γᬫ⌐  Φáú  αáóÑ¡ 1/200 ñε⌐¼á.  Äñ¡á¬« ó
  168.      í«½∞Φ¿¡ßΓóÑ ß½πτáÑ󠺡áΓ∞ ¡á ß¬«½∞¬« »ÑαѼÑßΓ¿½áß∞  "¼δΦ∞" ß«óßѼ
  169.      ¡Ñ«í∩ºáΓѽ∞¡«.
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  181. â½áóá IX                                                    -- 4 --
  182.  
  183.  
  184.                        éêÉÆôÇïêçÇûꃠê ÉàÇï£ì¢ë ¥èÉÇì
  185.      -----------------------------------------------------------------
  186.  
  187.           ü¿í½¿«ΓѬᠻ«ñ»α«úαá¼¼  »«ññÑ᪬¿  "¼δΦ¿"  Σ¿α¼δ   Microsoft
  188.      αáí«ΓáÑΓ  ß  ó¿αΓπá½∞¡δ¼  φ¬αá¡«¼  ó  ó¿ñÑ  ¼áßß¿óá  Γ«τѬ αáßΓαá
  189.      (¼áßß¿óá ¿º  Ññ¿¡¿µ  ¼¿¡¿¼á½∞¡«ú«  ¿º«íαáªÑ¡¿∩,  µóÑΓ  ¿  ∩ᬫßΓ∞
  190.      ¬«Γ«αδσ  ¼«ª¡«  ºáñáΓ∞  ¡Ñºáó¿ß¿¼«  «Γ  «ßΓá½∞¡«ú«  ¿º«íαáªÑ¡¿∩),
  191.      ¬«Γ«αδ⌐ ¼«ªÑΓ «Γ½¿τáΓ∞ß∩ «Γ  αÑá½∞¡«ú«  φ¬αá¡á.  Åα¿  »ÑαѼÑΘÑ¡¿¿
  192.      "¼δΦ¿"  ßτÑΓτ¿¬¿  ¼ÑßΓ«»«½«ªÑ¡¿∩  ¬παß«αá ¿º¼Ñ¡∩εΓ ßó«Ñ º¡áτÑ¡¿Ñ.
  193.      ÅÑαÑñ  «Γ«íαáªÑ¡¿Ñ¼  ¬παß«αá   ó¿αΓπá½∞¡δÑ   ¬««αñ¿¡áΓδ   ¬παß«αá
  194.      »αÑ«íαáºπεΓß∩  ó  ¬««αñ¿¡áΓδ αÑá½∞¡«ú« φ¬αá¡á.  é ó¿ñÑ«αѪ¿¼áσ 6,
  195.      14,  15 ¿ 16 φΓ« »αÑ«íαẫóá¡¿Ñ «ßπΘÑßΓó½∩ÑΓß∩ «ñ¿¡ ¬  «ñ¡«¼π.  é
  196.      αѪ¿¼áσ  4 ¿ 5 ¡Ñ ¬áªñá∩ Γ«τ¬á ó¿αΓπá½∞¡«⌐ ú«α¿º«¡Γá½∞¡«⌐ »«º¿µ¿¿
  197.      »αÑ«íαáºπÑΓß∩ ó ¬««αñ¿¡Γδ αÑá½∞¡«ú«  φ¬αá¡á,  á  τÑαѺ  «ñ¡π.  óδ
  198.      ñ«½ª¡δ   «íαáΓ¿Γ∞  ó¡¿¼á¡¿Ñ  ¡á  φëà Σá¬Γ,  Γᬠ ¬á¬  »α«úαá¼¼á
  199.      α¿ß«óá¡¿∩, ¬ ¬«Γ«α«⌐ íπñÑΓ ñ«íáó½Ñ¡ ¿¡ΓÑαΣÑ⌐ß ß "¼δΦ∞ε" ¿ ¬«Γ«αá∩
  200.      íπñÑΓ  αáßß¼áΓα¿óáΓ∞ß∩  ó  ñá¡¡«⌐  ú½áóÑ,  αáí«ΓáÑΓ  ¿¼Ñ¡¡«  ó  4
  201.      úαáΣ¿τÑ߬«¼ αѪ¿¼Ñ.
  202.  
  203.  
  204.  
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.  
  213.  
  214.  
  215.  
  216.  
  217.  
  218.  
  219.  
  220.  
  221.  
  222.  
  223.  
  224.  
  225.  
  226.  
  227.  
  228.  
  229.  
  230.  
  231.  
  232.  
  233.  
  234.  
  235.  
  236.  
  237.  
  238.  
  239.  
  240.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  241. â½áóá IX                                                    -- 5 --
  242.  
  243.  
  244.                         üêüïêÄÆàèÇ ÅÄääàÉåèê "î¢ÿê"
  245.      -----------------------------------------------------------------
  246.  
  247.           Å«ñ»α«úαá¼¼δ ó¡πΓα¿ MOUSE.LIB áßß«µ¿¿απεΓß∩ π »«½∞º«óáΓѽ∩ ß
  248.      «ñ¡«⌐ Σπ¡¬µ¿Ñ⌐, ¿ß»«½∞ºπεΘÑ⌐ ó ¬áτÑßΓóÑ óσ«ñ¡«ú« áαúπ¼Ñ¡Γá τ¿ß½«,
  249.      ß»Ñµ¿Σ¿µ¿απεΘÑÑ  ¡«¼Ñα  Σπ¡¬µ¿¿  »«ññÑ᪬¿ "¼δΦ¿".  (¥Γ«Γ »α«µÑßß
  250.      ¡Ñ¬«Γ«αδ¼ «íαẫ¼ ßσ«ñÑ¡  ß  »α«µÑßß«¼  ñ«ßΓπ»á  ¬  Σπ¡¬µ¿∩¼  DOS
  251.      »«ßαÑñßΓó«¼  »αÑαδóá¡¿∩  21ì  ß π¬áºá¡¿Ñ¼ ¡«¼Ñαá ¡πª¡«⌐ Σπ¡¬µ¿¿).
  252.      ê¼∩   φΓ«⌐   Σπ¡¬µ¿¿   «»αÑñѽ∩ÑΓß∩   ¼«ñѽ∞ε   »á¼∩Γ¿,   ¬«Γ«αá∩
  253.      ¿ß»«½∞ºπÑΓß∩  »α¿  ¬«¼»¿½∩µ¿¿  óáΦÑ⌐  »α«úαá¼¼δ.  êß»«½∞ºπ⌐ΓÑ ¿¼∩
  254.      cmouses() ñ½∩  ¼«ñѽ¿  ¼á½Ñ¡∞¬«⌐  »á¼∩Γ¿,  cmousec()  ñ½∩  ¼«ñѽ¿
  255.      ¬«¼»á¬Γ¡«⌐ »á¼∩Γ¿,   cmousem()   ñ½∩   ¼«ñѽ¿  ßαÑñ¡Ñ⌐  »á¼∩Γ¿  ¿
  256.      cmousel() ñ½∩ ¼«ñѽ¿ í«½∞Φ«⌐ ¿ ßἫ⌐ í«½∞Φ«⌐  («úα«¼¡«⌐)  »á¼∩Γ¿.
  257.      (çá¼ÑΓ¿¼,  τΓ« Σπ¡¬µ¿∩ ¡Ñ ¼«ªÑΓ αáí«ΓáΓ∞ ó ¼«ñѽ¿ ßἫ⌐ ¼á½Ñ¡∞¬«⌐
  258.      »á¼∩Γ¿).  Åα¿¼Ñα,  »αÑñßΓáó½Ñ¡¡δ⌐ ó φΓ«⌐ ú½áóÑ, ¿ß»«½∞ºπÑΓ ¼«ñѽ∞
  259.      ¼á½Ñ¡∞¬«⌐ »á¼∩Γ¿,  «ñ¡á¬« óδ ¼«ªÑΓÑ ¿º¼Ñ¡¿Γ∞ Γ¿» ¼«ñѽ¿ »á¼∩Γ¿ »«
  260.      ßó«Ñ¼π πß¼«ΓαÑ¡¿ε.
  261.  
  262.           Äß¡«ó¡δ¼ Σ«α¼áΓ«¼ Σπ¡¬µ¿¿ cmouses() ∩ó½∩ÑΓß∩:
  263.  
  264.           void cmouses(fnum, arg2, arg3, arg4);
  265.                int *fnum, *arg2, *arg3, *arg4;
  266.           èᬠó¿ñ¡«,  fnum  ∩ó½∩ÑΓß∩ ¡«¼Ñα«¼ Σπ¡¬µ¿¿ »«ññÑ᪬¿ "¼δΦ¿",
  267.      ¬«Γ«απε ¡Ñ«íσ«ñ¿¼« óδºóáΓ∞. äαπú¿Ñ »áαá¼ÑΓαδ ß«ñÑαªáΓ ¿¡Σ«α¼áµ¿ε,
  268.      ¡Ñ«íσ«ñ¿¼πε  ñ½∩  ß»Ñµ¿Σ¿¬áµ¿¿  Σπ¡¬µ¿¿.  ÄíαáΓ¿ΓѠ󡿼᡿Ñ,  τΓ«
  269.      Σπ¡¬µ¿¿ »ÑαÑñáεΓß∩ ¡Ñ ßἿ áαúπ¼Ñ¡Γδ, á π¬áºáΓѽ¿ ¡á ¿σ º¡áτÑ¡¿∩.
  270.      öπ¡¬µ¿∩  cmouses() ó«ºóαáΘáÑΓ αѺπ½∞ΓáΓδ αáí«Γδ ó ó¿ñÑ »áαá¼ÑΓα«ó
  271.      ¿,  ß½Ññ«óáΓѽ∞¡«,  ¡πªñáÑΓß∩ ó  ¿σ  áñαÑßᵿ¿.  ö¿α¼á  Microsoft
  272.      «»αÑñѽ¿½á Γα¿ñµáΓ∞ Σπ¡¬µ¿⌐ »«ññÑ᪬¿ "¼δΦ¿".  Äñ¡á¬« ó »α«úαá¼¼Ñ
  273.      α¿ß«óá¡¿∩ íπñπΓ ¿ß»«½∞º«óá¡δ ½¿Φ∞  »∩Γ∞  ¿º  ¡¿σ.  ì¿ªÑ  »α¿óÑñÑ¡
  274.      ¬αáΓ¬¿⌐  «íº«α Σπ¡¬µ¿⌐ »«ññÑ᪬¿ "¼δΦ¿" Σ¿α¼δ Microsoft,  ¬«Γ«αδÑ
  275.      íπñπΓ ¿ß»«½∞º«óá¡δ ¡á¼¿ ó φΓ«⌐ ú½áóÑ.
  276.  
  277.  
  278.           Åα¿óÑßΓ¿ ó ¿ßσ«ñ¡«Ñ ß«ßΓ«∩¡¿Ñ, óδñáΓ∞ ßΓáΓπß.
  279.           ---------------------------------------------
  280.  
  281.           öπ¡¬µ¿∩ 0 »α¿ó«ñ¿Γ "¼δΦ∞" ó ¡áτá½∞¡«Ñ  ß«ßΓ«∩¡¿Ñ (ßíαáßδóáÑΓ
  282.      "¼δΦ∞")  Ä¡á  »ÑαѼÑΘáÑΓ ¬παß«α-π¬áºáΓѽ∞ "¼δΦ¿" ó µÑ¡Γα φ¬αá¡á ¿
  283.      "ó䬽ετáÑΓ  "  Ñú«.  öπ¡¬µ¿∩  ó«ºóαáΘáÑΓ  ¡«¼Ñα  ¡áªáΓ«⌐  ¬½áó¿Φ¿
  284.      "¼δΦ¿"   ó ¬áτÑßΓóÑ º¡áτÑ¡¿∩ arg2.  Å«ß½Ñ ºáóÑαΦÑ¡¿∩ Σπ¡¬µ¿¿ fnum
  285.      »α¿¡¿¼áÑΓ º¡áτÑ¡¿Ñ 0,  Ñß½¿ "¼δΦ∞" ¿ ß««ΓóÑΓßΓóπεΘÑÑ  »α«úαá¼¼¡«Ñ
  286.      «íÑß»ÑτÑ¡¿Ñ ¡Ñ ¿¡ßΓ὿α«óá¡δ, ¿ -1 ó »α«Γ¿ó¡«¼ ß½πτáÑ.
  287.  
  288.  
  289.           ÄΓ«íαếΓ∞ ¬παß«α
  290.           -----------------
  291.  
  292.           öπ¡¬µ¿∩ 1   «Γ«íαáªáÑΓ   π¬áºáΓѽ∞-¬παß«α   "¼δΦ¿".  Ä¡á  ¡Ñ
  293.      ó«ºóαáΘáÑΓ ¡¿¬á¬«ú« º¡áτÑ¡¿∩.
  294.  
  295.  
  296.           ÅÑαѼÑßΓ¿Γ∞ ¬παß«α
  297.           ------------------
  298.  
  299.  
  300.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  301. â½áóá IX                                                    -- 6 --
  302.  
  303.  
  304.  
  305.           öπ¡¬µ¿∩ 2 »ÑαѼÑΘáÑΓ ¬παß«α »«  φ¬αá¡π.  Ä¡á  ¡Ñ  ó«ºóαáΘáÑΓ
  306.      ¡¿¬á¬«ú« º¡áτÑ¡¿∩.
  307.  
  308.  
  309.           éδñáΓ∞ ßΓáΓπß ¬½áó¿Φ¿ ¿ »«º¿µ¿ε ¬παß«αá
  310.           ---------------------------------------
  311.  
  312.           öπ¡¬µ¿∩ 3  ó«ºóαáΘáÑΓ  ßΓáΓπß  ¬½áó¿Φ¿  ó arg2,  ó¿αΓπá½∞¡πε
  313.      ú«α¿º«¡Γá½∞¡πε »«º¿µ¿ε ¬παß«αá ó arg3, á ó¿αΓπá½∞¡πε óÑαΓ¿¬á½∞¡πε
  314.      »«º¿µ¿ε ¬παß«αá ó arg4.
  315.  
  316.           æΓáΓπß ¬½áó¿Φ¿  ¬«ñ¿απÑΓß∩  ó  í¿Γáσ 0 ¿ 1 íá⌐Γá arg2.  àß½¿
  317.      º¡áτÑ¡¿Ñ í¿Γá 0 πßΓá¡«ó½Ñ¡«  (αáó¡«  1),  Γ«  íδ½á  ¡áªáΓá  ½Ñóá∩
  318.      ¬½áó¿Φá  "¼δΦ¿",  Ñß½¿ º¡áτÑ¡¿Ñ í¿Γá 1 πßΓá¡«ó½Ñ¡« (αáó¡« 1),  Γ«
  319.      íδ½á  ¡áªáΓá  »αáóá∩  ¬½áó¿Φá.  àß½¿  º¡áτÑ¡¿∩  «í«¿σ  í¿Γ«ó   ¡Ñ
  320.      πßΓá¡«ó½Ñ¡δ (αáó¡δ 0), Γ« ¡¿¬á¬á∩ ¬½áó¿Φá ¡áªáΓá ¡Ñ íδ½á.
  321.  
  322.  
  323.           ôßΓá¡«ó¿Γ∞ ¬««αñ¿¡áΓδ ¬παß«αá
  324.           ------------------------------
  325.  
  326.           öπ¡¬µ¿∩ 4  πßΓá¡áó½¿óáÑΓ  ¼ÑßΓ«αáß»«½«ªÑ¡¿Ñ  ¬παß«αá "¼δΦ¿".
  327.      ç¡áτÑ¡¿Ñ arg3  «»αÑñѽ∩ÑΓ ú«α¿º«¡Γá½∞¡πε »«º¿µ¿ε, á º¡áτÑ¡¿Ñ arg4
  328.      -  óÑαΓ¿¬á½∞¡πε  »«º¿µ¿ε ¬παß«αá.  óδ óßÑúñá ñ«½ª¡δ  »«¼¡¿Γ∞, τΓ«
  329.      º¡áτÑ¡¿∩  ¡Ñ  ñ«½ª¡δ  óδσ«ñ¿Γ∞  ºá  »αÑñÑ½δ  ó¿αΓπá½∞¡«ú« φ¬αá¡á,
  330.      ¬«Γ«αδ⌐ óδ ¿ß»«½∞ºπÑΓÑ.
  331.  
  332.  
  333.           ê¡ñ¿¬áµ¿∩ ñó¿ªÑ¡¿∩
  334.           ------------------
  335.  
  336.           öπ¡¬µ¿∩ 11  ó«ºóαáΘáÑΓ  τ¿ß½«  óÑαΓ¿¬á½∞¡δσ ¿ ú«α¿º«¡Γá½∞¡δσ
  337.      "¼δΦ¿¡δσ" Φáú«ó,  ¬«Γ«α«Ñ "¼δΦ∞"  »α«Φ½á  ß«  óαѼѡ¿  »«ß½Ññ¡Ñú«
  338.      «íαáΘÑ¡¿∩   ¬   Σπ¡¬µ¿¿  11,  ñαπú¿¼¿  ß½«óἿ  -  φΓ«  ¿º¼Ñ¡Ñ¡¿Ñ
  339.      óÑαΓ¿¬á½∞¡δσ ¿ ú«α¿º«¡Γá½∞¡δσ  ¬««αñ¿¡áΓ  "¼δΦ¿".  öπ¡¬µ¿∩  ΓᬪÑ
  340.      ßíαáßδóáÑΓ ó¡πΓαÑ¡¡¿⌐ αÑú¿ßΓα-ßτÑΓτ¿¬ ó 0. ç¡áτÑ¡¿Ñ óÑαΓ¿¬á½∞¡«ú«
  341.      ßτÑΓτ¿¬á ó«ºóαáΘáÑΓß∩ ó arg3,  á ú«α¿º«¡Γá½∞¡«ú« -  ó  arg4.  ¥Γ«
  342.      »«ºó«½∩ÑΓ,  Ñß½¿  "¼δΦ∞"  »«ß½Ñ »«ß½Ññ¡Ñú« «íαáΘÑ¡¿∩ ¬ Σπ¡¬µ¿¿ ¡Ñ
  343.      »ÑαѼÑΘá½áß∞ ¡á »½«ß¬«ßΓ¿, »«½πτ¿Γ∞ º¡áτÑ¡¿∩ ¬á¬ ú«α¿º«¡Γá½∞¡«ú«,
  344.      Γᬠ¿ óÑαΓ¿¬á½∞¡«ú« ßτÑΓτ¿¬«ó αáó¡δ¼¿ 0.  àß½¿ º¡áτÑ¡¿Ñ «ñ¡«ú« ¿º
  345.      ßτÑΓτ¿¬«ó (¿½¿ «í«¿σ) «Γ½¿τ¡« «Γ 0,  Γ«  "¼δΦ∞"  »ÑαѼÑΘá½áß∞  ¡á
  346.      »½«ß¬«ßΓ¿.
  347.  
  348.           Å«½«ª¿Γѽ∞¡«Ñ º¡áτÑ¡¿Ñ   ¿º¼Ñ¡Ñ¡¿∩   óÑαΓ¿¬á½∞¡δσ  "¼δΦ¿¡δσ"
  349.      Φáú«ó   »«ºó«½∩ÑΓ   ºá¬½ετ¿Γ∞,   τΓ«   "¼δΦ∞"   ñó¿úá½áß∞   ó¡¿º.
  350.      ÄΓα¿µáΓѽ∞¡«Ñ  ªÑ  º¡áτÑ¡¿Ñ  ßó¿ñÑΓѽ∞ßΓóπÑΓ  «  ñó¿ªÑ¡¿¿  "¼δΦ¿"
  351.      óóÑασ.
  352.  
  353.           Å«½«ª¿Γѽ∞¡«Ñ º¡áτÑ¡¿Ñ ¿º¼Ñ¡Ñ¡¿∩ τ¿ß½á  ú«α¿º«¡Γá½∞¡δσ Φáú«ó
  354.      ßó¿ñÑΓѽ∞ßΓóπÑΓ   «   Γ«¼,  τΓ«  "¼δΦ∞"  »ÑαѼÑΘá½áß∞  ó»αáó«,  á
  355.      «Γα¿µáΓѽ∞¡«Ñ º¡áτÑ¡¿Ñ »«¬áºδóáÑΓ ¡á Γ«,  τΓ« "¼δΦ∞" »ÑαѼÑΘá½áß∞
  356.      ó½Ñó«.
  357.  
  358.  
  359.  
  360.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  361. â½áóá IX                                                    -- 7 --
  362.  
  363.  
  364.  
  365.  
  366.  
  367.  
  368.  
  369.  
  370.  
  371.  
  372.  
  373.  
  374.  
  375.  
  376.  
  377.  
  378.  
  379.  
  380.  
  381.  
  382.  
  383.  
  384.  
  385.  
  386.  
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403.  
  404.  
  405.  
  406.  
  407.  
  408.  
  409.  
  410.  
  411.  
  412.  
  413.  
  414.  
  415.  
  416.  
  417.  
  418.  
  419.  
  420.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  421. â½áóá IX                                                    -- 8 --
  422.  
  423.  
  424.                   öôìèûêê ÅÄääàÉåèê "î¢ÿê" éàÉòìàâÄ ôÉÄéìƒ
  425.      -----------------------------------------------------------------
  426.  
  427.           êß»«½∞ºπ∩ Σπ¡¬µ¿ε cmouses() óδ ¼«ªÑΓÑ ß«ºñáΓ∞  ¡áí«α Σπ¡¬µ¿⌐
  428.      ∩ºδ¬á  æ¿  óδß«¬«ú«  πα«ó¡∩,  ¬«Γ«αδÑ  º¡áτ¿Γѽ∞¡«  «í½ÑúτáΓ  óá¼
  429.      »α«úαá¼¼¿α«óá¡¿Ñ ¿¡ΓÑαΣÑ⌐ß«ó,  «α¿Ñ¡Γ¿α«óá¡¡δσ ¡á  ¿ß»«½∞º«ó᡿Ѽ
  430.      "¼δΦ¿". Å«ß¼«Γα¿ΓÑ, ¬á¬ φΓ« ñѽáÑΓß∩.
  431.  
  432.  
  433.           ôßΓá¡«ó¬á "¼δΦ¿" ó ¿ßσ«ñ¡«Ñ ß«ßΓ«∩¡¿Ñ.
  434.           --------------------------------------
  435.  
  436.           öπ¡¬µ¿∩, »αÑñßΓáó½Ñ¡¡á∩ ¡¿ªÑ, mouse_reset() ¿ß»«½∞ºπÑΓß∩ ñ½∩
  437.      πßΓᡫ󬿠"¼δΦ¿"  ó  ¿ßσ«ñ¡«Ñ  ß«ßΓ«∩¡¿Ñ.  çá¼ÑΓ¿¼,  τΓ«  Σπ¡¬µ¿∩
  438.      ΓαÑíπÑΓ   ¡á½¿τ¿∩  ß««ΓóÑΓßΓóπεΘÑú«  »α«úαá¼¼¡«ú«  «íÑß»ÑτÑ¡¿∩  ¿
  439.      á»»áαáΓ¡«⌐ τáßΓ¿ ¬«¼»∞εΓÑαá,  á  ΓᬪѠ ¿¡ßΓá½∩µ¿¿  ñóπσ¬½áó¿Φ¡«⌐
  440.      "¼δΦ¿".
  441.  
  442.      /* ôßΓá¡«ó¬á "¼δΦ¿" ó ¿ßσ«ñ¡«Ñ ß«ßΓ«∩¡¿Ñ */
  443.  
  444.      void mouse_reset()
  445.      {
  446.           int fnum, arg2, arg3, arg4;
  447.  
  448.           fnum = 0;  /* ôßΓá¡«ó¬á "¼δΦ¿" ó ¿ßσ«ñ¡«Ñ ß«ßΓ«∩¡¿Ñ  */
  449.           cmouses( &fnum, &arg2, &arg3, &arg4);
  450.           if(fnum!=-1) {
  451.           printf("Ç»»áαáΓ¡δÑ ¿½¿ »α«úαá¼¼¡δÑ ßαÑñßΓóá »«ññÑ᪬¿ ");
  452.           printf("'¼δΦ¿' ¡Ñ ¿¡ßΓ὿α«óá¡δ");
  453.                exit(1);
  454.           }
  455.           if(arg2!=2) {
  456.        printf("ÉáºαÑΦÑ¡« ¿ß»«½∞º«óá¡¿Ñ Γ«½∞¬« ñóπσ¬½áó¿Φ¡«⌐ '¼δΦ¿'");
  457.                exit(1);
  458.           }
  459.      }
  460.  
  461.  
  462.           ÄΓ«íαáªÑ¡¿Ñ ¿ »ÑαѼÑΘÑ¡¿Ñ ¬παß«αá "¼δΦ¿".
  463.           -----------------------------------------
  464.  
  465.           éºá¿¼«ñ«»«½¡∩εΘ¿Ñ ñαπú   ñαπúá   Σπ¡¬µ¿¿    cursor_on()    ¿
  466.      cursor_off(),  »αÑñßΓáó½Ñ¡¡δÑ  ¡¿ªÑ,  »«ºó«½∩εΓ  á¬Γ¿ó¿º¿α«óáΓ∞ ¿
  467.      ñÑá¬Γ¿ó¿º¿α«óáΓ∞ ¿º«íαáªÑ¡¿Ñ ¬παß«αá ¡á φ¬αá¡Ñ ñ¿ß»½Ñ∩.
  468.  
  469.  
  470.      /*  é¬½ετÑ¡¿Ñ ¬παß«αá "¼δΦ¿"  */
  471.      void cursor_on()
  472.      {
  473.           int fnum;
  474.  
  475.           fnum = 1; /* «Γ«íαếΓ∞ ¬παß«α */
  476.           cmouses( &fnum,  &fnum,  &fnum,  &fnum);
  477.      }
  478.  
  479.  
  480.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  481. â½áóá IX                                                    -- 9 --
  482.  
  483.  
  484.  
  485.      /*  é䬽ετÑ¡¿Ñ ¬παß«αá "¼δΦ¿"  */
  486.      void cursor_off()
  487.      {
  488.           int fnum;
  489.  
  490.           fnum = 2; /* ßΓÑαÑΓ∞ ¬παß«α */
  491.           cmouses( &fnum,  &fnum,  &fnum,  &fnum);
  492.      }
  493.  
  494.  
  495.           èá¬á∩ ¿º ¬½áó¿Φ "¼δΦ¿" íδ½á ¡áªáΓá?
  496.           -----------------------------------
  497.  
  498.           äαπú«⌐ »áα«⌐  óºá¿¼«ñ«»«½¡∩εΘ¿σ  ñαπú ñαπúá Σπ¡¬µ¿⌐ ∩ó½∩εΓß∩
  499.      Σπ¡¬µ¿¿ rightb_pressed() ¿ leftb_pressed(),  »αÑñßΓáó½Ñ¡¡δÑ ¡¿ªÑ.
  500.      ¥Γ¿ Σπ¡¬µ¿¿ ó«ºóαáΘáεΓ º¡áτÑ¡¿Ñ "¿ßΓ¿¡á",  Ñß½¿ ¡áªáΓá »αáóá∩ ¿½¿
  501.      ½Ñóá∩ ¬½áó¿Φ¿.
  502.  
  503.  
  504.      /* é«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ "¿ßΓ¿¡á", Ñß½¿ ¡áªáΓá »αáóá∩ ¬½áó¿Φá,
  505.           ¿ "½«ª∞" ó »α«Γ¿ó¡«¼ ß½πτáÑ                            */
  506.  
  507.      rightb_pressed()
  508.      {
  509.           int fnum, arg2, arg3, arg4;
  510.  
  511.           fnum = 3;   /* ùΓÑ¡¿Ñ »«º¿µ¿¿ ¿ ßΓáΓπßá ¬½áó¿Φ¿ */
  512.           cmouses( &fnum, &arg2, &arg3, &arg4);
  513.           return arg2 & 2;
  514.      }
  515.  
  516.  
  517.  
  518.      /* é«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ "¿ßΓ¿¡á", Ñß½¿ ¡áªáΓá ½Ñóá∩ ¬½áó¿Φá,
  519.           ¿ "½«ª∞" ó »α«Γ¿ó¡«¼ ß½πτáÑ                            */
  520.  
  521.      leftb_pressed()
  522.      {
  523.           int fnum, arg2, arg3, arg4;
  524.  
  525.           fnum = 3;   /* ùΓÑ¡¿Ñ »«º¿µ¿¿ ¿ ßΓáΓπßá ¬½áó¿Φ¿ */
  526.           cmouses( &fnum, &arg2, &arg3, &arg4);
  527.           return arg2 & 1;
  528.      }
  529.  
  530.  
  531.           èᬠ«í¡áαπª¿Γ∞ »ÑαѼÑΘÑ¡¿Ñ "¼δΦ¿"?
  532.           ----------------------------------
  533.  
  534.           öπ¡¬µ¿∩ 11,  ¬«Γ«αá∩  ó«ºóαáΘáÑΓ ¿º¼Ñ¡Ñ¡¿Ñ º¡áτÑ¡¿∩ ßτÑΓτ¿¬á
  535.      "¼δΦ¿" (ó "¼δΦ¿¡δσ" Φáúáσ)  »«ß½Ñ  »«ß½Ññ¡Ñú«  «íαáΘÑ¡¿∩  ¬  ¡Ñ⌐,
  536.      »«ºó«½∩ÑΓ    «»αÑñѽ¿Γ∞    Σá¬Γ   »ÑαѼÑΘÑ¡¿∩   "¼δΦ¿".   öπ¡¬µ¿∩
  537.      mouse_motion(),   »αÑñßΓáó½Ñ¡¡á∩   ¡¿ªÑ,   ó«ºóαáΘáÑΓ   ¿º¼Ñ¡Ñ¡¿Ñ
  538.  
  539.  
  540.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  541. â½áóá IX                                                    -- 10 --
  542.  
  543.  
  544.      ¼ÑßΓ«»«½«ªÑ¡¿∩    "¼δΦ¿"    ó   ú«α¿º«¡Γá½∞¡«¼   ¿   óÑαΓ¿¬á½∞¡«¼
  545.      ¡á»αáó½Ñ¡¿∩σ ó »ÑαѼѡ¡δσ,  τ∞¿  π¬áºáΓѽ¿  ∩ó½∩εΓß∩  áαúπ¼Ñ¡ΓἿ
  546.      Σπ¡¬µ¿¿.  àß½¿  «íá  º¡áτÑ¡¿∩  deltax  ¿ deltay αáó¡δ 0,  Γ« Σá¬Γ
  547.      ñó¿ªÑ¡¿∩ "¼δΦ¿" ¡Ñ αÑú¿ßΓα¿απÑΓß∩.
  548.  
  549.      /*  é«ºóαáΘáÑΓ ¡á»αáó½Ñ¡¿Ñ ñó¿ªÑ¡¿∩  */
  550.      void mouse_motion(deltax, deltay)
  551.      char *deltax, *deltay;
  552.      {
  553.           int fnum, arg2, arg3, arg4;
  554.  
  555.           fnum = 11; /* »«½πτ¿Γ∞ ¡á»αáó½Ñ¡¿Ñ ñó¿ªÑ¡¿∩ */
  556.           cmouses( &fnum, &arg2, &arg3, &arg4);
  557.           if(arg3>0) *deltax = RIGHT;
  558.           else if(arg3<0) *deltax = LEFT;
  559.           else *deltax = NOT_MOVED;
  560.  
  561.           if(arg4>0) *deltay = DOWN;
  562.           else if(arg4<0) *deltay = UP;
  563.           else *deltay = NOT_MOVED;
  564.      }
  565.  
  566.  
  567.           îá¬α«ßδ RIGHT, LEFT, UP, DOWN ¿ NOT_MOVED «»αÑñѽѡδ
  568.      ß½ÑñπεΘ¿¼ «íαẫ¼:
  569.  
  570.      #define NOT_MOVED 0
  571.      #define RIGHT     1
  572.      #define LEFT      2
  573.      #define UP        3
  574.      #define DOWN      4
  575.  
  576.  
  577.  
  578.           ùΓÑ¡¿Ñ ¿ πßΓá¡«ó¬á »«º¿µ¿¿ ¬παß«αá.
  579.           -----------------------------------
  580.  
  581.           öπ¡¬µ¿¿ set_mouse_position()       ¿       mouse_position(),
  582.      »αÑñßΓáó½Ñ¡¡δÑ  ¡¿ªÑ,  ¿ß»«½∞ºπεΓß∩  ñ½∩ πßΓᡫ󬿠τΓÑ¡¿∩ ΓѬπΘÑ⌐
  583.      »«º¿µ¿¿ ¬παß«αá "¼δΦ¿".
  584.  
  585.  
  586.      /* ôßΓá¡«ó¿Γ∞ ¬««αñ¿¡áΓδ ¬παß«αá "¼δΦ¿" */
  587.      void set_mouse_position(x, y)
  588.      int x, y;
  589.      {
  590.  
  591.           int fnum, arg2;
  592.  
  593.           fnum = 4; /* πßΓá¡«ó¬á »«º¿µ¿¿ */
  594.           cmouses(&fnum, &arg2, &x, &y);
  595.      }
  596.  
  597.      /* é«ºóαáΘáÑΓ ¬««αñ¿¡áΓδ ¬παß«αá "¼δΦ¿" */
  598.  
  599.  
  600.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  601. â½áóá IX                                                    -- 11 --
  602.  
  603.  
  604.      void mouse_position(x, y)
  605.      int *x, *y;
  606.      {
  607.           int fnum, arg2, arg3, arg4;
  608.  
  609.           fnum = 3; /* »«½πτ¿Γ∞ »«º¿µ¿ε ¿ ßΓáΓπß ¬½áó¿Φ¿ */
  610.           cmouses( &fnum, &arg2, &arg3, &arg4);
  611.           *x = arg3;
  612.           *y = arg4;
  613.      }
  614.  
  615.  
  616.  
  617.  
  618.  
  619.  
  620.  
  621.  
  622.  
  623.  
  624.  
  625.  
  626.  
  627.  
  628.  
  629.  
  630.  
  631.  
  632.  
  633.  
  634.  
  635.  
  636.  
  637.  
  638.  
  639.  
  640.  
  641.  
  642.  
  643.  
  644.  
  645.  
  646.  
  647.  
  648.  
  649.  
  650.  
  651.  
  652.  
  653.  
  654.  
  655.  
  656.  
  657.  
  658.  
  659.  
  660.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  661. â½áóá IX                                                    -- 12 --
  662.  
  663.  
  664.                    ÅÉÄæÆàëÿǃ äàîÄìæÆÉÇûêÄììǃ ÅÉÄâÉÇîîÇ
  665.      -----------------------------------------------------------------
  666.  
  667.           Åα«úαá¼¼á, »αÑñßΓáó½Ñ¡¡á∩   ¡¿ªÑ,  ñѼ«¡ßΓα¿απÑΓ  »α¿¼Ñ¡Ñ¡¿Ñ
  668.      Σπ¡¬µ¿⌐ »«ññÑ᪬¿ "¼δΦ¿" óδß«¬«ú« πα«ó¡∩.  óδ ¼«ªÑΓÑ ßαáºπ óóÑßΓ¿
  669.      ÑÑ ó óáΦ ¬«¼»∞εΓÑα ¿ »«»α«í«óáΓ∞ ÑÑ ó ñѽÑ.
  670.  
  671.      /*  ê¡ΓÑαΣÑ⌐ß ß "¼δΦ∞ε" Microsoft/IBM */
  672.  
  673.      #include "dos.h"
  674.      #define NOT_MOVED 0
  675.      #define RIGHT     1
  676.      #define LEFT      2
  677.      #define UP        3
  678.      #define DOWN      4
  679.      void mouse_position(), mode(), goto_xy(), mouse_motion();
  680.      void cursor_on(), cursor_off(), mouse_reset();
  681.  
  682.      main(argc, argv)
  683.      int argc;
  684.      char *argv[];
  685.      {
  686.           char deltax, deltay, x, y;
  687.  
  688.           if(argc!=2) {
  689.                printf(" êß»«½∞ºπ⌐ΓÑ Σ«α¼áΓ: mouser <ó¿ñÑ«αѪ¿¼> ");
  690.                exit(1);
  691.           }
  692.  
  693.           mode(atoi(argv[1]));
  694.  
  695.           mouse_reset();  /* ¿¡¿µ¿á½¿ºáµ¿∩ "¼δΦ¿"  */
  696.           cursor_on();    /* "ó¬½ετÑ¡¿Ñ" ¬παß«αá   */
  697.  
  698.           do {
  699.                goto_xy(0, 0);
  700.                if(leftb_presed()) printf("ïÑóá∩ ¬½áó¿Φá");
  701.                if(rightb_pressed()) {
  702.                     printf("Åαáóá∩ ¬½áó¿Φá");
  703.                     mouse_position(&x, &y);
  704.                     printf("%d %d - ", x, y);
  705.                }
  706.  
  707.                /* ÄΓ«íαáªÑ¡¿Ñ ¼ÑßΓ«»«½«ªÑ¡¿∩ "¼δΦ¿" */
  708.                mouse_motion(&deltax, &deltay);
  709.                if(deltax || deltay) {
  710.                     printf("ÅÑαѼÑΘÑ¡¿Ñ");
  711.                     switch(deltax) {
  712.                          case NOT_MOVED: break;
  713.                          case RIGHT: printf("é»αáó«");
  714.                               break;
  715.                          case LEFT: printf("é½Ñó«");
  716.                               break;
  717.                     }
  718.  
  719.  
  720.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  721. â½áóá IX                                                    -- 13 --
  722.  
  723.  
  724.                     switch(deltay) {
  725.                          case NOT_MOVED: break;
  726.                          case UP: printf("éóÑασ");
  727.                               break;
  728.                          case DOWN: printf("é¡¿º");
  729.                               break;
  730.                     }
  731.                }
  732.           /* û¿¬½ óδ»«½¡∩ÑΓß∩ »«¬á «íÑ ¬½áó¿Φ¿ ¡áªáΓδ «ñ¡«óαѼѡ¡« */
  733.           } while(!(leftb_pressed() && rightb_pressed()));
  734.           mode(3);
  735.      }
  736.  
  737.      /* ôßΓá¡«ó¬á ó¿ñÑ«αѪ¿¼á  */
  738.      void mode(mode_code)
  739.      int mode_code;
  740.      {
  741.           union REGS r;
  742.  
  743.           r.h.al = mode_code;
  744.           r.h.ah = 0;
  745.           int86(0x10, &r, &r);
  746.      }
  747.  
  748.      /* ÅÑαÑßδ½¬á ¬παß«αá ó »«º¿µ¿ε, ß»Ñµ¿Σ¿µ¿α«óá¡¡πε
  749.           ¬««αñ¿¡áΓἿ σ ¿ π */
  750.      void goto_xy(x, y)
  751.      int x, y;
  752.      {
  753.           union REGS r;
  754.  
  755.           r.h.ah=2;  /* Σπ¡¬µ¿∩ áñαÑßᵿ¿ ¬παß«αá  */
  756.           r.h.dl = y; /* ¬««αñ¿¡áΓδ ßΓ«½íµá */
  757.           r.h.dh = x; /* ¬««αñ¿¡áΓδ ßΓ᫬¿ */
  758.           r.h.bh = 0; /* ó¿ñÑ«ßΓαá¡¿µá */
  759.           int86(0x10, &r, &r);
  760.      }
  761.  
  762.      /**********************************************************/
  763.      /* öπ¡¬µ¿¿, «íÑß»Ñτ¿óáεΘ¿Ñ ¿¡ΓÑαΣÑ⌐ß ß "¼δΦ∞ε"            */
  764.      /**********************************************************/
  765.  
  766.      /*  é¬½ετÑ¡¿Ñ ¬παß«αá "¼δΦ¿"  */
  767.      void cursor_on()
  768.      {
  769.           int fnum;
  770.  
  771.           fnum = 1; /* «Γ«íαếΓ∞ ¬παß«α */
  772.           cmouses( &fnum,  &fnum,  &fnum,  &fnum);
  773.      }
  774.  
  775.  
  776.      /*  é䬽ετÑ¡¿Ñ ¬παß«αá "¼δΦ¿"  */
  777.      void cursor_off()
  778.  
  779.  
  780.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  781. â½áóá IX                                                    -- 14 --
  782.  
  783.  
  784.      {
  785.           int fnum;
  786.  
  787.           fnum = 2; /* ßΓÑαÑΓ∞ ¬παß«α */
  788.           cmouses( &fnum,  &fnum,  &fnum,  &fnum);
  789.      }
  790.  
  791.  
  792.      /* é«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ "¿ßΓ¿¡á", Ñß½¿ ¡áªáΓá »αáóá∩ ¬½áó¿Φá,
  793.           ¿ "½«ª∞" ó »α«Γ¿ó¡«¼ ß½πτáÑ                            */
  794.  
  795.      rightb_pressed()
  796.      {
  797.           int fnum, arg2, arg3, arg4;
  798.  
  799.           fnum = 3;   /* ùΓÑ¡¿Ñ »«º¿µ¿¿ ¿ ßΓáΓπßá ¬½áó¿Φ¿   */
  800.           cmouses( &fnum, &arg2, &arg3, &arg4);
  801.           return arg2 & 2;
  802.      }
  803.  
  804.  
  805.      /* é«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ "¿ßΓ¿¡á", Ñß½¿ ¡áªáΓá ½Ñóá∩ ¬½áó¿Φá,
  806.           ¿ "½«ª∞" ó »α«Γ¿ó¡«¼ ß½πτáÑ                            */
  807.  
  808.      leftb_pressed()
  809.      {
  810.           int fnum, arg2, arg3, arg4;
  811.  
  812.           fnum = 3;   /* ùΓÑ¡¿Ñ »«º¿µ¿¿ ¿ ßΓáΓπßá ¬½áó¿Φ¿   */
  813.           cmouses( &fnum, &arg2, &arg3, &arg4);
  814.           return arg2 & 1;
  815.      }
  816.  
  817.  
  818.      /*  é«ºóαáΘáÑΓ ¡á»αáó½Ñ¡¿Ñ ñó¿ªÑ¡¿∩  */
  819.      void mouse_motion(deltax, deltay)
  820.      char *deltax, *deltay;
  821.      {
  822.           int fnum, arg2, arg3, arg4;
  823.  
  824.           fnum = 11; /* »«½πτ¿Γ∞ ¡á»αáó½Ñ¡¿Ñ ñó¿ªÑ¡¿∩ */
  825.           cmouses( &fnum, &arg2, &arg3, &arg4);
  826.           if(arg3>0) *deltax = RIGHT;
  827.           else if(arg3<0) *deltax = LEFT;
  828.           else *deltax = NOT_MOVED;
  829.  
  830.           if(arg4>0) *deltay = DOWN;
  831.           else if(arg4<0) *deltay = UP;
  832.           else *deltay = NOT_MOVED;
  833.      }
  834.  
  835.  
  836.  
  837.      /* ôßΓá¡«ó¿Γ∞ ¬««αñ¿¡áΓδ ¬παß«αá "¼δΦ¿" */
  838.  
  839.  
  840.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  841. â½áóá IX                                                    -- 15 --
  842.  
  843.  
  844.      void set_mouse_position(x, y)
  845.      int x, y;
  846.      {
  847.           int fnum, arg2;
  848.  
  849.           fnum = 4; /* πßΓá¡«ó¬á »«º¿µ¿¿ */
  850.           cmouses(&fnum, &arg2, &x, &y);
  851.      }
  852.  
  853.      /* é«ºóαáΘáÑΓ ¬««αñ¿¡áΓδ ¬παß«αá "¼δΦ¿" */
  854.      void mouse_position(x, y)
  855.      int *x, *y;
  856.      {
  857.           int fnum, arg2, arg3, arg4;
  858.  
  859.           fnum = 3; /* »«½πτ¿Γ∞ »«º¿µ¿ε ¿ ßΓáΓπß ¬½áó¿Φ¿ */
  860.           cmouses( &fnum, &arg2, &arg3, &arg4);
  861.           *x = arg3;
  862.           *y = arg4;
  863.      }
  864.  
  865.  
  866.  
  867.  
  868.      /* ôßΓá¡«ó¬á "¼δΦ¿" ó ¿ßσ«ñ¡«Ñ ß«ßΓ«∩¡¿Ñ   */
  869.  
  870.      void mouse_reset()
  871.      {
  872.           int fnum, arg2, arg3, arg4;
  873.  
  874.           fnum = 0;  /* ôßΓá¡«ó¬á "¼δΦ¿" ó ¿ßσ«ñ¡«Ñ ß«ßΓ«∩¡¿Ñ  */
  875.           cmouses( &fnum, &arg2, &arg3, &arg4);
  876.           if(fnum!=-1) {
  877.           printf("Ç»»áαáΓ¡δÑ ¿½¿ »α«úαá¼¼¡δÑ ßαÑñßΓóá »«ññÑ᪬¿ ");
  878.           printf("'¼δΦ¿' ¡Ñ ¿¡ßΓ὿α«óá¡δ");
  879.                exit(1);
  880.  
  881.           }
  882.           if(arg2!=2) {
  883.           printf("ÉáºαÑΦÑ¡« ¿ß»«½∞º«óá¡¿Ñ Γ«½∞¬« ñóπσ¬½áó¿Φ¡«⌐ ");
  884.           printf("'¼δΦ¿'");
  885.                exit(1);
  886.           }
  887.      }
  888.  
  889.           ÅÑαÑñ ¿ß»«½∞º«ó᡿Ѽ  φΓ«⌐  »α«úαá¼¼δ ó ¬«¼á¡ñ¡«⌐ ßΓα«¬Ñ DOS
  890.      ß»Ñµ¿Σ¿µ¿απ⌐ΓÑ  ó¿ñÑ«αѪ¿¼,  ó  ¬«Γ«α«¼  óδ   ªÑ½áÑΓÑ   αáí«ΓáΓ∞.
  891.      Åα«úαἼᠠíπñÑΓ  ß««íΘáΓ∞ óá¼ « ¡á»αáó½Ñ¡¿¿ »ÑαѼÑΘÑ¡¿∩ "¼δΦ¿",á
  892.      ΓᬪѠ« ¡áªáΓδσ  ¬½áó¿Φáσ  "¼δΦ¿".  éñ«íá󫬠 ¬«  óßѼπ,  ¡áªáΓ¿Ñ
  893.      »αáó«⌐  ¬½áó¿Φ¿ íπñÑΓ óδºδóáΓ∞ «Γ«íαáªÑ¡¿Ñ ΓѬπΘÑ⌐ »«º¿µ¿¿ ò,  ô.
  894.      ìáªáΓ¿Ñ «íÑ¿σ ¬½áó¿Φ  ó맮óÑΓ  ºáóÑαΦÑ¡¿Ñ  »α«úαá¼¼δ.  Å«»α«íπ⌐ΓÑ
  895.      óδ»«½¡¿Γ∞  φΓπ  »α«úαá¼¼π  ó  αẽ¿τ¡δσ  ó¿ñÑ«αѪ¿áσ  ¿  «íαáΓ¿ΓÑ
  896.      ó¡¿¼á¡¿Ñ ¡á ó«º¡¿¬áεΘ¿Ñ »α¿ φΓ«¼ φΣΣѬΓδ.
  897.  
  898.  
  899.  
  900.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  901. â½áóá IX                                                    -- 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. â½áóá IX                                                    -- 17 --
  962.  
  963.  
  964.            ééÄä êìöÄÉîÇûêê æ ÅÄîÄÖ£₧ "î¢ÿê" é ÅÉÄâÉÇîîà ÉêæÄéÇìêƒ
  965.      -----------------------------------------------------------------
  966.           êΓá¬, óδ   ΓÑ»Ñα∞   ú«Γ«óδ   ¬   Γ«¼π,   τΓ«íδ   αáºαáí«ΓáΓ∞
  967.      »«ñ»α«úαá¼¼δ,  »«ºó«½∩εΘ¿Ñ  ß »«¼«Θ∞ε "¼δΦ¿" π»αáó½∩Γ∞ »α«úαá¼¼«⌐
  968.      α¿ß«óá¡¿∩. ê¡ΓÑαΣÑ⌐ß ß "¼δΦ∞ε" ¼«ªÑΓ íδΓ∞ ñ«íáó½Ñ¡ ó ßπΘÑßΓóπεΘ¿Ñ
  969.      »«ñ»α«úαá¼¼δ    π»αáó½Ñ¡¿∩,   τΓ«,   ÑßΓÑßΓóÑ¡¡«,   íπñÑΓ   í«½ÑÑ
  970.      »αÑñ»«τΓ¿Γѽ∞¡«, τѼ αáºαáí«Γ¬á ¡«óδσ »«ñ»α«úαá¼¼ ¿½¿ ¼«ñ¿Σ¿¬áµ¿∩
  971.      ßπΘÑßΓóπεΘ¿σ.
  972.            Æá¬«⌐ »πΓ∞ óδú«ñÑ¡  »αѪñÑ  óßÑú«  ΓѼ,  τΓ«  Σπ¡¬µ¿«¡á½∞¡δ
  973.      ó«º¼«ª¡«ßΓ¿  ¬½áó¿Φ  π»αáó½Ñ¡¿∩  ¬παß«α«¼  ß«σαá¡∩εΓß∩ ¡á óßÑ 100
  974.      »α«µÑ¡Γ«ó,  ¿ »«½∞º«óáΓѽ∞ ó  ¬áªñ«⌐  ¬«¡¬αÑΓ¡«⌐  ß¿Γπᵿ¿  ¼«ªÑΓ
  975.      óδíαáΓ∞   ¡á¿í«½ÑÑ   »«ñσ«ñ∩ΘÑÑ   πßΓα«⌐ßΓó«   ñ½∩  óó«ñá  ñá¡¡δσ
  976.      (¬½áó¿áΓπαá ¿½¿ "¼δΦ∞").
  977.            ÅαѪñÑ, τѼ "¼δΦ∞" íπñÑΓ ó¬½ετѡᠠ¬á¬  πßΓα«⌐ßΓó«  óó«ñá
  978.      »α«úαá¼¼π  α¿ß«óá¡¿∩,  ¡Ñ«íσ«ñ¿¼«  αáºαáí«ΓáΓ∞  ñóÑ »«ñ»α«úαá¼¼δ,
  979.      πτ¿ΓδóáεΘ¿Ñ ß»Ñµ¿Σ¿¬π "¼δΦ¿".  ÅÑαóá∩  »«ñ»α«úαἼᠠ-  wait_on()
  980.      »«ºó«½∩ÑΓ  αÑ὿º«óáΓ∞ »α«µÑßß «ª¿ñá¡¿∩ «Γ»π߬᡿∩ («ßó«í«ªñÑ¡¿∩)
  981.      ß»Ñµ¿Σ¿µ¿α«óá¡¡«⌐ ¬½áó¿Φ¿ »«½∞º«óáΓѽѼ.  Ç¡á½¿º  »«ñ«í¡«ú«  α«ñá
  982.      ¿¼ÑÑΓ óÑß∞¼á í«½∞Φ«Ñ º¡áτÑ¡¿Ñ, Γᬠ¬á¬ ß««ΓóÑΓßΓóπεΘ¿Ñ »αÑαδóá¡¿∩
  983.      úÑ¡Ñα¿απεΓß∩  »«ßΓ«∩¡¡«,  »«¬á   ¬½áó¿Φá   ¡Ñ   ¡áªáΓá.   (Äñ¡á¬«
  984.      ¡Ñ󫺼«ª¡«  «íÑß»Ñτ¿Γ∞  ΓᬫѠ ¼ú¡«óÑ¡¡«Ñ  ¡áªáΓ¿Ñ ¡á ¬½áó¿Φπ,  ó
  985.      αѺπ½∞ΓáΓÑ ¬«Γ«α«ú« ßΣ«α¼¿α«óὫß∞ íδ ½¿Φ∞ «ñ¡«  »αÑαδóá¡¿Ñ).  é«
  986.      ¼¡«ú¿σ  »«ñ»α«úαá¼¼áσ  ¡á«í«α«Γ  ó᪡«  ¿ºíѪáΓ∞ Γᬫ⌐ ß¿Γπᵿ¿ ¿
  987.      »«φΓ«¼π ó ¡¿σ ¬áªñ«Ñ ¡áªáΓ¿Ñ ¡á ¬½áó¿Φπ úÑ¡Ñα¿απÑΓ  (Γ«τ¡ÑÑ íπñÑΓ
  988.      ß¬áºáΓ∞  ¬áªÑΓß∩,  τΓ«  úÑ¡Ñα¿απÑΓ)  Γ«½∞¬« «ñ¡« »αÑαδóá¡¿Ñ ºá Γ«
  989.      óαѼ∩, »«¬á ¬½áó¿Φá ¡áªáΓá. é ß««ΓóÑΓßΓó¿¿ ß φΓ¿¼, óáΦá »α«úαá¼¼á
  990.      ñ«½ª¡á   «íαáΘáΓ∞ß∩  ¬  Σπ¡µ¿¿  wait_on(),  »αÑñßΓáó½Ñ¡¡«⌐  ¡¿ªÑ,
  991.      ¡Ñ»«ßαÑñßΓóÑ¡¡« »ÑαÑñ óδ»«½¡Ñ¡¿Ñ¼  ¿  »«ß½Ñ  Γ«ú«,  ¬«úñá  ¡áªáΓá
  992.      ß««ΓóÑΓßΓóπεΘá∩ ¬½áó¿Φá.
  993.  
  994.  
  995.      /* é«ºóαáΘáÑΓ 1, Ñß½¿ ß»Ñµ¿Σ¿µ¿α«óá¡¡á∩ ¬½áó¿Φá ¡Ñ ¡áªáΓá */
  996.  
  997.      void wait_on(button)
  998.      int button;
  999.      {
  1000.           if(button== LEFTB)
  1001.                while(leftb_pressed());
  1002.           else
  1003.                while(rightb_pressed());
  1004.      }
  1005.  
  1006.           îá¬α«ßδ LEFTB  ¿ RIGHTB,  »αÑñßΓáó½Ñ¡¡δÑ ¡¿ªÑ,  ¿ß»«½∞ºπεΓß∩
  1007.      »α¿ «íαáΘÑ¡¿¿ ¬ wait_on().
  1008.  
  1009.  
  1010.      #define LEFTB     1
  1011.      #define RIGHTB    2
  1012.  
  1013.           éΓ«α«⌐ ¡Ñ«íσ«ñ¿¼«⌐  óá¼ Σπ¡¬µ¿Ñ⌐ ∩ó½∩ÑΓß∩ mouse_menu().  ¥Γá
  1014.      Σπ¡¬µ¿∩ «Γ«íαáªáÑΓ «ñ¡«ßΓα«τ¡«Ñ  ¼Ñ¡ε  ¿  »«ºó«½∩ÑΓ  »«½∞º«óáΓѽε
  1015.      «ßπΘÑßΓó½∩Γ∞  óδí«α ¿º ¡Ñú« φ½Ñ¼Ñ¡Γ«ó »πΓѼ »ÑαѼÑΘÑ¡¿∩ "¼δΦ¿" ¡á
  1016.      »½«ß¬«ßΓ¿ (¿, ß««ΓóÑΓßΓóÑ¡¡«, ¬παß«αá "¼δΦ¿" »« φ¬αá¡π) ¿ ¡áªáΓ¿∩
  1017.      ½εí«⌐  ¬½áó¿Φ¿  "¼δΦ¿".  ¥Γá  Σπ¡¬µ¿∩  ¼«ªÑΓ  αáí«ΓáΓ∞ Γ«½∞¬« ó 4
  1018.  
  1019.  
  1020.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  1021. â½áóá IX                                                    -- 18 --
  1022.  
  1023.  
  1024.      úαáΣ¿τÑ߬«¼ αѪ¿¼Ñ. öπ¡¬µ¿¿ »ÑαÑñáÑΓß∩ ñóπ¼Ñα¡δ⌐ ¼áßß¿ó ß¿¼ó«½«ó,
  1025.      ¬«Γ«αδ⌐   ß«ñÑαª¿Γ   φ½Ñ¼Ñ¡Γδ   ¼Ñ¡ε   (¬«Γ«αδÑ   ¼«ªÑΓ   óδíαáΓ∞
  1026.      »«½∞º«óáΓѽ∞),  º¡áτÑ¡¿Ñ ¬áªñ«ú« φ½Ñ¼Ñ¡Γᠼѡε (Ñú« ¬«ñ),á  ΓᬪÑ
  1027.      ¬««αñ¿¡áΓδ  ò  ¿  ô  «Γ«íαáªÑ¡¿∩ ¼Ñ¡ε ¡á φ¬αá¡Ñ.  îáßß¿ó ß¿¼ó«½«ó
  1028.      «»αÑñѽ∩ÑΓ  ¼á¬ß¿¼á½∞¡πε  ñ½¿¡π  ¬áªñ«ú«  φ½Ñ¼Ñ¡Γá  ¼Ñ¡ε   ó   19
  1029.      ß¿¼ó«½«ó.   öπ¡¬µ¿∩   ó«ºóαáΘáÑΓ   ó  ¬áτÑßΓóÑ  αѺπ½∞ΓáΓá  ¡«¼Ñα
  1030.      óδíαá¡¡«ú« »«½∞º«óáΓѽѼ φ½Ñ¼Ñ¡Γᠼѡε, ¡áτ¿¡á∩ ß 0, ¿½¿ -1, Ñß½¿
  1031.      »«½∞º«óáΓѽ∞  ¡Ñ óδíαá½ ¡¿ «ñ¿¡ ¿º φ½Ñ¼Ñ¡Γ«ó ¼Ñ¡ε.  è«úñá Σπ¡¬µ¿∩
  1032.      ¡áτ¿¡áÑΓ ßó«ε αáí«Γπ,  Γ« «¡á ó¡áτá½Ñ óδτ¿ß½∩ÑΓ ñ½¿¡π ó  »¿¬ßѽáσ
  1033.      (φ½Ñ¼Ñ¡Γáσ αáßΓαá) ¬áªñ«ú« φ½Ñ¼Ñ¡Γᠼѡε,  »«ß½Ñ τÑú« αѺÑαó¿απÑΓ
  1034.      »α«ßΓαá¡ßΓó« »« ¡áτá½∞¡«⌐ ¿ ¬«¡Ñτ¡«⌐  Γ«τ¬Ñ  αáßΓαá  ñ½∩  ¬áªñ«ú«
  1035.      φ½Ñ¼Ñ¡Γá  ¼Ñ¡ε,  «ñ¡«óαѼѡ¡«  ºá»«¼¿¡á∩ φΓπ ¿¡Σ«α¼áµ¿ε ó ¼áßß¿óÑ
  1036.      len. (é τÑΓóÑαΓ«¼ úαáΣ¿τÑ߬«¼ αѪ¿¼Ñ ¬áªñδ⌐ ß¿¼ó«½ ¿¼ÑÑΓ óδß«Γπ ó
  1037.      8   Γ«τѬ  αáßΓαá  ¿  Φ¿α¿¡π  ó  16  Γ«τѬ  αáßΓαá.)  Å«ß½Ñ  φΓ¿σ
  1038.      óδτ¿ß½Ñ¡¿⌐, Σπ¡¬µ¿∩ »ÑαÑσ«ñ¿Γ ó ß«ßΓ«∩¡¿Ñ «ª¿ñáÑ¡¿∩ »αÑαδóá¡¿∩ «Γ
  1039.      ¬½áó¿Φ  "¼δΦ¿".  Åα¿  φΓ«¼  «ßπΘÑßΓó½∩ÑΓß∩  á¡á½¿º ¡áªáΓá ¿½¿ ¡ÑΓ
  1040.      ¬½áó¿Φá "¼δΦ¿" ó ¼«¼Ñ¡Γ ¡áσ«ªñÑ¡¿∩ ÑÑ ¬παß«αá ó «í½áßΓ¿  ¼Ñ¡ε, ¿,
  1041.      Ñß½¿  ñá,  Γ« ó ¼ÑßΓÑ αáß»«½«ªÑ¡¿∩ ¬á¬«ú« φ½Ñ¼Ñ¡Γᠼѡε.  öπ¡¬µ¿∩
  1042.      mouse_menu() »α¿óÑñѡᠡ¿ªÑ.
  1043.  
  1044.  
  1045.      /* ÄΓ«íαáªáÑΓ «ñ¡«ßΓα«τ¡«Ñ ¼Ñ¡ε ñ½∩ "¼δΦ¿" ¿ ó«ºóαáΘáÑΓ
  1046.         ¬«ñ óδíαá¡¡«ú« »«½∞º«óáΓѽѼ φ½Ñ¼Ñ¡Γá ¼Ñ¡ε          */
  1047.  
  1048.      mouse_menu(count, item, x, y)
  1049.      int count;           /* ¬«½¿τÑßΓó« φ½Ñ¼Ñ¡Γ«ó ¼Ñ¡ε */
  1050.      char item[][20];      /* φ½Ñ¼Ñ¡Γδ ¼Ñ¡ε */
  1051.      int x, y;           /* »«º¿µ¿¿ «Γ«íαáªÑ¡¿∩ */
  1052.      {
  1053.           int i, len[MENU_MAX][2], t;
  1054.           int mousex, mousey;
  1055.  
  1056.           goto_xy(x, y);
  1057.           t = 0;
  1058.           for(i=0; i<count; i++) {
  1059.                printf("%s   ", item[i]);
  1060.                len[i][0] = t;
  1061.                /* ¬áªñδ⌐ ß¿¼ó«½ ¿¼ÑÑΓ Φ¿α¿¡π ó 16 Γ«τѬ αáßΓαá */
  1062.                len[i][1] = t + strlen(item[i])*16;
  1063.                t = len[i][1] + 32; /* ñ«íáó½∩ÑΓß∩ ñóá »α«íѽᠼѪñπ
  1064.                                    φ½Ñ¼Ñ¡ΓἿ ¼Ñ¡ε */
  1065.           }
  1066.  
  1067.           /* «ª¿ñá¡¿Ñ óδí«αá »«½∞º«óáΓѽѼ φ½Ñ¼Ñ¡Γᠼѡε */
  1068.           do {
  1069.                if(rightb_pressed() || leftb_pressed()) break;
  1070.           } while(!kbhit());
  1071.           /* «ª¿ñá¡¿Ñ ¡áªáΓ¿∩ ¬½áó¿Φ¿ */
  1072.           while(rightb_pressed() || leftb_pressed());
  1073.  
  1074.           /* »«½πτ¿Γ∞ ΓѬπΘπε »«º¿µ¿ε ¬παß«αá "¼δΦ¿" */
  1075.           mouse_position(&mousex, &mousey);
  1076.  
  1077.           /* á¡á½¿º¿απÑΓß∩, ¡áσ«ñ¿Γß∩ ½¿ ¬παß«α ó »αÑñѽáσ ¼Ñ¡ε */
  1078.  
  1079.  
  1080.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  1081. â½áóá IX                                                    -- 19 --
  1082.  
  1083.  
  1084.                if(mousey>=0 && mousey<8)  /* ß¿¼ó«½ ¿¼ÑÑΓ óδß«Γπ
  1085.                                    8 Γ«τѬ αáßΓαá */
  1086.                     for(i=0; i<count; i++) {
  1087.                          if(mousex>len[i][0] && mousex<len[i][1])
  1088.                               return i;
  1089.                     }
  1090.                return i;
  1091.           }
  1092.            returtn -1; /* óδí«α ¿º ¼Ñ¡ε ¡Ñ «ßπΘÑßΓó½∩½ß∩ */
  1093.        }
  1094.  
  1095.  
  1096.  
  1097.  
  1098.  
  1099.  
  1100.  
  1101.  
  1102.  
  1103.  
  1104.  
  1105.  
  1106.  
  1107.  
  1108.  
  1109.  
  1110.  
  1111.  
  1112.  
  1113.  
  1114.  
  1115.  
  1116.  
  1117.  
  1118.  
  1119.  
  1120.  
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126.  
  1127.  
  1128.  
  1129.  
  1130.  
  1131.  
  1132.  
  1133.  
  1134.  
  1135.  
  1136.  
  1137.  
  1138.  
  1139.  
  1140.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  1141. â½áóá IX                                                    -- 20 --
  1142.  
  1143.  
  1144.                        ÄæìÄéìÄë ûêèï ÉÇüÄÆ¢ ÅÉÄâÉÇîî¢
  1145.      -----------------------------------------------------------------
  1146.  
  1147.           é «Γ½¿τ¿Ñ  «Γ  óßÑ⌐  «ßΓá½∞¡«⌐  τáßΓ¿  »α«úαá¼¼δ  α¿ß«óá¡¿∩,
  1148.      Σαáú¼Ñ¡Γ  Σπ¡¬µ¿¿   main()   »αÑΓÑα»Ñ½   ¡á¿í«½ÑÑ   ºÑ¡áτ¿Γѽ∞¡δÑ
  1149.      ¿º¼Ñ¡Ñ¡¿∩.  é  Σπ¡¬µ¿ε  main() ñ«íáó½Ñ¡δ,  ó τáßΓ¡«ßΓ¿,  Σπ¡¬µ¿¿,
  1150.      «íÑß»Ñτ¿óáεΘ¿Ñ ¿¡ΓÑαΣÑ⌐óß ß ¼δΦ∞ε.  ÆÑ¬ßΓ Σπ¡¬µ¿¿  main  »α¿óÑñÑ¡
  1151.      ¡¿ªÑ.
  1152.  
  1153.      main()
  1154.      {
  1155.           char done=0;
  1156.  
  1157.           mode(4); /* »ÑαѬ½ετáΓѽ∞ ó 4 úαáΣ¿τÑ߬¿⌐ αѪ¿¼ ñ½∩
  1158.                     áñá»ΓÑα«ó CGA/EGA  */
  1159.           palette(0); /* »á½¿Γαá 0  */
  1160.           mouse_reset(); /* ¿¡ßΓá½∩µ¿∩ "¼δΦ¿" */
  1161.  
  1162.           xhairs(x, y); /* πßΓá¡«ó¿Γ∞ úαáΣ¿τÑ߬¿⌐ ¬παß«α */
  1163.           set_mouse_position(y*2, x); /* πßΓá¡«ó¿Γ∞ ¡áτá½∞¡πε »«º¿µ¿ε
  1164.                                          ¬παß«αá "¼δΦ¿" */
  1165.           do {
  1166.                /* »α«ß¼áΓα¿óáÑΓß∩, »ÑαѼÑΘá½áß∞ ½¿ "¼δΦ∞" */
  1167.                mouse_motion(&deltax, &deltay);
  1168.                if(deltax || deltay) read_mouse();
  1169.                /* »α«óÑα¬á ¡áªáΓ¿∩ ¬½áó¿Φ¿ */
  1170.                if(leftb_pressed() || rightb_pressed())
  1171.                     read_mouse();
  1172.                if(kbhit()) {
  1173.                     done = read_kb();
  1174.                /* »ÑαѼÑΘÑ¡¿Ñ "¼δΦ¿" ó ß««ΓóÑΓßΓó¿Ñ¼ ß αẼÑΘÑ¡¿Ñ¼
  1175.                     úαáΣ¿τÑ߬«ú« ¬παß«αá */
  1176.                     set_mouse_position(y*2, x);
  1177.                }
  1178.           } while (!done);
  1179.           mode(2);
  1180.      }
  1181.  
  1182.  
  1183.  
  1184.           èᬠóδ ¼«ªÑΓÑ ó¿ñÑΓ∞, Σπ¡¬µ¿¿ main(), ºá ¿ß¬½ετÑ¡¿Ñ¼ Σπ¡¬µ¿¿
  1185.      done(),  ¡Ñ  «»Ñα¿απεΓ  ½«¬á½∞¡δ¼¿ »ÑαѼѡ¡δ¼¿.  é¼ÑßΓ« φΓ«ú« óßÑ
  1186.      π»αáó½∩εΘ¿Ñ ¿  óδτ¿ß½∩ѼδÑ  »ÑαѼѡ¡δÑ,  ¡Ñ«íσ«ñ¿¼δÑ  ñ½∩  αáí«Γδ
  1187.      »α«úαá¼¼δ,  ∩ó½∩εΓß∩  ú½«íá½∞¡δ¼¿,  τΓ«  »«ºó«½∩ÑΓ  ¬á¬  Σπ¡¬µ¿∩¼
  1188.      αáí«Γδ ß ¬½áó¿áΓπα«⌐,  Γᬠ¿ Σπ¡¬µ¿∩¼ αáí«Γδ ß "¼δΦ∞ε", ¿ºíáó¿Γß∩
  1189.      «Γ  ñ½¿¡¡«ú«  ß»¿ß¬á  áαúπ¼Ñ¡Γ«ó  »α¿  «íαáΘÑ¡¿¿  ¬ ¡¿¼,  á ΓᬪÑ
  1190.      π»α«ßΓ¿Γ∞ ¿σ ¿ß»«½∞º«óá¡¿Ñ ó »α«úαá¼¼Ñ.  èᬠ óδ  ó¿ñ¿ΓÑ,  á¡á½¿º
  1191.      Γ¿»á  »αÑαδóá¡¿∩  («Γ  ¬½áó¿áΓπαδ  ¿½¿  «Γ "¼δΦ¿") «ßπΘÑßΓó½∩ÑΓß∩
  1192.      ó¡πΓα¿  µ¿¬½á.  Åα¿  »«ßΓπ»½Ñ¡¿¿  »αÑαδóá¡¿∩  «Γ  φΓ¿σ  πßΓα«⌐ßΓó
  1193.      óδºδóáεΓß∩ ß««ΓóÑΓßΓóπεΘ¿Ñ Σπ¡¬µ¿¿.  çá¼ÑΓ∞ΓÑ,  τΓ« ¬παß«α "¼δΦ¿"
  1194.      »α¿  φΓ«¼  ¡Ñ  ó䬽ετáÑΓß∩.  éºá¼Ñ¡  φΓ«ú«  ó«  óαѼ∩  óδ»«½¡Ñ¡¿∩
  1195.      α¿ßπεΘÑ⌐  τáßΓ¿  »α«úαá¼¼δ  úαáΣ¿τÑ߬¿⌐  ¬παß«α  ¿ß»«½∞ºπÑΓß∩ ñ½∩
  1196.      ¿¡ñ¿¬áµ¿¿ ΓѬπΘÑ⌐ »«º¿µ¿¿ ¡á φ¬αá¡Ñ. èπαß«α "¼δΦ¿" á¬Γ¿ó¿º¿απÑΓß∩
  1197.      ½¿Φ∞ »α¿ αáí«ΓÑ ß «ñ¡«ßΓα«τ¡δ¼ ¼Ñ¡ε.
  1198.  
  1199.  
  1200.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  1201. â½áóá IX                                                    -- 21 --
  1202.  
  1203.  
  1204.  
  1205.           öπ¡¬µ¿∩ read_kb(),  ¬«Γ«αá∩  «íÑß»Ñτ¿óáÑΓ  »α«µÑßß  óó«ñá  ß
  1206.      ¬½áó¿áΓπαδ, »αÑñßΓáó½Ñ¡á ¡¿ªÑ. é «ß¡«ó¡«¼ «¡á ¡¿τѼ ¡Ñ «Γ½¿τáÑΓß∩
  1207.      «Γ «α¿ú¿¡á½∞¡«⌐ óÑαß¿¿ ¿ óδ»«½¡∩ÑΓ ñ«ó«½∞¡« º¡áτ¿Γѽ∞¡δÑ »« ßó«Ñ⌐
  1208.      α«½¿ Σπ¡¬µ¿¿.
  1209.  
  1210.      /* ùΓÑ¡¿Ñ ¿ «íαáí«Γ¬á ¬«¼á¡ñ, óó«ñ¿¼δσ ß ¬½áó¿áΓπαδ */
  1211.  
  1212.      read_kb()
  1213.      {
  1214.           union k{
  1215.                char c[2];
  1216.                int i;
  1217.           } key;
  1218.  
  1219.           key.i = bioskey(0);
  1220.           xhairs(x, y); /* ßΓÑαÑΓ∞ úαáΣ¿τÑ߬¿⌐ ¬παß«α */
  1221.           if(!key.c[0]) switch(key.c[1]){
  1222.                case 75:  /* ó½Ñó« */
  1223.                     if(on_flag) line(x, y, x, y-inc, cc);
  1224.                     y -= inc;
  1225.                     break;
  1226.                case 77:  /* ó»αáó« */
  1227.                     if(on_flag) line(x, y, x, y+inc, cc);
  1228.                     y += inc;
  1229.                     break;
  1230.                case 72:  /* óóÑασ */
  1231.                     if(on_flag) line(x, y, x-inc, y, cc);
  1232.                     x -= inc;
  1233.                     break;
  1234.                case 80:  /* ó¡¿º */
  1235.                     if(on_flag) line(x, y, x+inc, y, cc);
  1236.                     x += inc;
  1237.                     break;
  1238.                case 71:  /* ó½Ñó« óóÑασ */
  1239.                     if(on_flag) line(x, y, x-inc, y-inc, cc);
  1240.                     y -= inc; x -= inc;
  1241.                     break;
  1242.                case 73:  /* ó»αáó« óóÑασ */
  1243.                     if(on_flag) line(x, y, x-inc, y+inc, cc);
  1244.                     y += inc; x -= inc;
  1245.                     break;
  1246.                case 79: /* ó½Ñó« ó¡¿º */
  1247.                     if(on_flag) line(x, y, x+inc, y-inc, cc);
  1248.                     y -= inc; x += inc;
  1249.                     break;
  1250.                case 81:  /* ó»αáó« ó¡¿º */
  1251.                     if(on_flag) line(x, y, x+inc, y+inc, cc);
  1252.                     y += inc; x += inc;
  1253.                     break;
  1254.                case 59: inc = 1; /* F1 - π¼Ñ¡∞Φ¿Γ∞ ß¬«α«ßΓ∞ */
  1255.                     break;
  1256.                case 60: inc = 5; /* F2 - πóѽ¿τ¿Γ∞ ß¬«α«ßΓ∞ */
  1257.                     break;
  1258.  
  1259.  
  1260.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  1261. â½áóá IX                                                    -- 22 --
  1262.  
  1263.  
  1264.           }
  1265.           else switch(tolower(key.c[0])) {
  1266.                case 'o': on_flag = !on_flag; /* »ÑαѬ½ετáΓÑ«½∞
  1267.                                    Φáí½«¡á µóÑΓá */
  1268.                     break;
  1269.                case '1': cc = 1; /* µóÑΓ 1 */
  1270.                     break;
  1271.                case '2': cc = 2; /* µóÑΓ 2 */
  1272.                     break;
  1273.                case '3': cc = 3; /* µóÑΓ 3 */
  1274.                     break;
  1275.                case '0': cc = 0; /* µóÑΓ 0 */
  1276.                     break;
  1277.                case 'b': box(startx, starty, endx, endy, cc);
  1278.                     break;
  1279.                case 'f': fill_box(startx, starty, endx, endy, cc);
  1280.                     break;
  1281.                case 'l': line(startx, starty, endx, endy, cc);
  1282.                     break;
  1283.                case 'c': circle(startx, starty, endy-starty, cc);
  1284.                     break;
  1285.                case 'h': fill_circle(startx, starty, endy-starty, cc);
  1286.                     break;
  1287.                case 's': save_pic();
  1288.                     break;
  1289.                case 'r': load_pic();
  1290.                     break;
  1291.                case 'm': /* »ÑαѼÑßΓ¿Γ∞ «í½áßΓ∞ */
  1292.                     move(startx, starty, endx, endy, x, y);
  1293.                     break;
  1294.                case 'x': /* ¬«»¿α«óáΓ∞ «í½áßΓ∞ */
  1295.                     copy(startx, starty, endx, endy, x, y);
  1296.                     break;
  1297.                case 'd': /* «»αÑñѽ¿Γ∞ «íΩÑ¬Γ ñ½∩ óαáΘÑ¡¿∩ */
  1298.                     sides = define_object(object, x, y);
  1299.                     break;
  1300.                case 'a': /* óαáΘáΓ∞ «íΩÑ¬Γ */
  1301.                     rotate_object(object, 0.05, x, y, sides);
  1302.                     break;
  1303.                case '\r': /* πßΓá¡«ó¿Γ∞ ¬«¡Ñτ¡πε Γ«τ¬π ñ½∩ ½¿¡¿¿,
  1304.                              «¬απª¡«ßΓ¿ ¿½¿ »α∩¼«πú«½∞¡¿¬á */
  1305.                     if(first_point) {
  1306.                          startx = x; starty = y;
  1307.                     }
  1308.                     else {
  1309.                          endx = x; endy = y;
  1310.                     }
  1311.                     first_point = !first_point;
  1312.                     break;
  1313.                case 'p': pal_num = pal_num==1 ? 2:1;
  1314.                     palette(pal_num);
  1315.           }
  1316.           /* ó«ßßΓá¡«ó¿Γ∞ ¿º«íαáªÑ¡¿Ñ úαáΣ¿τÑ߬«ú« ¬παß«αá */
  1317.           xhairs(x, y);
  1318.  
  1319.  
  1320.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  1321. â½áóá IX                                                    -- 23 --
  1322.  
  1323.  
  1324.           if(tolowel(key.c[0])=='q') return 1;
  1325.           return 0;
  1326.      }
  1327.  
  1328.           öπ¡¬µ¿∩ read_mouse(),  ¬«Γ«αá∩ «íαáíáΓδóáÑΓ óó«ñ «Γ  "¼δΦ¿",
  1329.      »αÑñßΓáó½Ñ¡á ¡¿ªÑ.
  1330.  
  1331.  
  1332.      /* ùΓÑ¡¿Ñ ¿ «íαáí«Γ¬á ¬«¼á¡ñ, óó«ñ¿¼δσ ß »«¼«Θ∞ε "¼δΦ¿" */
  1333.  
  1334.      read_mouse()
  1335.      {
  1336.           int oldx, oldy;
  1337.           int choice;
  1338.  
  1339.           oldx = x; oldy = y;
  1340.           xhairs(x, y); /* ßΓÑαÑΓ∞ ß ΓѬπΘÑ⌐ »«º¿µ¿¿ */
  1341.  
  1342.           /* ¡áªáΓδ «íÑ ¬½áó¿Φ¿ ñ½∩ á¬Γ¿ó¿ºáµ¿¿ ¼Ñ¡ε */
  1343.           if(rightb_pressed() && leftb_pressed()) {
  1344.                choice = menu(); /* »«½πτ¿Γ∞ αѺπ½∞ΓáΓ óδí«αá
  1345.                                    ¿º ¼Ñ¡ε */
  1346.                switch(choice) {
  1347.                 case 0: box(startx, starty, endx, endy, cc);
  1348.                      break;
  1349.                 case 1: circle(startx, starty, endy-starty, cc);
  1350.                      break;
  1351.                 case 2: line(startx, starty, endx, endy, cc);
  1352.                      break;
  1353.                 case 3: fill_box(startx, starty, endx, endy, cc);
  1354.                      break;
  1355.                 case 4: fill_circle(startx, starty, endy-starty, cc);
  1356.                      break;
  1357.                }
  1358.           }
  1359.  
  1360.           /* »αáóá∩ ¬½áó¿Φá «»αÑñѽ∩ÑΓ ¬«¡Ñτ¡πε Γ«τ¬π Σ¿úπαδ */
  1361.  
  1362.           else if(rightb_pressed()) {
  1363.                if(first_point) {
  1364.                     startx = x; starty = y;
  1365.                }
  1366.                else {
  1367.                     endx = x; endy = y;
  1368.                }
  1369.                first_point = !first_point;
  1370.                wait_on(RIGHTB); /* «ª¿ñá¡¿Ñ «ßó«í«ªñÑ¡¿∩ ¬½áó¿Φ¿ */
  1371.           }
  1372.  
  1373.           if(deltax || deltay) {
  1374.                mouse_position(&y, &x);
  1375.                y = y / 2; /* ¡«α¼á½¿ºáµ¿∩ ¬««αñ¿¡áΓ ó¿αΓπá½∞¡«ú«
  1376.                          φ¬αá¡á */
  1377.                /* ¡áª¼¿ΓÑ ½Ñóπε ¬½áó¿Φπ ñ½∩ α¿ß«óá¡¿∩ */
  1378.  
  1379.  
  1380.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  1381. â½áóá IX                                                    -- 24 --
  1382.  
  1383.  
  1384.                if(leftb_pressed()) mouse_on_flag = 1;
  1385.                else mouse_on_flag = 0;
  1386.                if(mouse_on_flag) line(oldx, oldy, x, y, cc);
  1387.           }
  1388.           /* ó«ßßΓá¡«ó¿Γ∞ ¿º«íαáªÑ¡¿Ñ úαáΣ¿τÑ߬«ú« ¬παß«αá */
  1389.           xhairs(x, y);
  1390.      }
  1391.  
  1392.           öπ¡¬µ¿∩ read_mouse() αáí«ΓáÑΓ ß½ÑñπεΘ¿¼  «íαẫ¼. é«-»Ñαóδσ,
  1393.      á¡á½¿º¿απÑΓß∩ Σá¬Γ «ñ¡«óαѼѡ¡«ú« ¡áªáΓ¿∩ ñóπ󠬽áó¿Φ.  àß½¿ Σá¬Γ
  1394.      ¿¼ÑÑΓ ¼ÑßΓ«,  Γ« »πΓѼ «íαáΘÑ¡¿∩ ¬ Σπ¡¬µ¿¿ menu()  á¬Γ¿ó¿º¿απÑΓß∩
  1395.      ¼Ñ¡ε,  ¬«Γ«α«Ñ  πßΓá¡áó½¿óáÑΓß∩  ¿  π»αáó½∩ÑΓß∩ »πΓѼ «íαáΘÑ¡¿∩ ¬
  1396.      mouse_menu().  àß½¿  »«½∞º«óáΓѽ∞  «ßπΘÑßΓó¿½  óδí«α  «ñ¡«ú«   ¿º
  1397.      φ½Ñ¼Ñ¡Γ«ó ¼Ñ¡ε, Γ« ¿¡¿µ¿¿απÑΓß∩ ß««ΓóÑΓßΓóπεΘÑÑ ñÑ⌐ßΓó¿Ñ. Æá¬ ¬á¬
  1398.      ó ß«ßΓáó  ΓѬπΘÑú«  ¼Ñ¡ε  óσ«ñ∩Γ  αẽ¿τ¡δÑ  Σ¿úπαδ,  ¿º  ¬«Γ«αδσ
  1399.      ß¬½áñδóáÑΓß∩ ¿º«íαáªÑ¡¿Ñ,  - »α∩¼«πú«½∞¡¿¬¿,  «¬απª¡«ßΓ¿, ½¿¡¿¿ ¿
  1400.      ñÑ⌐ßΓó¿∩,  »«ºó«½∩εΘ¿Ñ,  ¡á»α¿¼Ñα,  ºá¬αáΦ¿óáΓ∞ φΓ¿ Σ¿úπαδ,  Γ« ß
  1401.      »«¼«Θ∞ε  "¼δΦ¿" óδ ¼«ªÑΓÑ óδíαáΓ∞ «ñ¿¡ ¿º φΓ¿σ φ½Ñ¼Ñ¡Γ«ó íπñπΘÑú«
  1402.      α¿ßπ¡¬á ¿½¿ ñÑ⌐ßΓó¿Ñ.  (óδ ¼«ªÑΓÑ ΓᬪѠó¬½ετ¿Γ∞ ó ¼Ñ¡ε ßαÑñßΓóá,
  1403.      »«ºó«½∩εΘ¿Ñ »«½∞º«óáΓѽε óδí¿αáΓ∞ µóÑΓá ¿ πßΓá¡áó½¿óáΓ∞ »á½¿Γαπ).
  1404.  
  1405.           Åαáóá∩ ¬½áó¿Φá  ¿ß»«½∞ºπÑΓß∩  ñ½∩ «»αÑñѽѡ¿∩ ¬«¡Ñτ¡«⌐ Γ«τ¬¿
  1406.      ½¿¡¿⌐,  »α∩¼«πú«½∞¡¿¬«ó ¿ «¬απª¡«ßΓÑ⌐,  Γ«τ¡« ΓᬠªÑ, ¬á¬ ¬½áó¿Φá
  1407.      <ééÄä>  ¿ß»«½∞ºπÑΓß∩  ñ½∩ φΓ¿σ ªÑ µÑ½Ñ⌐ »α¿ αáí«ΓÑ ß ¬½áó¿áΓπα«⌐.
  1408.      ôßΓá¡«ó¿ΓÑ "¼δΦ∞" ó  »Ñαó«⌐  ¬«¡Ñτ¡«⌐  Γ«τ¬Ñ  «íΩѬΓá  ¿  ¡áª¼¿ΓÑ
  1409.      »αáóπε ¬½áó¿Φπ. çáΓѼ »ÑαѼÑßΓ¿ΓÑ "¼δΦ∞" ó« óΓ«απε ¬«¡Ñτ¡πε Γ«τ¬π
  1410.      ¿ «»∩Γ∞ ¡áª¼¿ΓÑ ¬½áó¿Φπ. Æá¬ óδ »«½πτ¿ΓÑ ¿º«íαáªÑ¡¿Ñ ¿¡ΓÑαÑßπεΘÑ⌐
  1411.      óáß Σ¿úπαδ.
  1412.  
  1413.           è«úñá ½Ñóá∩ ¬½áó¿Φá ¡Ñ ¡áªáΓá,  "¼δΦ∞" ¼«ªÑΓ »ÑαѼÑΘáΓ∞ß∩ »«
  1414.      φ¬αá¡π,  ¡Ñ «ßΓáó½∩∩ ºá  ß«í«⌐  ¡¿¬á¬«ú«  ß½Ññá.  ¥Γ«  »α«¿ßσ«ñ¿Γ
  1415.      »«Γ«¼π,  τΓ«  »«  π¼«½τá¡¿ε  »Ñα« "¼δΦ¿" ßτ¿ΓáÑΓß∩ »«ñ¡∩Γδ¼.  ä½∩
  1416.      Γ«ú«,  τΓ«íδ »«½πτ¿Γ∞ ó«º¼«ª¡«ßΓ∞ "»¿ßáΓ∞ ¼δΦ∞ε" («»πßΓ¿Γ∞ »Ñα«),
  1417.      ¡Ñ«íσ«ñ¿¼«  ¡áªáΓ∞  ½Ñóπε  ¬½áó¿Φπ.  Å«¬á  ¬½áó¿Φá  ¡áªáΓá,  »Ñα«
  1418.      ßτ¿ΓáÑΓß∩ «»πΘÑ¡¡δ¼.
  1419.  
  1420.           é ¬«¡µÑ ¬«¡µ«ó,  Ñß½¿ "¼δΦ∞" ¿º¼Ñ¡¿½á ßó«¿ ¬««αñ¿¡áΓδ, íπñπΓ
  1421.      «í¡«ó½Ñ¡δ º¡áτÑ¡¿∩ ßτÑΓτ¿¬«ó X ¿ Y.
  1422.  
  1423.           öπ¡¬µ¿∩ menu(),    »αÑñßΓáó½Ñ¡¡á∩   ¡¿ªÑ,   ¿ß»«½∞ºπÑΓ   ñ½∩
  1424.      πßΓᡫ󬿠 ¿  π»αáó½Ñ¡¿∩  ¼Ñ¡ε  Σπ¡¬µ¿ε  mouse_menu(),  «»¿ßá¡¡πε
  1425.      αá¡ÑÑ.
  1426.  
  1427.      /*  ÄΓ«íαáªÑ¡¿Ñ ¼Ñ¡ε */
  1428.      menu()
  1429.      {
  1430.           register int i, j;
  1431.           char far *ptr = (char far *) 0xB8000000; /* ô¬áºáΓѽ∞ ¡á
  1432.                                                        CGA-»á¼∩Γ∞ */
  1433.           char far *temp;
  1434.           unsigned char buf[14][80]; /* ñ½∩ σαá¡Ñ¡¿∩ ß«ñÑন¼«ú«
  1435.                                         φ¬αá¡á */
  1436.           int x, y, choice;
  1437.           char items[][20] = {
  1438.  
  1439.  
  1440.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  1441. â½áóá IX                                                    -- 25 --
  1442.  
  1443.  
  1444.                "BOX",
  1445.                "CIRCLE",
  1446.                "LINE",
  1447.                "FILL BOX",
  1448.                "FILL CIRCLE"
  1449.           };
  1450.  
  1451.           temp = ptr;
  1452.           /* ß«σαá¡Ñ¡¿Ñ óÑασ¡Ñ⌐ τáßΓ¿ ΓѬπΘÑú« φ¬αá¡á */
  1453.           for(i=0; i<14; i++)
  1454.                for(j=0; j<80; j+=2) {
  1455.                     buf[i][j] = *temp; /* τÑΓ¡δ⌐ íá⌐Γ */
  1456.                     buf[i][j+1] = *(temp+8152); /* ¡ÑτÑΓ¡δ⌐ íá⌐Γ */
  1457.                     *temp = 0; *(temp+8152) = 0; /* «τ¿ßΓ¬á óÑασ¡Ñ⌐
  1458.                                                   τáßΓ¿ φ¬αá¡á */
  1459.                     temp++;
  1460.                }
  1461.  
  1462.           goto_xy(0, 0);
  1463.           /* «ª¿ñá¡¿Ñ, ¬«Γ«α«Ñ íπñÑΓ »αÑαóá¡« ó αѺπ½∞ΓáΓÑ ¡áªáΓ¿∩ ¡á
  1464.              ¬½áó¿Φπ */
  1465.           while(rightb_pressed() || leftb_pressed());
  1466.  
  1467.           cursor_on();
  1468.  
  1469.           choice = mouse_menu(5, items, 0, 0);
  1470.  
  1471.           cursor_off();
  1472.           temp = ptr;
  1473.           /* ó«ßßΓá¡«ó½Ñ¡¿Ñ ¿º«íαáªÑ¡¿∩ óÑασ¡Ñ⌐ τáßΓ¿ φ¬αá¡á */
  1474.           for(i=0; i<14; i++)
  1475.                for(j=0; j<80; j+=2) {
  1476.                     *temp = buf[i][j];
  1477.                     *(temp+8152) = buf[i][j+1];
  1478.                     temp++;
  1479.                }
  1480.           return choice;
  1481.      }
  1482.  
  1483.           é »α«µÑßßÑ αáí«Γδ Σπ¡¬µ¿∩ »αѪñÑ óßÑú« ß«σαá¡∩ÑΓ ¿º«íαáªÑ¡¿Ñ
  1484.      óÑασ¡Ñ⌐ τáßΓ¿  ΓѬπΘÑú«  φ¬αá¡á,  ¡Ñ  «ª¿ñá∩  ¡áªáΓ¿∩  ¬á¬«⌐-½¿í«
  1485.      ¬½áó¿Φ¿.  çáΓѼ  ß½ÑñπÑΓ "ó¬½ετÑ¡¿Ñ" ¬παß«αá "¼δΦ¿" ¿ «íαáΘÑ¡¿Ñ ¬
  1486.      Σπ¡¬µ¿¿ mouse_menu(). Å«ß½Ñ »ÑαÑñáτ¿ π»αáó½Ñ¡¿∩ «Γ Σπ¡¬µ¿¿ mouse_
  1487.      menu()    ¬παß«α    ó¬½ετáÑΓß∩,    ó«ßßΓá¡áó½¿óáÑΓß∩   »αÑñδñπΘÑÑ
  1488.      ¿º«íαáªÑ¡¿Ñ  óÑασ¡Ñ⌐   τáßΓ¿   φ¬αá¡á,   ¿   Σπ¡¬µ¿∩   ó«ºóαáΘáÑΓ
  1489.      ß««ΓóÑΓßΓóπεΘ¿⌐ ¬«ñ óδíαá¡¡«ú« φ½Ñ¼Ñ¡Γᠼѡε.
  1490.  
  1491.  
  1492.  
  1493.  
  1494.  
  1495.  
  1496.  
  1497.  
  1498.  
  1499.  
  1500.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  1501. â½áóá IX                                                    -- 26 --
  1502.  
  1503.  
  1504.                    ÄÅÉàäàïàìêà ÄüÜàèÆÄé æ ÅÄîÄÖ£₧ "î¢ÿê"
  1505.      -----------------------------------------------------------------
  1506.  
  1507.           Äα¿ú¿¡á½∞¡á∩ óÑαß¿∩    »α«úαá¼¼δ     α¿ß«óá¡¿∩     ñ«»π߬áÑΓ
  1508.      ¿ß»«½∞º«óá¡¿Ñ    «íΩÑ¬Γ«ó,   «»αÑñѽ∩Ѽδσ   ß   »«¼«Θ∞ε   Σπ¡¬µ¿¿
  1509.      define_object(),  »πΓѼ ß»Ñµ¿Σ¿µ¿α«óá¡¿∩ ¬«¡Ñτ¡δσ  Γ«τѬ  ¬áªñ«ú«
  1510.      ßÑú¼Ñ¡Γá  ½¿¡¿¿.  èáªñδ⌐  «»αÑñѽѡ¡δ⌐  αá¡ÑÑ  «íΩÑ¬Γ  ¼«ªÑΓ íδΓ∞
  1511.      »«ñóÑαú¡πΓ    óαáΘÑ¡¿ε.    éÑαß¿∩    Σπ¡¬µ¿¿     define_object(),
  1512.      »αÑñßΓáó½Ñ¡¡á∩  ¡¿ªÑ,  ΓᬪѠ»«ºó«½∩ÑΓ ß »«¼«Θ∞ε "¼δΦ¿" π¬áºδóáΓ∞
  1513.      ¬«¡Ñτ¡δÑ Γ«τ¬¿ (úáíáα¿Γδ) «íΩÑ¬Γ«ó.
  1514.  
  1515.  
  1516.      /* Ä»αÑñѽѡ¿Ñ «íΩѬΓá »« Ñú« úáíáα¿Γ¡δ¼ Γ«τ¬á¼ ß »«¼«Θ∞ε
  1517.         ¬½áó¿áΓπαδ ¿½¿ "¼δΦ¿" */
  1518.      define_object(ob, x, y)
  1519.      double ob[][4];
  1520.      int x, y;
  1521.      {
  1522.           union k{
  1523.                char c[2];
  1524.                int i;
  1525.           } key;
  1526.           register int i, j;
  1527.           char far *ptr = (char far *) 0xB8000000; /* ô¬áºáΓѽ∞ ¡á
  1528.                                    CGA-»á¼∩Γ∞ */
  1529.           char far *temp;
  1530.           unsigned char buf[14][80];
  1531.           int sides=0;
  1532.           int deltax, deltay, oldx, oldy;
  1533.  
  1534.           temp = ptr;
  1535.           /* ß«σαá¡Ñ¡¿Ñ óÑασ¡Ñ⌐ τáßΓ¿ ΓѬπΘÑú« φ¬αá¡á */
  1536.           for(i=0; i<14; i++)
  1537.                for(j=0; j<80; j+=2) {
  1538.                     buf[i][j] = *temp; /* τÑΓ¡δ⌐ íá⌐Γ */
  1539.                     buf[i][j+1] = *(temp+8152); /* ¡ÑτÑΓ¡δ⌐ íá⌐Γ */
  1540.                     *temp = 0; *(temp+8152) = 0; /* «τ¿ßΓ¬á óÑασ¡Ñ⌐
  1541.                                                     τáßΓ¿ φ¬αá¡á */
  1542.                     temp++;
  1543.                }
  1544.  
  1545.           i = 0;
  1546.           key.i = 0;
  1547.           xhairs(x, y);
  1548.           do {
  1549.                goto_xy(0, 0);
  1550.                printf("Ä»αÑñѽ¿ΓÑ ßΓ«α«¡π %d", sides+1);
  1551.                if(i==0) printf("ô¬áª¿ΓÑ »Ñαóπε úáíáα¿Γ¡πε Γ«τ¬π");
  1552.                else printf("ô¬áª¿ΓÑ óΓ«απε úáíáα¿Γ¡πε Γ«τ¬π");
  1553.  
  1554.                do {
  1555.      /************** ä«íáó«τ¡á∩ τáßΓ∞ ñ½∩ ¼δΦ¿. *******************/
  1556.                /* Åα«ß¼áΓα¿óáÑΓß∩, Ñß½¿ "¼δΦ∞" »ÑαѼÑΘáÑΓß∩ */
  1557.  
  1558.  
  1559.  
  1560.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  1561. â½áóá IX                                                    -- 27 --
  1562.  
  1563.  
  1564.                     mouse_motion(&deltax, &deltay);
  1565.                /* êß»«½∞ºπ⌐ΓÑ ½Ñóπε ¬½áó¿Φπ ñ½∩ «»αÑñѽѡ¿∩ Γ«τ¬¿*/
  1566.                     if(leftb_pressed()) {
  1567.                          /* ßΓ¿αá¡¿Ñ úαáΣ¿τÑ߬«ú« ¬παß«αá */
  1568.                          xhairs(x, y);
  1569.                          /* ºá»«¼¿¡á¡¿Ñ ¬««αñ¿¡áΓ Γ«τ¬¿ */
  1570.                          ob[sides][i++] = (double) x;
  1571.                          ob[sides][i++] = (double) y;
  1572.                          if(i==4) {
  1573.                               i = 0;
  1574.                               sides++;
  1575.                          }
  1576.                          break;
  1577.                     }
  1578.                } while(!kbhit() && !deltax && ! deltay);
  1579.                if(leftb_pressed()) wait_on(LEFTB);
  1580.  
  1581.                if(deltax || deltay) {
  1582.                /* Ñß½¿ "¼δΦ∞" »ÑαѼÑßΓ¿½áß∞, Γ« »ÑαÑßτÑΓ ¬««αñ¿¡áΓ*/
  1583.                     oldx = x; oldy = y;
  1584.                     mouse_position(&y, &x);
  1585.                     y = y / 2; /* ¡«α¼á½¿ºáµ¿∩ ¬««ñ¿¡áΓ ó¿αΓπá½∞¡«ú«
  1586.                                    φ¬αá¡á*/
  1587.                     /* ßΓ¿αá¡¿Ñ úαáΣ¿τÑ߬«ú« ¬παß«αá */
  1588.                     xhairs(oldx, oldy);
  1589.                }
  1590.      /********** è«¡Ñµ ñ«íáó«τ¡«⌐ τáßΓ¿ ñ½∩ "¼δΦ¿" *****************/
  1591.  
  1592.                else if(kbhit()) {
  1593.                     key.i = bioskey(0);
  1594.                     /* ¿º«íαáªÑ¡¿Ñ úαáΣ¿τÑ߬«ú« ¬παß«αá */
  1595.                     xhairs(x, y);
  1596.                     if(key.c[0]==13) {
  1597.                         /* ¿ß»«½∞ºπ⌐ΓÑ <ééÄä> ñ½∩ «»αÑñѽѡ¿∩ Γ«τ¬¿*/
  1598.                          ob[sides][i++] = (double) x;
  1599.                          ob[sides][i++] = (double) y;
  1600.                          if(i==4) {
  1601.                               i = 0;
  1602.                               sides++;
  1603.                          }
  1604.                     }
  1605.  
  1606.                    /* Ñß½¿ ¬½áó¿Φ¿ π»αáó½Ñ¡¿∩ ¬παß«α«¼, Γ« »ÑαѼÑΘÑ¡¿Ñ
  1607.                         úαáΣ¿τÑ߬«ú« ¬παß«αá */
  1608.                     if(!key.c[0]) switch(key.c[1]) {
  1609.                          case 75: /* ó½Ñó« */
  1610.                               y-=1;
  1611.                               break;
  1612.                          case 77: /* ó»αáó« */
  1613.                               y+=1;
  1614.                               break;
  1615.                          case 72: /* óóÑασ */
  1616.                               x-=1;
  1617.                               break;
  1618.  
  1619.  
  1620.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  1621. â½áóá IX                                                    -- 28 --
  1622.  
  1623.  
  1624.                          case 80: /* ó¡¿º */
  1625.                               x+=1;
  1626.                               break;
  1627.                          case 71: /* ó½Ñó« óóÑασ */
  1628.                               x-=1; y-=1;
  1629.                               break;
  1630.                          case 73: /* ó»αáó« óóÑασ */
  1631.                               x-=1; y+=1;
  1632.                               break;
  1633.                          case 79: /* ó½Ñó« ó¡¿º */
  1634.                               x+=1; y-=1;
  1635.                               break;
  1636.                          case 81: /* ó»αáó« ó¡¿º */
  1637.                               x+=1; y+=1;
  1638.                               break;
  1639.                     }
  1640.                }
  1641.                if(key.c[1] != 59) xhairs(x, y);
  1642.           } while(key.c[1] != 59); /* ¡áª¼¿ΓÑ F1 ñ½∩ «ßΓᡫ󬿠*/
  1643.  
  1644.           temp = ptr;
  1645.           /* ó«ßΓá¡«ó½Ñ¡¿Ñ ¿º«íαáªÑ¡¿∩ ó óÑασ¡Ñ⌐ τáßΓ¿ φ¬αá¡á */
  1646.           for(i=0; i<14; i++)
  1647.                for(j=0; j<80; j+=2) {
  1648.  
  1649.                     *temp = buf[i][j];
  1650.                     *(temp+8152) = buf[i][j+1];
  1651.                     temp++;
  1652.                }
  1653.           return sides;
  1654.      }
  1655.  
  1656.  
  1657.           èᬠóδ   ¼«ªÑΓÑ   ó¿ñÑΓ∞,  ½Ñóá∩  ¬½áó¿Φá  ¿ß»«½∞ºπÑΓß∩  ñ½∩
  1658.      π¬áºá¡¿∩ úáíáα¿Γ¡δσ Γ«τѬ.  äó¿ªÑ¡¿Ñ "¼δΦ¿" ¬«ñ¿απÑΓß∩ Γ«τ¡«  Γá¬
  1659.      ªÑ,  ¬á¬  ¿  ó Σπ¡¬µ¿¿ read_mouse().  çᠿ߬½ετÑ¡¿Ñ¼ Γ«ú«,  τΓ« ó
  1660.      Σπ¡¬µ¿ε ñ«íáó½Ñ¡ Σαáú¼Ñ¡Γ ¿ßσ«ñ¡«ú« ΓѬßΓá  ñ½∩  »«ññÑ᪬¿  óó«ñá
  1661.      ¿¡Σ«α¼áµ¿¿   ß   »«¼«Θ∞ε   "¼δΦ¿",  «α¿ú¿¡á½∞¡á∩  óÑαß¿∩  Σπ¡¬µ¿¿
  1662.      define_object()  í«½∞ΦÑ  ¡¿¬á¬¿σ  ¿º¼Ñ¡Ñ¡¿⌐  ¡Ñ  »αÑΓÑα»Ñ½á.  ä½∩
  1663.      π¬áºá¡¿∩  «τÑαÑñ¡«⌐  úáíáα¿Γ¡«⌐ Γ«τ¬¿ »ÑαѼÑßΓ¿ΓÑ "¼δΦ∞" ó ¡πª¡πε
  1664.      »«º¿µ¿ε ¿ ¡áª¼¿ΓÑ ¬½áó¿Φπ.
  1665.  
  1666.  
  1667.  
  1668.  
  1669.  
  1670.  
  1671.  
  1672.  
  1673.  
  1674.  
  1675.  
  1676.  
  1677.  
  1678.  
  1679.  
  1680.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  1681. â½áóá IX                                                    -- 29 --
  1682.  
  1683.  
  1684.                 ÅÄïì¢ë ÆàèæÆ îÄäêöêûêÉÄéÇììÄë ÅÉÄâÉÇîÉêæÄéÇìêƒ
  1685.      -----------------------------------------------------------------
  1686.  
  1687.           ì¿ªÑ »α¿óÑñÑ¡  ¿ßσ«ñ¡δ⌐  ΓѬßΓ  »α«úαá¼¼δ α¿ß«óá¡¿∩ ß πτÑΓ«¼
  1688.      óßÑσ ¿º¼Ñ¡Ñ¡¿⌐ ¿ ñ«»«½¡Ñ¡¿⌐, «íßπªñÑ¡¡δσ óδΦÑ.
  1689.  
  1690.      /* ¥Γá óÑαß¿∩ »α«úαá¼¼δ α¿ß«óá¡¿∩ ñ½∩ áñá»ΓÑα«ó  CGA/EGA
  1691.         »«ºó«½∩ÑΓ ¿ß»«½∞º«óáΓ∞ "¼δΦ∞" Σ¿α¼δ Microsoft/IBM,
  1692.         á ΓᬪѠá½∞ΓÑα¡áΓ¿ó¡«Ñ πßΓα«⌐ßΓó« óó«ñá (¬½áó¿áΓπαπ)
  1693.      */
  1694.      #define NUM_SIDES 20 /* îá¬ß¿¼á½∞¡«Ñ τ¿ß½« ßΓ«α«¡ Σ¿úπαδ.
  1695.                                Å« ªÑ½á¡¿ε ¼«ª¡« πóѽ¿τ¿Γ∞ */
  1696.      #define NOT_MOVED 0
  1697.      #define RIGHT     1
  1698.      #define LEFT      2
  1699.      #define UP        3
  1700.      #define DOWN      4
  1701.      #define LEFTB     1
  1702.      #define RIGHTB    2
  1703.  
  1704.      #define MENU_MAX 20 /* îá¬ß¿¼á½∞¡«Ñ τ¿ß½« φ½Ñ¼Ñ¡Γ«ó ¼Ñ¡ε */
  1705.  
  1706.      #include "dos.h"
  1707.      #include "stdio.h"
  1708.      #include "math.h"
  1709.  
  1710.      void mode(), line(), box(), fill_box();
  1711.      void mempoint(), palette(), xhairs();
  1712.      void circle(), plot_circle(), fill_circle();
  1713.      void rotate_point(), rotate_object(), goto_xy();
  1714.      void display_object(), copy(), move();
  1715.      void save_pic(), load_pic();
  1716.      void set_mouse_position(), mouse_position(), mouse_motion();
  1717.      void cursor_on(), cursor_off(), wait_on(), mouse_reset();
  1718.  
  1719.      unsigned char read_point();
  1720.  
  1721.      /* ¥Γ« ¼áßß¿ó »αÑñ¡áº¡áτÑ¡ ñ½∩ σαá¡Ñ¡¿∩ ¬««αñ¿¡áΓ ñ¿¡á¼¿τÑ߬¿
  1722.            «»αÑñѽ∩Ѽ«⌐ Σ¿úπαδ   */
  1723.  
  1724.      double object[NUM_SIDES][4];
  1725.  
  1726.      double asp_ratio; /* ¬«φΣΣ¿µ¿Ñ¡Γ ßªáΓ¿∩ «¬απª¡«ßΓÑ⌐ */
  1727.  
  1728.           int x=10, y=10; /* ΓѬπΘá∩ »«º¿µ¿∩ φ¬αá¡á */
  1729.           int cc=2; /* ΓѬπΘ¿⌐ µóÑΓ */
  1730.           int on_flag=1, mouse_on_flag=0; /* »Ñα« «»πΘÑ¡« ¿½¿
  1731.                                               »«ñ¡∩Γ« */
  1732.           int pal_num=1;                 /* ¡«¼Ñα »á½¿Γαδ */
  1733.  
  1734.           /* âáíáα¿Γ¡δÑ Γ«τ¬¿, «»αÑñѽ∩εΘ¿Ñ ½¿¡¿ε, «¬απª¡«ßΓ∞
  1735.           ¿½¿ »α∩¼«πú«½∞¡¿¬ */
  1736.           int startx=0, starty=0, endx=0, endy=0, first_point=1;
  1737.           int inc=1;       /* »α¿αáΘÑ¡¿Ñ ñó¿ªÑ¡¿∩ */
  1738.  
  1739.  
  1740.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  1741. â½áóá IX                                                    -- 30 --
  1742.  
  1743.  
  1744.           int sides=0;     /* ¡«¼Ñα ßΓ«α«¡δ «»αÑñѽ∩Ѽ«⌐ Σ¿úπαδ */
  1745.           int deltax, deltay;    /* "¼δΦ∞" ¿º¼Ñ¡∩ÑΓ ñá¡¡δÑ ó
  1746.                                      ¿¡ñ¿µ¿α«óá¡¡«⌐ »«º¿µ¿¿ */
  1747.  
  1748.  
  1749.      main()
  1750.      {
  1751.           char done=0;
  1752.  
  1753.           mode(4); /* »ÑαѬ½ετáΓѽ∞ ó 4 úαáΣ¿τÑ߬¿⌐ αѪ¿¼ ñ½∩
  1754.                          áñá»ΓÑα«ó CGA/EGA  */
  1755.           palette(0);    /* »á½¿Γαá 0  */
  1756.           mouse_reset(); /* ¿¡ßΓá½∩µ¿∩ "¼δΦ¿" */
  1757.  
  1758.           xhairs(x, y);  /* πßΓá¡«ó¿Γ∞ úαáΣ¿τÑ߬¿⌐ ¬παß«α */
  1759.           set_mouse_position(y*2, x); /* πßΓá¡«ó¿Γ∞ ¡áτá½∞¡πε »«º¿µ¿ε
  1760.                                         ¬παß«αá "¼δΦ¿" */
  1761.           do {
  1762.                /* »α«ß¼áΓα¿óáÑΓß∩, »ÑαѼÑΘá½áß∞ ½¿ "¼δΦ∞" */
  1763.                mouse_motion(&deltax, &deltay);
  1764.                if(deltax || deltay) read_mouse();
  1765.                /* »α«óÑα¬á ¡áªáΓ¿∩ ¬½áó¿Φ¿ */
  1766.                if(leftb_pressed() || rightb_pressed())
  1767.                     read_mouse();
  1768.                if(kbhit()) {
  1769.                     done = read_kb();
  1770.                /* »ÑαѼÑΘÑ¡¿Ñ "¼δΦ¿" ó ß««ΓóÑΓßΓó¿¿ ß αẼÑΘÑ¡¿Ñ¼
  1771.                     úαáΣ¿τÑ߬«ú« ¬παß«αá */
  1772.                     set_mouse_position(y*2, x);
  1773.                }
  1774.           } while (!done);
  1775.           mode(2);
  1776.      }
  1777.  
  1778.  
  1779.      /* ùΓÑ¡¿Ñ ¿ «íαáí«Γ¬á ¬«¼á¡ñ, óó«ñ¿¼δσ ß »«¼«Θ∞ε "¼δΦ¿" */
  1780.      read_mouse()
  1781.      {
  1782.           int oldx, oldy;
  1783.           int choice;
  1784.  
  1785.           oldx = x; oldy = y;
  1786.           xhairs(x, y); /* ßΓÑαÑΓ∞ ß ΓѬπΘÑ⌐ »«º¿µ¿¿ */
  1787.  
  1788.           /* ¡áªáΓδ «íÑ ¬½áó¿Φ¿ ñ½∩ á¬Γ¿ó¿ºáµ¿¿ ¼Ñ¡ε */
  1789.           if(rightb_pressed() && leftb_pressed()) {
  1790.                choice = menu(); /* »«½πτ¿Γ∞ αѺπ½∞ΓáΓ óδí«αá
  1791.                                    ¿º ¼Ñ¡ε */
  1792.                switch(choice) {
  1793.                  case 0: box(startx, starty, endx, endy, cc);
  1794.                       break;
  1795.                  case 1: circle(startx, starty, endy-starty, cc);
  1796.                       break;
  1797.                  case 2: line(startx, starty, endx, endy, cc);
  1798.  
  1799.  
  1800.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  1801. â½áóá IX                                                    -- 31 --
  1802.  
  1803.  
  1804.                       break;
  1805.                  case 3: fill_box(startx, starty, endx, endy, cc);
  1806.                       break;
  1807.                  case 4: fill_circle(startx, starty, endy-starty, cc);
  1808.                       break;
  1809.                }
  1810.           }
  1811.  
  1812.           /* »αáóá∩ ¬½áó¿Φá «»αÑñѽ∩ÑΓ ¬«¡Ñτ¡πε Γ«τ¬π Σ¿úπαδ */
  1813.           else if(rightb_pressed()) {
  1814.                if(first_point) {
  1815.                     startx = x; starty = y;
  1816.                }
  1817.                else {
  1818.                     endx = x; endy = y;
  1819.                }
  1820.                first_point = !first_point;
  1821.                wait_on(RIGHTB); /* «ª¿ñá¡¿Ñ «ßó«í«ªñÑ¡¿∩ ¬½áó¿Φ¿ */
  1822.           }
  1823.  
  1824.           if(deltax || deltay) {
  1825.                mouse_position(&y, &x);
  1826.                y = y / 2; /* ¡«α¼á½¿ºáµ¿∩ ¬««αñ¿¡áΓ ó¿αΓπá½∞¡«ú«
  1827.                          φ¬αá¡á */
  1828.                /* ¡áª¼¿ΓÑ ½Ñóπε ¬½áó¿Φπ ñ½∩ α¿ß«óá¡¿∩ */
  1829.                if(leftb_pressed()) mouse_on_flag = 1;
  1830.                else mouse_on_flag = 0;
  1831.                if(mouse_on_flag) line(oldx, oldy, x, y, cc);
  1832.           }
  1833.           /* ó«ßßΓá¡«ó¿Γ∞ ¿º«íαáªÑ¡¿Ñ úαáΣ¿τÑ߬«ú« ¬παß«αá */
  1834.           xhairs(x, y);
  1835.      }
  1836.  
  1837.      /* ùΓÑ¡¿Ñ ¿ «íαáí«Γ¬á ¬«¼á¡ñ, óó«ñ¿¼δσ ß ¬½áó¿áΓπαδ */
  1838.      read_kb()
  1839.      {
  1840.           union k{
  1841.                char c[2];
  1842.                int i;
  1843.           } key;
  1844.  
  1845.           key.i = bioskey(0);
  1846.           xhairs(x, y); /* ßΓÑαÑΓ∞ úαáΣ¿τÑ߬¿⌐ ¬παß«α */
  1847.           if(!key.c[0]) switch(key.c[1]){
  1848.                case 75:  /* ó½Ñó« */
  1849.                     if(on_flag) line(x, y, x, y-inc, cc);
  1850.                     y -= inc;
  1851.                     break;
  1852.                case 77:  /* ó»αáó« */
  1853.                     if(on_flag) line(x, y, x, y+inc, cc);
  1854.                     y += inc;
  1855.                     break;
  1856.                case 72:  /* óóÑασ */
  1857.                     if(on_flag) line(x, y, x-inc, y, cc);
  1858.  
  1859.  
  1860.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  1861. â½áóá IX                                                    -- 32 --
  1862.  
  1863.  
  1864.                     x -= inc;
  1865.                     break;
  1866.                case 80:  /* ó¡¿º */
  1867.                     if(on_flag) line(x, y, x+inc, y, cc);
  1868.                     x += inc;
  1869.                     break;
  1870.                case 71:  /* ó½Ñó« óóÑασ */
  1871.                     if(on_flag) line(x, y, x-inc, y-inc, cc);
  1872.                     y -= inc; x -= inc;
  1873.                     break;
  1874.                case 73:  /* ó»αáó« óóÑασ */
  1875.                     if(on_flag) line(x, y, x-inc, y+inc, cc);
  1876.                     y += inc; x -= inc;
  1877.                     break;
  1878.                case 79: /* ó½Ñó« ó¡¿º */
  1879.                     if(on_flag) line(x, y, x+inc, y-inc, cc);
  1880.                     y -= inc; x += inc;
  1881.                     break;
  1882.                case 81:  /* ó»αáó« ó¡¿º */
  1883.                     if(on_flag) line(x, y, x+inc, y+inc, cc);
  1884.                     y += inc; x += inc;
  1885.                     break;
  1886.                case 59: inc = 1; /* F1 - π¼Ñ¡∞Φ¿Γ∞ ß¬«α«ßΓ∞ */
  1887.                     break;
  1888.                case 60: inc = 5; /* F2 - πóѽ¿τ¿Γ∞ ß¬«α«ßΓ∞ */
  1889.                     break;
  1890.           }
  1891.           else switch(tolower(key.c[0])) {
  1892.                case 'o': on_flag = !on_flag; /* »ÑαѬ½ετáΓѽ∞
  1893.                                                 Φáí½«¡á µóÑΓá */
  1894.                     break;
  1895.                case '1': cc = 1; /* µóÑΓ 1 */
  1896.                     break;
  1897.                case '2': cc = 2; /* µóÑΓ 2 */
  1898.                     break;
  1899.                case '3': cc = 3; /* µóÑΓ 3 */
  1900.                     break;
  1901.                case '0': cc = 0; /* µóÑΓ 0 */
  1902.                     break;
  1903.                case 'b': box(startx, starty, endx, endy, cc);
  1904.                     break;
  1905.                case 'f': fill_box(startx, starty, endx, endy, cc);
  1906.                     break;
  1907.                case 'l': line(startx, starty, endx, endy, cc);
  1908.                     break;
  1909.                case 'c': circle(startx, starty, endy-starty, cc);
  1910.                     break;
  1911.                case 'h': fill_circle(startx, starty, endy-starty, cc);
  1912.                     break;
  1913.                case 's': save_pic();
  1914.                     break;
  1915.                case 'r': load_pic();
  1916.                     break;
  1917.                case 'm': /* »ÑαѼÑßΓ¿Γ∞ «í½áßΓ∞ */
  1918.  
  1919.  
  1920.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  1921. â½áóá IX                                                    -- 33 --
  1922.  
  1923.  
  1924.                     move(startx, starty, endx, endy, x, y);
  1925.                     break;
  1926.                case 'x': /* ¬«»¿α«óáΓ∞ «í½áßΓ∞ */
  1927.                     copy(startx, starty, endx, endy, x, y);
  1928.                     break;
  1929.                case 'd': /* «»αÑñѽ¿Γ∞ «íΩÑ¬Γ ñ½∩ óαáΘÑ¡¿∩ */
  1930.                     sides = define_object(object, x, y);
  1931.                     break;
  1932.                case 'a': /* óαáΘáΓ∞ «íΩÑ¬Γ */
  1933.                     rotate_object(object, 0.05, x, y, sides);
  1934.                     break;
  1935.                case '\r': /* πßΓá¡«ó¿Γ∞ ¬«¡Ñτ¡πε Γ«τ¬π ñ½∩ ½¿¡¿¿,
  1936.                          «¬απª¡«ßΓ¿ ¿½¿ »α∩¼«πú«½∞¡¿¬á */
  1937.                     if(first_point) {
  1938.                          startx = x; starty = y;
  1939.                     }
  1940.                     else {
  1941.                          endx = x; endy = y;
  1942.                     }
  1943.                     first_point = !first_point;
  1944.                     break;
  1945.                case 'p': pal_num = pal_num==1 ? 2:1;
  1946.                     palette(pal_num);
  1947.           }
  1948.           /* ó«ßßΓá¡«ó¿Γ∞ ¿º«íαáªÑ¡¿Ñ úαáΣ¿τÑ߬«ú« ¬παß«αá */
  1949.           xhairs(x, y);
  1950.           if(tolowel(key.c[0])=='q') return 1;
  1951.           return 0;
  1952.      }
  1953.  
  1954.      /* ôßΓá¡«ó¿Γ∞ »á½¿Γαπ */
  1955.      void palette(pnum)
  1956.      int pnum;
  1957.      {
  1958.           union REGS r;
  1959.  
  1960.           r.h.bh = 1; /* ¬«ñ¿α«óá¡¿Ñ 4 úαáΣ¿τÑ߬«ú« αѪ¿¼á */
  1961.           r.h.bl = pnum;
  1962.           r.h.ah = 11; /* Σπ¡¬µ¬¿∩ πßΓá¡«ó½Ñ¡¿∩ »á½¿Γαδ */
  1963.           int86(0x10, &r, &r);
  1964.      }
  1965.  
  1966.      /* ôßΓá¡«ó¿Γ∞ ó¿ñÑ«αѪ¿¼ */
  1967.      void mode(mode_code)
  1968.      int mode_code;
  1969.      {
  1970.           union REGS r;
  1971.  
  1972.           r.h.al = mode_code;
  1973.           r.h.ah = 0;
  1974.           int86(0x10, &r, &r);
  1975.      }
  1976.  
  1977.      /* É¿ß«óá¡¿Ñ »α∩¼«πú«½∞¡¿¬á */
  1978.  
  1979.  
  1980.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  1981. â½áóá IX                                                    -- 34 --
  1982.  
  1983.  
  1984.      void box(startx, starty, endx, endy, color_code)
  1985.      int startx, starty, endx, endy, color_code;
  1986.      {
  1987.           line(startx, starty, endx, starty, color_code);
  1988.           line(startx, starty, startx, endy, color_code);
  1989.           line(startx, endy, endx, endy, color_code);
  1990.           line(endx, starty, endx, endy, color_code);
  1991.      }
  1992.  
  1993.  
  1994.      /* É¿ß«óá¡¿Ñ ½¿¡¿¿ ó ß»Ñµ¿Σ¿µ¿α«óá¡¡«¼ µóÑΓÑ ß ¿ß»«½∞º«ó᡿Ѽ
  1995.         «ß¡«ó¡«ú« á½ú«α¿Γ¼á üαѺѡσá¼á  */
  1996.      void line(startx, starty, endx, endy, color)
  1997.      int startx, starty, endx, endy, color;
  1998.      {
  1999.           register int t, distance;
  2000.           int x=0, y=0, delta_x, delta_y;
  2001.           int incx, incy;
  2002.  
  2003.           /* «»αÑñѽѡ¿Ñ αáßßΓ«∩¡¿∩ ó «í«¿σ ¡á»αáó½Ñ¡¿∩σ */
  2004.           delta_x = endx-startx;
  2005.           delta_y = endy-starty;
  2006.  
  2007.           /* éδτ¿ß½Ñ¡¿Ñ ¡á»αáó½Ñ¡¿∩ »α¿αáΘÑ¡¿∩. Åα¿αáΘÑ¡¿Ñ
  2008.           óδτ¿ß½∩ÑΓß∩ «Γ¡«ß¿Γѽ∞¡« 0 ¬á¬ ñ½∩ ú«α¿º«¡Γá½∞¡«⌐,
  2009.           Γᬠ¿ ñ½∩ óÑαΓ¿¬á½∞¡«⌐ ½¿¡¿¿
  2010.           */
  2011.           if(delta_x>0) incx = 1;
  2012.           else if(delta_x==0) incx = 0;
  2013.           else incx=-1;
  2014.  
  2015.           if(delta_y>0) incy = 1;
  2016.           else if(delta_y==0) incy = 0;
  2017.           else incy=-1;
  2018.  
  2019.           /* Ä»αÑñѽ∩ÑΓß∩, ¬á¬«Ñ αáßßΓ«∩¡¿Ñ í«½∞ΦÑ */
  2020.           delta_x = abs(delta_x);
  2021.           delta_y = abs(delta_y);
  2022.           if(delta_x>delta_y) distance = delta_x;
  2023.           else distance = delta_y;
  2024.  
  2025.           /* éδτÑατ¿δó¡¿Ñ ½¿¡¿¿ */
  2026.           for(t=0; t<=distance+1; t++) {
  2027.                mempoint(startx, starty, color);
  2028.                x+=delta_x;
  2029.                y+=delta_y;
  2030.                if(x>distance) {
  2031.                     x-=distance;
  2032.                     startx+=incx;
  2033.                }
  2034.                if(y>distance) {
  2035.                     y-=distance;
  2036.                     starty+=incy;
  2037.                }
  2038.  
  2039.  
  2040.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  2041. â½áóá IX                                                    -- 35 --
  2042.  
  2043.  
  2044.           }
  2045.      }
  2046.  
  2047.      /* çá¬αáΦ¿óá¡¿Ñ »α∩¼«πú«½∞¡¿¬á ß»Ñµ¿Σ¿µ¿α«óá¡¡δ¼ µóÑΓ«¼ */
  2048.      void fill_box(startx, starty, endx, endy, color_code)
  2049.      int startx, starty, endx, endy, color_code;
  2050.      {
  2051.           register int i, begin, end;
  2052.  
  2053.           begin = startx<endx ? startx : endx;
  2054.           end = startx>endx ? startx : endx;
  2055.  
  2056.           for(i=begin; i<=end; i++)
  2057.                line(i, starty, i, endy, color_code);
  2058.      }
  2059.  
  2060.      /* É¿ß«óá¡¿Ñ «¬απª¡«ßΓ¿ ß ¿ß»«½∞º«ó᡿Ѽ µÑ½«τ¿ß½Ñ¡¡«ú« á½ú«α¿Γ¼á
  2061.         üαѺѡσá¼á */
  2062.      void circle(x_center, y_center, radius, color_code)
  2063.      int x_center, y_center, radius, color_code;
  2064.      {
  2065.           register int x, y, delta;
  2066.  
  2067.           asp_ratio = 1.0; /* àß½¿ éáß ¡Ñ πñ«ó½ÑΓó«α∩εΓ »αÑñ½áúáѼδÑ
  2068.                               »α«»«αµ¿¿ Σ¿úπαδ, ¿º¼Ñ¡¿ΓÑ º¡áτÑ¡¿Ñ φΓ«⌐
  2069.                               »ÑαѼѡ¡«⌐ */
  2070.           y = radius;
  2071.           delta = 3 - 2 * radius;
  2072.  
  2073.           for(x=0; x<y; ) {
  2074.                plot_circle(x, y, x_center, y_center, color_code);
  2075.  
  2076.                if(delta < 0)
  2077.                     delta += 4*x+6;
  2078.                else {
  2079.                     delta += 4*(x-y)+10;
  2080.                     y--;
  2081.                }
  2082.                x++;
  2083.           }
  2084.           x=y;
  2085.           if(y) plot_circle(x, y, x_center, y_center, color_code);
  2086.      }
  2087.  
  2088.  
  2089.      /* ìÑ»«ßαÑñßΓóÑ¡¡«Ñ óδτÑατ¿óá¡¿Ñ «¬απª¡«ßΓ¿ »« «»αÑñѽѡ¡δ¼
  2090.         »«½∞º«óáΓѽѼ Γ«τ¬á¼ */
  2091.      void plot_circle(x, y, x_center, y_center, color_code)
  2092.      int x, y, x_center, y_center, color_code;
  2093.      {
  2094.           int startx, endx, x1, starty, endy, y1;
  2095.  
  2096.           starty = y*asp_ratio;
  2097.           endy = (y+1)*asp_ratio;
  2098.  
  2099.  
  2100.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  2101. â½áóá IX                                                    -- 36 --
  2102.  
  2103.  
  2104.           startx = x*asp_ratio;
  2105.           endx = (x+1)*asp_ratio;
  2106.  
  2107.           for(x1=startx; x1<endx; ++x1) {
  2108.                mempoint(x1+x_center, y+y_center, color_code);
  2109.                mempoint(x1+x_center, y_center-y, color_code);
  2110.                mempoint(x_center-x1, y_center-y, color_code);
  2111.                mempoint(x_center-x1, y+y_center, color_code);
  2112.           }
  2113.  
  2114.           for(y1=starty; y1<endy; ++y1) {
  2115.                mempoint(y1+x_center, x+y_center, color_code);
  2116.                mempoint(y1+x_center, y_center-x, color_code);
  2117.                mempoint(x_center-y1, y_center-x, color_code);
  2118.                mempoint(x_center-y1, x+y_center, color_code);
  2119.           }
  2120.      }
  2121.  
  2122.  
  2123.      /* çá¬αáΦ¿óá¡¿Ñ «¬απª¡«ßΓ¿ »πΓѼ µ¿¬½¿τÑ߬«ú« «íαáΘÑ¡¿∩ ¬ Σπ¡¬µ¿¿
  2124.         circle() ß ¼Ñ¡∞Φ¿¼ αáñ¿πß«¼ */
  2125.      void fill_circle(x, y, r, c)
  2126.      int x, y, r, c;
  2127.      {
  2128.           while(r) {
  2129.                circle(x, y, r, c);
  2130.                r--;
  2131.           }
  2132.      }
  2133.  
  2134.  
  2135.      /* ÄΓ«íαáªÑ¡¿Ñ úαáΣ¿τÑ߬«ú« ¬παß«αá  */
  2136.      void xhairs(x, y)
  2137.      int x, y;
  2138.      {
  2139.           line(x-4, y, x+3, y, 1 | 128);
  2140.           line(x, y+4, x, y-3, 1 | 128);
  2141.      }
  2142.  
  2143.  
  2144.      /* çỿß∞ Γ«τ¬¿ ¡Ñ»«ßαÑñßΓóÑ¡¡« ó CGA/EGA */
  2145.      void mempoint(x, y, color_code)
  2146.      int x, y, color_code;
  2147.      {
  2148.           union mask {
  2149.                char c[2];
  2150.                int i;
  2151.           } bit_mask;
  2152.           int i, index, bit_position;
  2153.           unsigned char t;
  2154.           char xor; /* xor - µóÑΓ ¿º«íαáªÑ¡¿∩ ºá»¿ßδóáÑΓß∩ ¿½¿
  2155.                        »ÑαѺỿßδóáÑΓß∩ */
  2156.           char far *ptr = (char far *) 0xB8000000; /* ô¬áºáΓѽ∞
  2157.                                                       CGA »á¼∩Γ¿ */
  2158.  
  2159.  
  2160.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  2161. â½áóá IX                                                    -- 37 --
  2162.  
  2163.  
  2164.           bit_mask.i=0xFF3F;  /* 11111111 00111111 ó ñó«¿τ¡«¼
  2165.                               ¬«ñÑ   */
  2166.  
  2167.           /* »α«óÑα¬á º¡áτÑ¡¿⌐ ñ½∩ 4 αѪ¿¼á */
  2168.           if(x<0 || x>199 || y<0 || y>319) return;
  2169.  
  2170.           xor= color_code & 128; /* »α«ß¼áΓα¿óáÑΓß∩, Ñß½¿ αѪ¿¼
  2171.                          πßΓá¡«ó½Ñ¡ */
  2172.           color_code = color_code & 127; /* ¼á߬á ßΓáαΦÑú« í¿Γá */
  2173.  
  2174.           /* πßΓá¡«ó¬á ¼á߬¿ í¿Γá ¿ ¬«ñá µóÑΓá ñ½∩ »αáó«⌐ ∩τÑ⌐¬¿
  2175.              »á¼∩Γ¿ */
  2176.            bit_position = y%4;
  2177.            color_code<<=2*(3-bit_position);
  2178.            bit_mask.i>>=2*bit_position;
  2179.  
  2180.            /* »«¿ß¬ íá⌐Γá ñ½∩ ¬«ααÑ¬Γ¿α«ó¬¿ ó ó¿ñÑ«»á¼∩Γ¿ */
  2181.            index = x*40 +(y >> 2);
  2182.            if(x % 2) index += 8152; /* Ñß½¿ ñ«»«½¡¿Γѽ∞¡«
  2183.                                        ¿ß»«½∞º«óá½ß∩ 2-⌐ ßÑú¼Ñ¡Γ
  2184.                                        »á¼∩Γ¿ */
  2185.  
  2186.            /* ºá»¿ß∞ µóÑΓá */
  2187.            if(!xor) { /* αѪ¿¼ »ÑαѺỿ߿ */
  2188.                 t = *(ptr+index) & bit_mask.c[0];
  2189.                 *(ptr+index) = t | color_code;
  2190.            }
  2191.            else { /* αѪ¿¼ ºá»¿ß¿ µóÑΓá */
  2192.                 t = *(ptr+index) | (char)0;
  2193.                 *(ptr+index) = t ^ color_code;
  2194.            }
  2195.      }
  2196.  
  2197.  
  2198.      /* ìÑ»«ßαÑñßΓóÑ¡¡«Ñ τΓÑ¡¿Ñ íá⌐Γá ¿º ó¿ñÑ«»á¼∩Γ¿ CGA/EGA
  2199.         ó αѪ¿¼Ñ 4 */
  2200.      unsigned char read_point(x, y)
  2201.      int x, y;
  2202.      {
  2203.           union mask {
  2204.                char c[2];
  2205.                int i;
  2206.           } bit_mask;
  2207.           int i, index, bit_position;
  2208.           unsigned char t;
  2209.           char xor; /* xor - µóÑΓ ¿º«íαáªÑ¡¿∩ ºá»¿ßδóáÑΓß∩ ¿½¿
  2210.                        »ÑαѺỿßδóáÑΓß∩ */
  2211.           char far *ptr = (char far *) 0xB8000000; /* ô¬áºáΓѽ∞
  2212.                                                       CGA »á¼∩Γ¿ */
  2213.           bit_mask.i=0xFF3F;  /* 11111111 00111111 ó ñó«¿τ¡«¼ ¬«ñÑ */
  2214.  
  2215.           /* »α«óÑα¬á º¡áτÑ¡¿⌐ ñ½∩ 4 αѪ¿¼á */
  2216.           if(x<0 || x>199 || y<0 || y>319) return;
  2217.  
  2218.  
  2219.  
  2220.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  2221. â½áóá IX                                                    -- 38 --
  2222.  
  2223.  
  2224.           /* πßΓá¡«ó¬á ¼á߬¿ í¿Γá ¿ ¬«ñá µóÑΓá ñ½∩ »αáó«⌐ ∩τÑ⌐¬¿
  2225.              »á¼∩Γ¿ */
  2226.            bit_position = y%4;
  2227.            bit_mask.i<<=2*(3-bit_position);
  2228.  
  2229.            /* »«¿ß¬ ¡πª¡«ú« íá⌐Γá ó ó¿ñÑ«»á¼∩Γ¿ */
  2230.            index = x*40 +(y >> 2);
  2231.            if(x % 2) index += 8152; /* Ñß½¿ ñ«»«½¡¿Γѽ∞¡«
  2232.                                        ¿ß»«½∞º«óá½ß∩ 2-⌐ í½«¬
  2233.                                        »á¼∩Γ¿ */
  2234.  
  2235.           /* τΓÑ¡¿Ñ µóÑΓá */
  2236.            t = *(ptr+index) & bit_mask.c[0];
  2237.           t >>=2*(3-bit_position);
  2238.           return t;
  2239.      }
  2240.  
  2241.  
  2242.  
  2243.      /* ß«σαá¡Ñ¡¿Ñ ó¿ñÑ« ¿º«íαáªÑ¡¿∩ ¡á φ¬αá¡Ñ */
  2244.      void save_pic()
  2245.      {
  2246.           char fname[80];
  2247.           FILE *fp;
  2248.           register int i, j;
  2249.           char far *ptr = (char far *) 0xB8000000; /* ô¬áºáΓѽ∞
  2250.                                                       CGA »á¼∩Γ¿ */
  2251.           char far *temp;
  2252.           unsigned char buf[14][80]; /* íπΣÑα ß«ñÑন¼«ú« φ¬αá¡á */
  2253.  
  2254.  
  2255.           temp = ptr;
  2256.           /* ß«σαá¡Ñ¡¿Ñ óÑασ¡Ñ⌐ τáßΓ¿ ΓѬπΘÑú« φ¬αá¡á */
  2257.           for(i=0; i<14; i++)
  2258.                for(j=0; j<80; j+=2) {
  2259.                     buf[i][j] = *temp; /* τÑΓ¡δ⌐ íá⌐Γ */
  2260.                     buf[i][j+1] = *(temp+8152); /* ¡ÑτÑΓ¡δ⌐ íá⌐Γ */
  2261.                     *temp = 0; *(temp+8152) = 0; /* «τ¿ßΓ¬á óÑασ¡Ñ⌐
  2262.                                                     τáßΓ¿ φ¬αá¡á */
  2263.                     temp++;
  2264.                }
  2265.  
  2266.           goto_xy(0, 0);
  2267.           printf("ê¼∩ Σá⌐½á : ");
  2268.           gets(fname);
  2269.           if(!(fp=fopen(fname, "wb"))) {
  2270.                printf("öá⌐½ ¡Ñ ¼«ªÑΓ íδΓ∞ «Γ¬αδΓ\n");
  2271.                return;
  2272.           }
  2273.  
  2274.           temp = ptr;
  2275.           /* ó«ßßΓá¡«ó½Ñ¡¿Ñ ¿º«íαáªÑ¡¿∩ óÑασ¡Ñ⌐ τáßΓ¿ φ¬αá¡á */
  2276.           for(i=0; i<14; i++)
  2277.                for(j=0; j<80; j+=2) {
  2278.  
  2279.  
  2280.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  2281. â½áóá IX                                                    -- 39 --
  2282.  
  2283.  
  2284.                     *temp = buf[i][j];
  2285.                     *(temp+8152) = buf[i][j+1];
  2286.                     temp++;
  2287.                }
  2288.  
  2289.           /* ºá»¿ß∞ ¿º«íαáªÑ¡¿∩ ó Σá⌐½ */
  2290.           for(i=0; i<8152; i++) {
  2291.                putc(*ptr, fp); /* τÑΓ¡δ⌐ íá⌐Γ */
  2292.                putc(*(ptr+8152), fp); /* ¡ÑτÑΓ¡δ⌐ íá⌐Γ */
  2293.                ptr++;
  2294.           }
  2295.           fclose(fp);
  2296.      }
  2297.  
  2298.  
  2299.      /* ºáúαπº¬á ó »á¼∩Γ∞ ¿º«íαáªÑ¡¿∩ ¿º Σá⌐½á */
  2300.      void load_pic()
  2301.      {
  2302.           char fname[80];
  2303.           FILE *fp;
  2304.           register int i, j;
  2305.           char far *ptr = (char far *) 0xB8000000; /* ô¬áºáΓѽ∞
  2306.                                    CGA »á¼∩Γ¿ */
  2307.           char far *temp;
  2308.           unsigned char buf[14][80]; /* íπΣÑα ß«ñÑন¼«ú« φ¬αá¡á */
  2309.  
  2310.  
  2311.           temp = ptr;
  2312.           /* ß«σαá¡Ñ¡¿Ñ óÑασ¡Ñ⌐ τáßΓ¿ ΓѬπΘÑú« φ¬αá¡á */
  2313.           for(i=0; i<14; i++)
  2314.                for(j=0; j<80; j+=2) {
  2315.                     buf[i][j] = *temp; /* τÑΓ¡δ⌐ íá⌐Γ */
  2316.                     buf[i][j+1] = *(temp+8152); /* ¡ÑτÑΓ¡δ⌐ íá⌐Γ */
  2317.                     *temp = 0; *(temp+8152) = 0; /* «τ¿ßΓ¬á óÑασ¡Ñ⌐
  2318.                                                     τáßΓ¿ φ¬αá¡á */
  2319.                     temp++;
  2320.                }
  2321.  
  2322.           goto_xy(0, 0);
  2323.           printf("ê¼∩ Σá⌐½á : ");
  2324.           gets(fname);
  2325.           if(!(fp=fopen(fname, "rb"))) {
  2326.                goto_xy(0, 0);
  2327.                printf("öá⌐½ ¡Ñ ¼«ªÑΓ íδΓ∞ «Γ¬αδΓ\n");
  2328.                temp = ptr;
  2329.                /* ó«ßßΓá¡«ó½Ñ¡¿Ñ ¿º«íαáªÑ¡¿∩ óÑασ¡Ñ⌐ τáßΓ¿ φ¬αá¡á */
  2330.                for(i=0; i<14; i++)
  2331.                     for(j=0; j<80; j+=2) {
  2332.                          *temp = buf[i][j];
  2333.                          *(temp+8152) = buf[i][j+1];
  2334.                          temp++;
  2335.                     }
  2336.                return;
  2337.           }
  2338.  
  2339.  
  2340.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  2341. â½áóá IX                                                    -- 40 --
  2342.  
  2343.  
  2344.  
  2345.           /* çáúαπº¬á ¿º«íαáªÑ¡¿∩ ¿º Σá⌐½á */
  2346.           for(i=0; i<8152; i++) {
  2347.                *ptr = getc(fp); /* τÑΓ¡δ⌐ íá⌐Γ */
  2348.                *(ptr+8152) = getc(fp); /* ¡ÑτÑΓ¡δ⌐ íá⌐Γ */
  2349.                ptr++;
  2350.           }
  2351.           fclose(fp);
  2352.      }
  2353.  
  2354.  
  2355.      /* ÅÑαѼÑΘÑ¡¿Ñ ¬παß«αá ó ß»Ñµ¿Σ¿µ¿α«óá¡¡πε »«º¿µ¿ε */
  2356.      void goto_xy(x, y)
  2357.      int x, y;
  2358.      {
  2359.           union REGS r;
  2360.  
  2361.           r.h.ah=2; /* Σπ¡¬µ¿∩ áñαÑßᵿ¿ ¬παß«αá */
  2362.           r.h.dl = y; /* ¬««αñ¿¡áΓδ ßΓ«½íµá */
  2363.           r.h.dh = x; /* ¬««αñ¿¡áΓδ ßΓ᫬¿ */
  2364.           r.h.bh = 0; /* ó¿ñÑ«ßΓαá¡¿µá */
  2365.           int86(0x10, &r, &r);
  2366.      }
  2367.  
  2368.  
  2369.  
  2370.      /* ÅÑαѼÑΘÑ¡¿Ñ «í½áßΓ¿ ó ñαπú«Ñ ¼ÑßΓ« */
  2371.      void move(startx, starty, endx, endy, x, y)
  2372.      int startx, starty; /* óÑασ¡∩∩ ½Ñóá∩ ¬««αñ¿¡áΓá */
  2373.      int endx, endy; /* ¡¿ª¡∩∩ »αáóá∩ ¬««αñ¿¡áΓá ¼ÑßΓá, ¬πñá íπñÑΓ
  2374.                         »ÑαѼÑΘѡᠫí½áßΓ∞ */
  2375.      int x, y; /* óÑασ¡∩∩ ½Ñóá∩ ¬««αñ¿¡áΓá «í½áßΓ¿, «Γ¬πñá íπñÑΓ
  2376.                   »ÑαѼÑΘÑ¡« ¿º«íαáªÑ¡¿Ñ*/
  2377.      {
  2378.           int i, j;
  2379.           unsigned char c;
  2380.  
  2381.           for(; startx<=endx; startx++, endx++)
  2382.                for(i=starty, j=y; i<=endy; i++, j++) {
  2383.                     c = read_point(startx, i); /* τΓÑ¡¿Ñ Γ«τ¬¿ */
  2384.                     mempoint(startx, i, 0); /* ßΓ¿αá¡¿Ñ »αÑñδñπΘÑú«
  2385.                                                ¿º«íαáªÑ¡¿∩ */
  2386.                     mempoint(x, j, c); /* ºá»¿ß∞ Ñú« ó ¡«ó«Ñ ¼ÑßΓ« */
  2387.                }
  2388.      }
  2389.  
  2390.  
  2391.  
  2392.      /* è«»¿α«óáΓ∞ «í½áßΓ∞ ó ñαπú«Ñ ¼ÑßΓ« */
  2393.      void copy (startx, starty, endx, endy, x, y)
  2394.      int startx, starty; /* óÑασ¡∩∩ ½Ñóá∩ ¬««αñ¿¡áΓá */
  2395.      int endx, endy; /* ¡¿ª¡∩∩ »αáóá∩ ¬««αñ¿¡áΓá ¼ÑßΓá, ¬πñá íπñÑΓ
  2396.                         ß¬«»¿α«óá¡á «í½áßΓ∞ */
  2397.      int x, y; /* óÑασ¡∩∩ ½Ñóá∩ ¬««αñ¿¡áΓá «í½áßΓ¿, «Γ¬πñá íπñÑΓ
  2398.  
  2399.  
  2400.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  2401. â½áóá IX                                                    -- 41 --
  2402.  
  2403.  
  2404.                   »ÑαѼÑΘÑ¡« ¿º«íαáªÑ¡¿Ñ */
  2405.      {
  2406.           int i, j;
  2407.           unsigned char c;
  2408.  
  2409.           for(; startx<=endx; startx++, endx++)
  2410.                for(i=starty, j=y; i<=endy; i++, j++) {
  2411.                     c = read_point(startx, i); /* τΓÑ¡¿Ñ Γ«τ¬¿ */
  2412.                     mempoint(x, j, c); /* ºá»¿ß∞ ÑÑ ó ¡«ó«Ñ ¼ÑßΓ« */
  2413.                }
  2414.      }
  2415.  
  2416.  
  2417.  
  2418.      /* éαáΘÑ¡¿Ñ Γ«τ¬¿ «Γ¡«ß¿Γѽ∞¡« ß»Ñµ¿Σ¿µ¿α«óá¡¡«⌐ »«½∞º«óáΓѽѼ
  2419.         ¡áτá½∞¡«⌐ Γ«τ¬¿ x_org ¿ y_org ¡á πú«½ theta */
  2420.  
  2421.      void rotate_point(theta, x, y, x_org, y_org)
  2422.      double theta, *x, *y;
  2423.      int x_org, y_org;
  2424.      {
  2425.           double tx, ty;
  2426.  
  2427.           /* ¡«α¼á½¿ºáµ¿∩ ¬««αñ¿¡áΓ σ ¿ π ¿ßσ«ñ¡«⌐ Γ«τ¬¿ */
  2428.           tx = *x - x_org;
  2429.           ty = *y - y_org;
  2430.  
  2431.           /* óαáΘÑ¡¿Ñ */
  2432.           *x = tx * cos(theta) - ty * sin(theta);
  2433.           *y = tx * sin(theta) + ty * cos(theta);
  2434.  
  2435.           /* ó«ºóαáΓ º¡áτÑ¡¿⌐ ¬««αñ¿¡áΓ */
  2436.           *x += x_org;
  2437.           *y += y_org;
  2438.      }
  2439.  
  2440.      /* éαáΘÑ¡¿Ñ ß»Ñµ¿Σ¿µ¿α«óá¡¡«ú« «íΩѬΓá */
  2441.      void rotate_object(ob, theta, x, y, sides)
  2442.      double ob[][4]; /* «»αÑñѽѡ¿Ñ «íΩѬΓá */
  2443.      double theta; /* πú«½ »«ó«α«Γá ó αáñ¿á¡áσ */
  2444.      int x, y; /* µÑ¡Γα óαáΘÑ¡¿∩ */
  2445.      int sides;
  2446.      {
  2447.           register int i, j;
  2448.           double tempx, tempy; /* φΓ« óß»«¼«úáΓѽ∞¡δÑ »ÑαѼѡ¡δÑ,
  2449.                     ¿ß»«½∞ºπѼδÑ »α¿ »αÑ«íαẫóá¡¿¿ Γ¿»«ó */
  2450.           char ch;
  2451.  
  2452.           for(;;){
  2453.                ch = getch(); /* »α«ß¼áΓα¿óáÑΓß∩, Ñß½¿ π¬áºδóáÑΓß∩
  2454.                                 ¡á»αáó½Ñ¡¿Ñ óαáΦÑ¡¿∩ */
  2455.                switch(tolower(ch)) {
  2456.                     case 'l': /* óαáΘÑ¡¿Ñ »α«Γ¿ó τáß«ó«⌐ ßΓαѽ¬¿ */
  2457.                          theta = theta < 0 ? -theta : theta;
  2458.  
  2459.  
  2460.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  2461. â½áóá IX                                                    -- 42 --
  2462.  
  2463.  
  2464.                          break;
  2465.                     case 'r': /* óαáΘÑ¡¿Ñ »« τáß«ó«⌐ ßΓαѽ¬Ñ */
  2466.                          theta = theta > 0 ? -theta : theta;
  2467.                          break;
  2468.                     default: return;
  2469.                }
  2470.  
  2471.                for(j=0; j<sides; j++) {
  2472.                     /* ßΓ¿αá¡¿Ñ »αÑñδñπΘÑ⌐ ½¿¡¿¿ */
  2473.                     line((int) ob[j][0], (int) ob[j][1],
  2474.                          (int) ob[j][2], (int) ob[j][3], 0);
  2475.  
  2476.                     rotate_point(theta, &ob[j][0], &ob[j][1], x, y);
  2477.  
  2478.                     rotate_point(theta, &ob[j][2], &ob[j][3], x, y);
  2479.  
  2480.                     line((int) ob[j][0], (int) ob[j][1],
  2481.                          (int) ob[j][2], (int) ob[j][3], 2);
  2482.                }
  2483.           }
  2484.      }
  2485.  
  2486.  
  2487.      /* «Γ«íαáªÑ¡¿Ñ «íΩѬΓá */
  2488.      void display_object(ob, sides)
  2489.      double ob[][4];
  2490.      int sides;
  2491.      {
  2492.           register int i;
  2493.  
  2494.           for(i=0; i<sides; i++)
  2495.                line((int) ob[i][0], (int) ob[i][1],
  2496.                     (int) ob[i][2], (int) ob[i][3], 2);
  2497.      }
  2498.  
  2499.      /* Ä»αÑñѽѡ¿Ñ «íΩѬΓá »« Ñú« úáíáα¿Γ¡δ¼ Γ«τ¬á¼ ß »«¼«Θ∞ε
  2500.         ¬½áó¿áΓπαδ ¿½¿ "¼δΦ¿" */
  2501.      define_object(ob, x, y)
  2502.      double ob[][4];
  2503.      int x, y;
  2504.      {
  2505.           union k{
  2506.                char c[2];
  2507.                int i;
  2508.           } key;
  2509.           register int i, j;
  2510.           char far *ptr = (char far *) 0xB8000000; /* ô¬áºáΓѽ∞ ¡á
  2511.                                                       CGA-»á¼∩Γ∞ */
  2512.           char far *temp;
  2513.           unsigned char buf[14][80];
  2514.           int sides=0;
  2515.           int deltax, deltay, oldx, oldy;
  2516.  
  2517.           temp = ptr;
  2518.  
  2519.  
  2520.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  2521. â½áóá IX                                                    -- 43 --
  2522.  
  2523.  
  2524.           /* ß«σαá¡Ñ¡¿Ñ óÑασ¡Ñ⌐ τáßΓ¿ ΓѬπΘÑú« φ¬αá¡á */
  2525.           for(i=0; i<14; i++)
  2526.                for(j=0; j<80; j+=2) {
  2527.                     buf[i][j] = *temp; /* τÑΓ¡δ⌐ íá⌐Γ */
  2528.                     buf[i][j+1] = *(temp+8152); /* ¡ÑτÑΓ¡δ⌐ íá⌐Γ */
  2529.                     *temp = 0; *(temp+8152) = 0; /* «τ¿ßΓ¬á óÑασ¡Ñ⌐
  2530.                                                     τáßΓ¿ φ¬αá¡á */
  2531.                     temp++;
  2532.                }
  2533.  
  2534.           i = 0;
  2535.           key.i = 0;
  2536.           xhairs(x, y);
  2537.           do {
  2538.                goto_xy(0, 0);
  2539.                printf("Ä»αÑñѽ¿ΓÑ ßΓ«α«¡π %d", sides+1);
  2540.                if(i==0) printf("ô¬áª¿ΓÑ »Ñαóπε úáíáα¿Γ¡πε Γ«τ¬π");
  2541.                else printf("ô¬áª¿ΓÑ óΓ«απε úáíáα¿Γ¡πε Γ«τ¬π");
  2542.  
  2543.                do {
  2544.      /**************** ä«íáó«τ¡á∩ τáßΓ∞ ñ½∩ ¼δΦ¿ *******************/
  2545.                /* Åα«ß¼áΓα¿óáÑΓß∩ Ñß½¿ "¼δΦ∞" »ÑαѼÑΘáÑΓß∩ */
  2546.                  mouse_motion(&deltax, &deltay);
  2547.                  /* ¿ß»«½∞ºπ⌐ΓÑ ½Ñóπε ¬½áó¿Φπ ñ½∩ «»αÑñѽѡ¿∩ Γ«τ¬¿*/
  2548.                  if(leftb_pressed()) {
  2549.                    xhairs(x, y); /* ßΓ¿αá¡¿Ñ úαáΣ¿τÑ߬«ú« ¬παß«αá */
  2550.                    /* ºá»«¼¿¡á¡¿Ñ ¬««αñ¿¡áΓ Γ«τ¬¿ */
  2551.                    ob[sides][i++] = (double) x;
  2552.                    ob[sides][i++] = (double) y;
  2553.                    if(i==4) {
  2554.                         i = 0;
  2555.                         sides++;
  2556.                    }
  2557.                    break;
  2558.                  }
  2559.                } while(!kbhit() && !deltax && ! deltay);
  2560.                if(leftb_pressed()) wait_on(LEFTB);
  2561.  
  2562.                if(deltax || deltay) {
  2563.                  /* Ñß½¿ "¼δΦ∞" »ÑαѼÑßΓ¿½áß∞, Γ« »ÑαÑßτÑΓ ¬««αñ¿¡áΓ*/
  2564.                  oldx = x; oldy = y;
  2565.                  mouse_position(&y, &x);
  2566.                  y = y / 2; /* ¡«α¼á½¿ºáµ¿∩ ¬««αñ¿¡áΓ ó¿αΓπá½∞¡«ú«
  2567.                                 φ¬αá¡á*/
  2568.                  /* ßΓ¿αá¡¿Ñ úαáΣ¿τÑ߬«ú« ¬παß«αá */
  2569.                  xhairs(oldx, oldy);
  2570.                }
  2571.      /*********** è«¡Ñµ ñ«íáó«τ¡«⌐ τáßΓ¿ ñ½∩ "¼δΦ¿" *****************/
  2572.  
  2573.                else if(kbhit()) {
  2574.                     key.i = bioskey(0);
  2575.                     /* ¿º«íαáªÑ¡¿Ñ úαáΣ¿τÑ߬«ú« ¬παß«αá */
  2576.                     xhairs(x, y);
  2577.                     if(key.c[0]==13) {
  2578.  
  2579.  
  2580.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  2581. â½áóá IX                                                    -- 44 --
  2582.  
  2583.  
  2584.                          /* ¿ß»«½∞ºπ⌐ΓÑ <ééÄä> ñ½∩ «»αÑñѽѡ¿∩ Γ«τ¬¿*/
  2585.                          ob[sides][i++] = (double) x;
  2586.                          ob[sides][i++] = (double) y;
  2587.                          if(i==4) {
  2588.                               i = 0;
  2589.                               sides++;
  2590.                          }
  2591.                     }
  2592.  
  2593.                     /* Ñß½¿ ¬½áó¿Φ¿ π»αáó½Ñ¡¿∩ ¬παß«α«¼, Γ«
  2594.                        »ÑαѼÑΘÑ¡¿Ñ úαáΣ¿τÑ߬«ú« ¬παß«αá */
  2595.                     if(!key.c[0]) switch(key.c[1]) {
  2596.                          case 75: /* ó½Ñó« */
  2597.                               y-=1;
  2598.                               break;
  2599.                          case 77: /* ó»αáó« */
  2600.                               y+=1;
  2601.                               break;
  2602.                          case 72: /* óóÑασ */
  2603.                               x-=1;
  2604.                               break;
  2605.                          case 80: /* ó¡¿º */
  2606.                               x+=1;
  2607.                               break;
  2608.                          case 71: /* ó½Ñó« óóÑασ */
  2609.                               x-=1; y-=1;
  2610.                               break;
  2611.                          case 73: /* ó»αáó« óóÑασ */
  2612.                               x-=1; y+=1;
  2613.                               break;
  2614.                          case 79: /* ó½Ñó« ó¡¿º */
  2615.                               x+=1; y-=1;
  2616.                               break;
  2617.                          case 81: /* ó»αáó« ó¡¿º */
  2618.                               x+=1; y+=1;
  2619.                               break;
  2620.                     }
  2621.                }
  2622.                if(key.c[1] != 59) xhairs(x, y);
  2623.           } while(key.c[1] != 59); /* ¡áª¼¿ΓÑ F1 ñ½∩ «ßΓᡫ󬿠*/
  2624.  
  2625.           temp = ptr;
  2626.           /* ó«ßßΓá¡«ó½Ñ¡¿Ñ ¿º«íαáªÑ¡¿∩ ó óÑασ¡Ñ⌐ τáßΓ¿ φ¬αá¡á */
  2627.           for(i=0; i<14; i++)
  2628.                for(j=0; j<80; j+=2) {
  2629.                     *temp = buf[i][j];
  2630.                     *(temp+8152) = buf[i][j+1];
  2631.                     temp++;
  2632.                }
  2633.           return sides;
  2634.      }
  2635.  
  2636.      /*  ÄΓ«íαáªÑ¡¿Ñ ¼Ñ¡ε */
  2637.      menu()
  2638.  
  2639.  
  2640.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  2641. â½áóá IX                                                    -- 45 --
  2642.  
  2643.  
  2644.      {
  2645.           register int i, j;
  2646.           char far *ptr = (char far *) 0xB8000000; /* ô¬áºáΓѽ∞ ¡á
  2647.                                                       CGA-»á¼∩Γ∞ */
  2648.           char far *temp;
  2649.           unsigned char buf[14][80]; /* ñ½∩ σαá¡Ñ¡¿∩ ß«ñÑন¼«ú«
  2650.                                         φ¬αá¡á */
  2651.           int x, y, choice;
  2652.           char items[][20] = {
  2653.                "BOX",
  2654.                "CIRCLE",
  2655.                "LINE",
  2656.                "FILL BOX",
  2657.                "FILL CIRCLE"
  2658.           };
  2659.  
  2660.           temp = ptr;
  2661.           /* ß«σαá¡Ñ¡¿Ñ óÑασ¡Ñ⌐ τáßΓ¿ ΓѬπΘÑú« φ¬αá¡á */
  2662.           for(i=0; i<14; i++)
  2663.                for(j=0; j<80; j+=2) {
  2664.                     buf[i][j] = *temp; /* τÑΓ¡δ⌐ íá⌐Γ */
  2665.                     buf[i][j+1] = *(temp+8152); /* ¡ÑτÑΓ¡δ⌐ íá⌐Γ */
  2666.                     *temp = 0; *(temp+8152) = 0; /* «τ¿ßΓ¬á óÑασ¡Ñ⌐
  2667.                                                     τáßΓ¿ φ¬αá¡á */
  2668.                     temp++;
  2669.                }
  2670.  
  2671.           goto_xy(0, 0);
  2672.           /* «ª¿ñá¡¿Ñ, ¬«Γ«α«Ñ íπñÑΓ »αÑαóá¡« ó αѺπ½∞ΓáΓÑ ¡áªáΓ¿∩ ¡á
  2673.              ¬½áó¿Φπ */
  2674.           while(rightb_pressed() || leftb_pressed());
  2675.  
  2676.           cursor_on();
  2677.  
  2678.           choice = mouse_menu(5, items, 0, 0);
  2679.  
  2680.           cursor_off();
  2681.           temp = ptr;
  2682.           /* ó«ßßΓá¡«ó½Ñ¡¿Ñ ¿º«íαáªÑ¡¿∩ óÑασ¡Ñ⌐ τáßΓ¿ φ¬αá¡á */
  2683.           for(i=0; i<14; i++)
  2684.                for(j=0; j<80; j+=2) {
  2685.                     *temp = buf[i][j];
  2686.                     *(temp+8152) = buf[i][j+1];
  2687.                     temp++;
  2688.                }
  2689.           return choice;
  2690.      }
  2691.  
  2692.  
  2693.      /**********************************************************/
  2694.      /* öπ¡¬µ¿¿, «íÑß»Ñτ¿óáεΘ¿Ñ ¿¡ΓÑαΣÑ⌐ß ß "¼δΦ∞ε"            */
  2695.      /**********************************************************/
  2696.  
  2697.      /*  é¬½ετÑ¡¿Ñ ¬παß«αá "¼δΦ¿"  */
  2698.  
  2699.  
  2700.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  2701. â½áóá IX                                                    -- 46 --
  2702.  
  2703.  
  2704.      void cursor_on()
  2705.      {
  2706.           int fnum;
  2707.  
  2708.           fnum = 1; /* «Γ«íαếΓ∞ ¬παß«α */
  2709.           cmouses( &fnum,  &fnum,  &fnum,  &fnum);
  2710.      }
  2711.  
  2712.  
  2713.      /*  é䬽ετÑ¡¿Ñ ¬παß«αá "¼δΦ¿"  */
  2714.      void cursor_off()
  2715.      {
  2716.           int fnum;
  2717.  
  2718.           fnum = 2; /* ßΓÑαÑΓ∞ ¬παß«α */
  2719.           cmouses( &fnum,  &fnum,  &fnum,  &fnum);
  2720.      }
  2721.  
  2722.  
  2723.  
  2724.      /* é«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ "¿ßΓ¿¡á", Ñß½¿ ¡áªáΓá »αáóá∩ ¬½áó¿Φá,
  2725.           ¿ "½«ª∞" ó »α«Γ¿ó¡«¼ ß½πτáÑ                           */
  2726.  
  2727.      rightb_pressed()
  2728.      {
  2729.           int fnum, arg2, arg3, arg4;
  2730.  
  2731.           fnum = 3;   /* ùΓÑ¡¿Ñ »«º¿µ¿¿ ¿ ßΓáΓπßá ¬½áó¿Φ¿   */
  2732.           cmouses( &fnum, &arg2, &arg3, &arg4);
  2733.           return arg2 & 2;
  2734.      }
  2735.  
  2736.  
  2737.  
  2738.      /* é«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ "¿ßΓ¿¡á", Ñß½¿ ¡áªáΓá ½Ñóá∩ ¬½áó¿Φá,
  2739.           ¿ "½«ª∞" ó »α«Γ¿ó¡«¼ ß½πτáÑ */
  2740.  
  2741.      leftb_pressed()
  2742.      {
  2743.           int fnum, arg2, arg3, arg4;
  2744.  
  2745.           fnum = 3;   /* ùΓÑ¡¿Ñ »«º¿µ¿¿ ¿ ßΓáΓπßá ¬½áó¿Φ¿   */
  2746.           cmouses( &fnum, &arg2, &arg3, &arg4);
  2747.           return arg2 & 1;
  2748.      }
  2749.  
  2750.  
  2751.      /* ôßΓá¡«ó¿Γ∞ ¬««αñ¿¡áΓδ ¬παß«αá "¼δΦ¿" */
  2752.      void set_mouse_position(x, y)
  2753.      int x, y;
  2754.      {
  2755.           int fnum, arg2;
  2756.  
  2757.           fnum = 4; /* πßΓá¡«ó¬á »«º¿µ¿¿ */
  2758.  
  2759.  
  2760.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  2761. â½áóá IX                                                    -- 47 --
  2762.  
  2763.  
  2764.           cmouses(&fnum, &arg2, &x, &y);
  2765.      }
  2766.  
  2767.      /* é«ºóαáΘáÑΓ ¬««αñ¿¡áΓδ ¬παß«αá "¼δΦ¿" */
  2768.      void mouse_position(x, y)
  2769.      int *x, *y;
  2770.      {
  2771.           int fnum, arg2, arg3, arg4;
  2772.  
  2773.           fnum = 3; /* »«½πτ¿Γ∞ »«º¿µ¿ε ¿ ßΓáΓπß ¬½áó¿Φ¿ */
  2774.           cmouses( &fnum, &arg2, &arg3, &arg4);
  2775.           *x = arg3;
  2776.           *y = arg4;
  2777.      }
  2778.  
  2779.      /*  é«ºóαáΘáÑΓ ¡á»αáó½Ñ¡¿Ñ ñó¿ªÑ¡¿∩  */
  2780.      void mouse_motion(deltax, deltay)
  2781.      char *deltax, *deltay;
  2782.      {
  2783.           int fnum, arg2, arg3, arg4;
  2784.  
  2785.           fnum = 11; /* »«½πτ¿Γ∞ ¡á»αáó½Ñ¡¿Ñ ñó¿ªÑ¡¿∩ */
  2786.           cmouses( &fnum, &arg2, &arg3, &arg4);
  2787.           if(arg3>0) *deltax = RIGHT;
  2788.           else if(arg3<0) *deltax = LEFT;
  2789.           else *deltax = NOT_MOVED;
  2790.  
  2791.           if(arg4>0) *deltay = DOWN;
  2792.           else if(arg4<0) *deltay = UP;
  2793.           else *deltay = NOT_MOVED;
  2794.      }
  2795.  
  2796.      /* ÄΓ«íαáªáÑΓ «ñ¡«ßΓα«τ¡«Ñ ¼Ñ¡ε ñ½∩ "¼δΦ¿" ¿ ó«ºóαáΘáÑΓ
  2797.           ¬«ñ óδíαá¡¡«ú« »«½∞º«óáΓѽѼ φ½Ñ¼Ñ¡Γᠼѡε */
  2798.      mouse_menu(count, item, x, y)
  2799.      int count;           /* ¬«½¿τÑßΓó« φ½Ñ¼Ñ¡Γ«ó ¼Ñ¡ε */
  2800.      char item[][20];      /* φ½Ñ¼Ñ¡Γδ ¼Ñ¡ε */
  2801.      int x, y;           /* »«º¿µ¿¿ «Γ«íαáªÑ¡¿∩ */
  2802.      {
  2803.           int i, len[MENU_MAX][2], t;
  2804.           int mousex, mousey;
  2805.  
  2806.           goto_xy(x, y);
  2807.           t = 0;
  2808.           for(i=0; i<count; i++) {
  2809.                printf("%s   ", item[i]);
  2810.                len[i][0] = t;
  2811.                /* ¬áªñδ⌐ ß¿¼ó«½ ¿¼ÑÑΓ Φ¿α¿¡π ó 16 Γ«τѬ αáßΓαá */
  2812.                len[i][1] = t + strlen(item[i])*16;
  2813.                t = len[i][1] + 32; /* ñ«íáó½∩ÑΓß∩ ñóá »α«íѽᠼѪñπ
  2814.                                       φ½Ñ¼Ñ¡ΓἿ ¼Ñ¡ε */
  2815.           }
  2816.  
  2817.           /* «ª¿ñá¡¿Ñ óδí«αá »«½∞º«óáΓѽѼ φ½Ñ¼Ñ¡Γᠼѡε */
  2818.  
  2819.  
  2820.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  2821. â½áóá IX                                                    -- 48 --
  2822.  
  2823.  
  2824.           do {
  2825.                if(rightb_pressed() || leftb_pressed()) break;
  2826.           } while(!kbhit());
  2827.           /* «ª¿ñá¡¿Ñ ¡áªáΓ¿∩ ¬½áó¿Φ¿ */
  2828.           while(rightb_pressed() || leftb_pressed());
  2829.  
  2830.           /* »«½πτ¿Γ∞ ΓѬπΘπε »«º¿µ¿ε ¬παß«αá "¼δΦ¿" */
  2831.           mouse_position(&mousex, &mousey);
  2832.  
  2833.           /* á¡á½¿º¿απÑΓß∩, ¡áσ«ñ¿Γß∩ ½¿ ¬παß«α ó »αÑñѽáσ ¼Ñ¡ε */
  2834.                if(mousey>=0 && mousey<8)  /* ß¿¼ó«½ ¿¼ÑÑΓ óδß«Γπ
  2835.                                    8 Γ«τѬ αáßΓαá */
  2836.                     for(i=0; i<count; i++) {
  2837.                          if(mousex>len[i][0] && mousex<len[i][1])
  2838.                               return i;
  2839.                     }
  2840.                return i;
  2841.           }
  2842.  
  2843.  
  2844.      /* é«ºóαáΘáÑΓ 1, Ñß½¿ ß»Ñµ¿Σ¿µ¿α«óá¡¡á∩ ¬½áó¿Φá ¡Ñ ¡áªáΓá */
  2845.      void wait_on(button)
  2846.      int button;
  2847.      {
  2848.           if(button== LEFTB)
  2849.                while(leftb_pressed());
  2850.           else
  2851.                while(rightb_pressed());
  2852.      }
  2853.  
  2854.  
  2855.  
  2856.      /* ôßΓá¡«ó¬á "¼δΦ¿" ó ¿ßσ«ñ¡«Ñ ß«ßΓ«∩¡¿Ñ   */
  2857.      void mouse_reset()
  2858.      {
  2859.           int fnum, arg2, arg3, arg4;
  2860.  
  2861.           fnum = 0;  /* ôßΓá¡«ó¬á "¼δΦ¿" ó ¿ßσ«ñ¡«Ñ ß«ßΓ«∩¡¿Ñ  */
  2862.           cmouses( &fnum, &arg2, &arg3, &arg4);
  2863.           if(fnum!=-1) {
  2864.           printf("Ç»»áαáΓ¡δÑ ¿½¿ »α«úαá¼¼¡δÑ ßαÑñßΓóá »«ññÑ᪬¿ ");
  2865.           printf("'¼δΦ¿' ¡Ñ ¿¡ßΓ὿α«óá¡δ");
  2866.                exit(1);
  2867.           }
  2868.           if(arg2!=2) {
  2869.         printf("ÉáºαÑΦÑ¡« ¿ß»«½∞º«óá¡¿Ñ Γ«½∞¬« ñóπσ¬½áó¿Φ¡«⌐ '¼δΦ¿'");
  2870.                exit(1);
  2871.           }
  2872.      }
  2873.  
  2874.  
  2875.           Åα«úαá¼¼á α¿ß«óá¡¿∩, »αÑñ½«ªÑ¡¡á∩ óá¼ ó φΓ«⌐ ú½áóÑ, ñ«ó«½∞¡«
  2876.      πñ«í¡á  ó «íαáΘÑ¡¿¿,  Γᬠ¬á¬ »«ºó«½∩ÑΓ óá¼ α¿ß«óáΓ∞ »α«¿ºó«½∞¡δÑ
  2877.      α¿ßπ¡¬¿ (ÑßΓÑßΓóÑ¡¡« ¿ß»«½∞ºπ∩ ßΓá¡ñáαΓ¡δÑ ½¿¡¿¿),  ñó¿úá∩ß∞  »α¿
  2878.  
  2879.  
  2880.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  2881. â½áóá IX                                                    -- 49 --
  2882.  
  2883.  
  2884.      φΓ«¼  ó  ½εíδσ  »α«¿ºó«½∞¡δσ  ¡á»αáó½Ñ¡¿∩σ  »« φ¬αá¡π.  ìá»α¿¼Ñα,
  2885.      α¿ßπ¡«¬  9.1  íδ½  ¡áα¿ß«óá¡  ¡á  φ¬αá¡Ñ  ñ¿ß»½Ñ∩  íπ¬óá½∞¡«   ºá
  2886.      ¡Ñ߬«½∞¬«  ¼¿¡πΓ.  É¿ß.  9.2  ¿½½εßΓα¿απÑΓ,  τΓ«  ¿º«íαáªáÑΓß∩ ¡á
  2887.      φ¬αá¡Ñ »α¿ ó맮óÑ ¼Ñ¡ε "¼δΦ¿" (Σ«α¼á ¬παß«αá - ßΓαѽ¬á »α¿¡∩Γá »«
  2888.      π¼«½τá¡¿ε).
  2889.  
  2890.  
  2891.  
  2892.  
  2893.  
  2894.  
  2895.  
  2896.  
  2897.  
  2898.  
  2899.  
  2900.  
  2901.  
  2902.  
  2903.  
  2904.  
  2905.  
  2906.  
  2907.  
  2908.  
  2909.  
  2910.  
  2911.  
  2912.  
  2913.  
  2914.  
  2915.  
  2916.  
  2917.  
  2918.  
  2919.  
  2920.  
  2921.  
  2922.  
  2923.  
  2924.  
  2925.  
  2926.  
  2927.  
  2928.  
  2929.  
  2930.  
  2931.  
  2932.  
  2933.  
  2934.  
  2935.  
  2936.  
  2937.  
  2938.  
  2939.  
  2940.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  2941. â½áóá IX                                                    -- 50 --
  2942.  
  2943.  
  2944.                 ìàèÄÆÄÉ¢à éÄçîÄåìÄæÆê ÉÇæÿêÉàìꃠé¢ÅÄïìƒàî¢ò
  2945.                              öôìèûêë ÅÉÄâÉÇîî¢
  2946.      -----------------------------------------------------------------
  2947.  
  2948.           é«-»Ñαóδσ,  óἠ󫺼«ª¡« »«¡áñ«í¿Γß∩  ¼«ñ¿Σ¿µ¿α«óáΓ∞ Σπ¡¬µ¿ε
  2949.      mouse_menu()  ß  ΓѼ,  τΓ«íδ  ó«º¼«ª¡«  í佫  «íαáíáΓδóáΓ∞  ¼Ñ¡ε,
  2950.      ºá¡¿¼áεΘÑÑ í«½ÑÑ  «ñ¡«⌐ ßΓ᫬¿ φ¬αá¡á.  öá¬Γ¿τÑ߬¿ ñ½∩ αÑ὿ºáµ¿¿
  2951.      φΓ«ú«  ¡á¿í«½ÑÑ  »α¿Ñ¼½Ñ¼δ¼  »πΓѼ   íπñÑΓ   «íΩÑñ¿¡Ñ¡¿Ñ  Σπ¡¬µ¿¿
  2952.      «íαáí«Γ¬¿ ¼Ñ¡ε "¼δΦ¿"  ß Σπ¡¬µ¿∩¼¿ «íαáí«Γ¬¿ "óß»½δóáεΘÑú«" ¼Ñ¡ε,
  2953.      αáßß¼«ΓαÑ¡¡δ¼¿ ó ú½áóÑ 1.
  2954.  
  2955.           àß½¿ óδ »α¿ó䬽¿ αáí«ΓáΓ∞ ß ¿¬«¡¡δ¼ ¿¡ΓÑαΣÑ⌐ß«¼,  Γ«  óδ,  ó
  2956.      »α¿¡µ¿»Ñ,  ¼«ªÑΓÑ  ¼«ñ¿Σ¿µ¿α«óáΓ∞  Σπ¡¬µ¿¿  «íαáí«Γ¬¿ ¼Ñ¡ε "¼δΦ¿"
  2957.      Γᬿ¼  «íαẫ¼,  τΓ«íδ  ó¼ÑßΓ«  ß½«ó  ó  ¼Ñ¡ε   Σ¿úπα¿α«ó὿   ¡á
  2958.      ß««ΓóÑΓßΓóπεΘ¿σ  ¼ÑßΓáσ  »¿¬Γ«úαá¼¼δ,  «í«º¡áτáεΘ¿Ñ  Γ«Γ ¿½¿ ¿¡«⌐
  2959.      φ½Ñ¼Ñ¡Γ  ¼Ñ¡ε.  é«º¼«ª¡«  ΓᬪѠ ¼«ñ¿Σ¿µ¿α«óáΓ∞   Σπ¡¬µ¿¿   Γᬿ¼
  2960.      «íαẫ¼,  τΓ«íδ  «íÑß»Ñτ¿Γ∞  »«½¿φ¬αá¡δ⌐  αѪ¿¼ αáí«Γδ "¼δΦ¿",  á
  2961.      ΓᬪѠ ¬«»¿α«óá¡¿Ñ  (á  ¡Ñ   »ÑαѼÑΘÑ¡¿Ñ)   τáßΓ¿   φ¬αá¡á   (¿½¿
  2962.      ¿º«íαáªÑ¡¿∩) ß «ñ¡«ú« ¼ÑßΓá ó ñαπú«Ñ.
  2963.  
  2964.  
  2965.  
  2966.  
  2967.  
  2968.  
  2969.  
  2970.  
  2971.  
  2972.  
  2973.  
  2974.  
  2975.  
  2976.  
  2977.  
  2978.  
  2979.  
  2980.  
  2981.  
  2982.  
  2983.  
  2984.  
  2985.  
  2986.  
  2987.  
  2988.  
  2989.  
  2990.  
  2991.  
  2992.  
  2993.  
  2994.  
  2995.  
  2996.  
  2997.  
  2998.  
  2999.  
  3000.                                  "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
  3001.