home *** CD-ROM | disk | FTP | other *** search
/ For Beginners & Professional Hackers / cd.iso / docum / qc.doc / q04.prn < prev    next >
Encoding:
Text File  |  1979-12-31  |  56.7 KB  |  1,479 lines

  1.  
  2.  
  3.                              âïÇéÇ 4.
  4.  
  5.  
  6.                     çá»π߬ úαáΣ¿¬¿ »á¬ÑΓá  Quick-C.
  7.  
  8.  
  9. 4.1   æΓαπ¬Γπαá úαáΣ¿τÑ߬«⌐ »α«úαá¼¼δ.
  10. 4.2   ôßΓá¡«ó¬á ó¿ñÑ«-αѪ¿¼á.
  11. 4.3   Ä»αÑñѽѡ¿Ñ ó¿ñÑ«-¬«¡Σ¿úπαᵿ¿.
  12. 4.4   êß»«½∞º«óá¡¿Ñ µóÑΓ¡δσ ΓѬßΓ«óδσ αѪ¿¼«ó.
  13. 4.5   êß»«½∞º«óá¡¿Ñ µóÑΓ¡δσ úαáΣ¿τÑ߬¿σ αѪ¿¼«ó CGA.
  14. 4.6   êß»«½∞º«óá¡¿Ñ µóÑΓ¡δσ úαáΣ¿τÑ߬¿σ αѪ¿¼«ó EGA.
  15. 4.7   êß»«½∞º«óá¡¿Ñ µóÑΓ¡δσ úαáΣ¿τÑ߬¿σ αѪ¿¼«ó VGA.
  16. 4.8   Å«¡∩Γ¿Ñ « ¬««αñ¿¡áΓ¡δσ ß¿ßΓѼáσ.
  17. 4.9   ÉáßßΓá¡«ó¬á Γ«τѬ.
  18. 4.10  éδτÑατ¿óá¡¿Ñ ½¿¡¿⌐.
  19. 4.11  Ä»¿ßá¡¿Ñ úαáΣ¿τÑ߬¿σ «íΩÑ¬Γ«ó.
  20. 4.12  êº«íαáªÑ¡¿Ñ úαáΣ¿τÑ߬¿σ «íΩÑ¬Γ«ó.
  21. 4.13  çừ½¡Ñ¡¿Ñ Σ¿úπα »« Φáí½«¡á¼.
  22. 4.14  éδτÑατ¿óá¡¿Ñ ¿ ºá»«¼¿¡á¡¿Ñ Σ¿úπα.
  23. 4.15  êß»«½∞º«óá¡¿Ñ ¼π½∞Γ¿»½¿¬áµ¿¿.
  24.  
  25.     äá¡¡á∩ â½áóá ¬αáΓ¬« «»¿ßδóáÑΓ «ß¡«óδ úαáΣ¿τÑ߬«ú«  »α«úαá¼¼¿α«óá¡¿∩.
  26. Ä¡á αáºαáí«Γá¡á Γᬿ¼ «íαẫ¼,  τΓ«íδ ¡á¿í«½ÑÑ íδßΓαδ¼ ß»«ß«í«¼  ¡áπτ¿Γ∞
  27. óáß αÑΦáΓ∞ ½εíδÑ úαáΣ¿τÑτ߬¿Ñ ºáñáτ¿.
  28.  
  29.     ùΓ«íδ  π߬«α¿Γ∞  óáΦÑ  «íπτÑ¡¿Ñ,  ¬áªñá∩  ΓѼá αáß»«½áúáÑΓß∩ ¡á ñóπσ
  30. ßΓαá¡¿µáσ.  ÆÑ¼δ   »αÑñßΓáó½Ñ¡δ  ó   »«α∩ñ¬Ñ  óδºαáßΓá¡¿∩   ß½«ª¡«ßΓ¿  ¿
  31. »α¿í½¿º¿Γѽ∞¡« «ΓóÑτá∩ τáßΓ«ΓÑ »«∩ó½Ñ¡¿∩ ó óáΦ¿σ »α«úαá¼¼áσ.
  32.  
  33.     èáªñδ⌐ αáºñѽ  ß¡áτá½á «»αÑñѽ∩ÑΓ  ¿ «»¿ßδóáÑΓ  ΓѼπ (¬á¬,  ¡»α¿¼Ñα,
  34. ó¿ñÑ«-αѪ¿¼), ºáΓѼ »ÑαÑσ«ñ¿Γ ¬ »«ñα«í¡«¼π αáßß¼«ΓαÑ¡¿ε ñá¡¡«⌐ «»Ñαᵿ¿.
  35. èáªñδ⌐  αáºñѽ,  ¬α«¼Ñ  Γ«ú«,  ºá¬á¡τ¿óáÑΓß∩  úαáΣ¿τÑ߬«⌐ »α«úαá¼¼«⌐ ¿½¿
  36. ßÑú¼Ñ¡Γ«¼ »α«úαá¼¼δ, ¬«Γ«αá∩ »«∩ß¡∩ÑΓ ΓѼπ.
  37.  
  38. ---------------------------------------------------------------------
  39.  
  40.     é᪡«Ñ ºá¼Ñτá¡¿Ñ:
  41.  
  42.     ùΓ«íδ óδ»«½¡¿Γ∞ úαáΣ¿τÑ߬¿Ñ »α¿¼Ñαδ, »α¿óÑñÑ¡¡δÑ ó ñá¡¡«⌐ â½áóÑ, óáΦ
  43. ¬«¼»∞εΓÑα ñ«½ªÑ¡  «í½áñáΓ∞ úαáΣ¿τÑ߬¿¼¿  ó«φ¼«ª¡«ßΓ∩¼¿. ¥Γ«  ¼«ªÑΓ íδΓ∞,
  44. ¡á»α¿¼Ñα,  óßΓα«Ñ¡¡«Ñ  ßαÑñßΓó«  ¿½¿  »½áΓá  úαáΣ¿τÑ߬«ú«  áñá»ΓÑαá,   ¿
  45. ó¿ñÑ«-ñ¿ß»½Ñ⌐  (½¿í«  ¼«¡«σα«¡¡δ⌐,  ½¿í«  µóÑΓ¡«⌐), ¬«Γ«αδ⌐ »«ññÑনóáÑΓ
  46. Γ«τÑτ¡πε úαáΣ¿¬π.
  47.  
  48.     èα«¼Ñ  Γ«ú«,  óá¼  ß½ÑñπÑΓ  ó¬½ετ¿Γ∞  ó  »α«úαá¼¼¡δ⌐  ß»¿ß«¬   óáΦÑ⌐
  49. óδ»«½¡∩Ѽ«⌐ æê-»α«úαá¼¼δ úαáΣ¿τÑ߬πε  í¿í½¿«ΓѬπ. Å«ñα«í¡« φëà »α«µÑßß
  50. «»¿ßá¡ ó ÉáºñѽѠ6.1.
  51.  
  52. ---------------------------------------------------------------------
  53.  
  54.     -ä«»«½¡¿Γѽ∞¡δÑ ¿ßΓ«τ¡¿¬¿ »« ¿ºπτÑ¡¿ε úαáΣ¿¬¿.
  55.  
  56.     ä½∩  ñá½∞¡Ñ⌐ΦÑú«  »«úαπªÑ¡¿∩  ó  ¼¿¬α«¬«¼»∞εΓÑα¡πε úαáΣ¿¬π óδ ¼«ªÑΓÑ
  57. ó«ß»«½∞º«óáΓ∞ß∩ ¡Ñ¬«Γ«α묨 ¿º »α¿óÑñÑ¡¡δσ ¡¿ªÑ »«ß«í¿⌐:
  58.  
  59.     -Artwick, Bruce.  "Microcomputer Displays, Graphics and Animaition".
  60. Englewood Cliffs.  NJ:Prentice-Hall, Inc., 1985 (Äíº«α  ¼¿¬α«¬«¼»εΓÑα¡«⌐
  61. úαáΣ¿¬¿ ¿ ¼π½∞Γ¿»½¿¬áµ¿¿ ß«ºñáΓѽѼ "flight Simulator").
  62.  
  63.     -Cockerham, John T. "Tne EGA Standart" PC Teeh Journal 4:10 (October
  64. 1986): 48-79 (Äíº«α ßΓá¡ñáαΓá EGA).
  65.  
  66.     Hummel,Robert L.  "Get the  Full EGA  Color Spectrum".   PC Magazine
  67. (June 23,1987):311-328.  (Äíº«α µóÑΓ¡δσ »á½¿Γα EGA).
  68.  
  69.     -International  Business  Mashines.   "Enhanced  Graphics   Adapter"
  70. (manual part # 6280131).  (ÄΣ¿µ¿á½∞¡«Ñ ΓÑσ¡¿τÑ߬«Ñ απ¬«ó«ñßΓó«  áñá»ΓÑαá
  71. EGA, óδ»πΘÑ¡¡«Ñ Σ¿α¼«⌐ IBM, 1-800-426-7282).
  72.  
  73.     -Norton,Peter "The Peter Norton  Programmer's Guide to the  IBM PC".
  74. Redmond, WA:Microsoft press,  1985.  (æΓá¡ñáαΓ¡«Ñ απ¬«ó«ñßΓó«  "¿º¡πΓα¿"
  75. »« ßѼÑ⌐ßΓó𠬫¼»∞εΓÑα«ó IBM-PC. ìÑ߬«½∞¬« ú½áó »«ßó∩ΘÑ¡δ ó¿ñÑ«-αѪ¿¼á¼,
  76. ºá ¿ß¬½ετÑ¡¿Ñ¼ αѪ¿¼«ó EGA ¿ VGA).
  77.  
  78.  
  79.                  4.1 æΓαπ¬Γπαá úαáΣ¿τÑ߬«⌐ »α«úαá¼¼δ.
  80.  
  81.     Éáºαáí«Γ¬á óßÑσ úαáΣ¿τÑ߬¿σ »α«úαá¼¼ ó¬½ετáÑΓ ß½ÑñπεΘ¿Ñ »∩Γ∞ Φáú«ó:
  82.  
  83.       1.Å«ñ¬½ετÑ¡¿Ñ úαáΣ¿τÑ߬«⌐ í¿í½¿«ΓѬ¿.
  84.  
  85.       2.ôßΓá¡«ó¬á ó¿ñÑ«-αѪ¿¼á.
  86.  
  87.       3.Ä»αÑñѽѡ¿Ñ »áαá¼ÑΓα«ó ó¿ñÑ«-¬«¡Σ¿úπαᵿ¿.
  88.  
  89.       4.櫺ñá¡¿Ñ ¿ ¼á¡¿»π½∩µ¿¿ úαáΣ¿τÑ߬¿¼¿ Σ¿úπαἿ.
  90.  
  91.       5.é«ßßΓá¡«ó½Ñ¡¿Ñ »Ñαó«¡áτá½∞¡«⌐ ¬«¡Σ¿úπαᵿ¿ »ÑαÑñ óδσ«ñ«¼ ¿º
  92.         »α«úαá¼¼δ.
  93.  
  94.  
  95.  
  96.     -Å«ñ¬½ετÑ¡¿Ñ úαáΣ¿τÑ߬«⌐ í¿í½¿«ΓѬ¿.
  97.  
  98.     é䬽ετáѼδ⌐   ºáú«½«ó«τ¡δ⌐   Σá⌐½   graph.h   «»αÑñѽ∩ÑΓ    «ß¡«ó¡δÑ
  99. »ÑαѼѡ¡δÑ, »α«Γ«Γ¿»δ  Σπ¡¬µ¿⌐ ¿  ¬«¡ßΓá¡Γδ, ¿ß»«½∞ºπѼδÑ  ó úαáΣ¿τÑ߬«¼
  100. »α«úαá¼¼¿α«óá¡¿¿.   Å«ñ¬½ετá⌐ΓÑ   ñá¡¡δ⌐   Σá⌐½   ¬«   óßѼ  »α«úαá¼¼á¼,
  101. ¿ß»«½∞ºπεΘ¿¼ úαáΣ¿τÑ߬¿Ñ Σπ¡¬µ¿¿.
  102.  
  103.     -ôßΓá¡«ó¬á ó¿ñÑ«-αѪ¿¼á.
  104.  
  105.     ÅÑαóδ¼   Φáú«¼   ó   úαáΣ¿τÑ߬¿σ   »α«úαá¼¼áσ   ∩ó½∩ÑΓß∩   πßΓá¡«ó¬á
  106. ó¿ñÑ«-αѪ¿¼á,  ¬«Γ«αδ⌐  αáºαÑΦáÑΓ  óδ»«½¡Ñ¡¿Ñ  úαáΣ¿τÑ߬¿σ  Σπ¡¬µ¿⌐.   é
  107. úαáΣ¿τÑ߬«⌐  í¿í½¿«ΓѬѠ æê  »«ññÑনóáÑΓß∩  10 úαáΣ¿τÑ߬¿σ αѪ¿¼«ó. Ä¡¿
  108. »ÑαÑτ¿ß½Ñ¡δ ó ÉáºñѽѠ4.2.
  109.  
  110.     Åα«µÑßß πßΓᡫ󬿠ó¿ñÑ«-αѪ¿¼á «»¿ßá¡ ¡¿ªÑ:
  111.  
  112.       1. ôßΓá¡«ó¿ΓÑ ¡á¿óδßΦ¿⌐ πα«óÑ¡∞ ó¿ñÑ«-αѪ¿¼á, ΓαÑíπѼδ⌐ ñ½∩ óá-
  113.          ΦÑ⌐ »α«úαá¼¼δ. Åα«óÑα∞ΓÑ ó«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ ¡á ßí«⌐.
  114.  
  115.       2. àß½¿ óδ ¡Ñ ¼«ªÑΓÑ πßΓá¡«ó¿Γ∞ »Ñαó«¡áτá½∞¡« ºáñá¡¡δ⌐ ó¿ñÑ«-
  116.          -αѪ¿¼, »α«ñ«½ª¿ΓÑ »«»δΓ¬π ß í«½ÑÑ ß½áí묨 αѪ¿¼á¼¿ ñ«
  117.          ΓÑσ »«α, »«¬á αѪ¿¼ ¡Ñ íπñÑΓ πßΓá¡«ó½Ñ¡, ¿½¿ ñ« ΓÑσ »«α,
  118.          »«¬á ¡Ñ «ßΓá¡ÑΓß∩ ó¿ñÑ«-αѪ¿¼«ó, πñ«ó½ÑΓó«α∩εΘ¿σ óáΦÑ⌐ »α«ú-
  119.          αá¼¼Ñ. àß½¿ ¡Ñ ¡á⌐ñÑ¡« ¬«ααÑ¬Γ¡«ú« ó¿ñÑ«-αѪ¿¼á, óδ⌐ñÑΓÑ ¿º
  120.          Σπ¡¬µ¿¿ ¿ ¡á»ÑτáΓá⌐ΓÑ ß««íΘÑ¡¿Ñ «í «Φ¿í¬Ñ.
  121.  
  122.     -Ä»αÑñѽѡ¿Ñ ó¿ñÑ«-¬«¡Σ¿úπαᵿ¿.
  123.  
  124.     ä½∩ «»αÑñѽѡ¿∩ σáαá¬ΓÑα¿ßΓ¿¬  ó¿ñÑ«-αѪ¿¼á ß½ÑñπÑΓ óδºóáΓ∞  Σπ¡¬µ¿ε
  125. getvideoconfig.   Å«½πτÑ¡¡á∩   ¿¡Σ«α¼áµ¿∩   ó¬½ετáÑΓ   ΓᬿѠ  óÑΘ¿, ¬á¬
  126. ¬«½¿τÑßΓó« »¿¬ßѽ«ó  x ¿  y ñ½∩  ¬áªñ«ú« αẼÑαá  ¿ ¬«½¿τÑßΓó« ó«º¼«ª¡δσ
  127. µóÑΓ«ó.
  128.  
  129.     -é«ßßΓá¡«ó½Ñ¡¿Ñ »Ñαó«¡áτá½∞¡«⌐ ¬«¡Σ¿úπαᵿ¿.
  130.  
  131.     é«ßßΓá¡«ó¿ΓÑ  ß¿ßΓѼπ  ó  ÑÑ  »Ñαó«¡áτá½∞¡δ⌐ ó¿ñÑ«-αѪ¿¼ »«ßαÑñßΓó«¼
  132. ó맮óá  Σπ¡¬µ¿¿  setvideomode  ß  ¬«¡ßΓá¡Γ«⌐  DEFAULTMODE. ÄΓ¬áº ß¿ßΓѼδ
  133. óδ»«½¡¿Γ∞ ñá¡¡δÑ  ñÑ⌐ßΓó¿∩ »α¿óÑñπΓ  ¬ Γ«¼π,  τΓ« »α¿  ºá»π߬Ѡ߽ÑñπεΘÑ⌐
  134. »α«úαá¼¼δ ¼áΦ¿¡á íπñÑΓ "ºáí½«¬¿α«óá¡á".
  135.  
  136.       -Åα¿¼Ñα: æ¬Ñ½ÑΓ úαáΣ¿τÑ߬«⌐ »α«úαá¼¼δ.
  137. #include <stdio.h>
  138. #include <graph.h> /* »«ñ¬½ετáѼδ⌐ Σá⌐½ úαáΣ¿τÑ߬¿σ Σπ¡¬µ¿⌐ */
  139. int set mode (void); /* »α«Γ«Γ¿» */
  140. struct videoconfig vc; /* ñá¡¡δÑ ¬«¡Σ¿úπαᵿ¿ */
  141. char error message [] = "This video mode is not supported";
  142. main()
  143. {
  144. /* »α«úαá¼¼á ΓαÑíπÑΓ αáºαÑΦÑ¡¿∩ φ¬αá¡á 640x200 */
  145.    if (!set mode()){ /* Ñß½¿ set mode ºáóÑαΦ¿½áß∞ ¡Ñπñáτ¡« */
  146.      printf ("%s\n", error message); /* »ÑτáΓ∞ ß««íΘÑ¡¿∩ «í «Φ¿í¬Ñ */
  147.      exit (0); /* ¿ óδσ«ñ */
  148.    }
  149.    _getvideoconfig (&vc); /* ñá¡¡δÑ ó¿ñÑ«-¬«¡Σ¿úπαᵿ¿ ó VC */
  150.               /* ºñÑß∞ óδ»«½¡∩εΓß∩ úαáΣ¿τÑ߬¿Ñ «»Ñαᵿ¿ */
  151.    /* ó«ßßΓá¡«ó½Ñ¡¿Ñ ó¿ñÑ«-αѪ¿¼á */
  152.    _setvideomode (_DEFAULTMODE);
  153. }
  154.    /* Σπ¡¬µ¿∩ ñ½∩ πßΓᡫ󬿠αѪ¿¼á; »αÑñ»«½áúáÑΓß∩, τΓ« »α«úαá¼¼á
  155.       ΓαÑíπÑΓ αáºαÑΦÑ¡¿∩ 640x200 */
  156. int set_mode()
  157. {
  158.    if (_setvideomode (_HRES16COLOR)) /* VGA ¿½¿ EGA */
  159.       return (_HRES16COLOR);
  160.  
  161.  
  162.  
  163.    if (_setvideomode(_HRESBW)) /* VGA, EGA ¿½¿ CGA */
  164.       return (_HRESBW);
  165.    esle
  166.      return (0);
  167. }
  168.  
  169.     Åα«úαá¼¼á,»α¿óÑñÑ¡¡á∩ óδΦÑ, ó «íΘ¿σ τÑαΓáσ «íα¿ß«óδóáÑΓ  úαáΣ¿τÑ߬πε
  170. »α«úαá¼¼π.
  171.  
  172.  
  173.                      4.2. ôßΓá¡«ó¬á ó¿ñÑ«-αѪ¿¼á.
  174.  
  175.     éßÑ  úαáΣ¿τÑ߬¿Ñ  »α«úαá¼¼δ  αáí«ΓáεΓ  ó  «»αÑñѽѡ¡«¼   úαáΣ¿τÑ߬«¼
  176. αѪ¿¼Ñ,  ¬«Γ«αδ⌐  «»αÑñѽ∩ÑΓ  αẼÑα  φ¬αá¡á  (ó  »¿¬ßѽáσ) ¿ ¬«½¿τÑßΓó«
  177. 󫺼«ª¡δσ µóÑΓ«ó. ÉѪ¿¼, πßΓá¡«ó½Ñ¡¡δ⌐ »α«úαá¼¼«⌐, ñ«½ªÑ¡ íδΓ∞ ß«ó¼ÑßΓ¿¼
  178. ß ¬«¡Σ¿úπαᵿÑ⌐ «í«απñ«óá¡¿∩.
  179.  
  180.     -髺¼«ª¡δÑ αѪ¿¼δ.
  181.  
  182.     ä½∩ πßΓᡫ󬿠ó¿ñÑ«-αѪ¿¼«ó ¿ß»«½∞ºπεΓß∩ »α¿óÑñÑ¡¡δÑ ¡¿ªÑ ¬«¡ßΓá¡Γδ.
  183. ÉẼÑαδ  ñáεΓß∩  ó  »¿¬ßѽáσ  ñ½∩  úαáΣ¿τÑ߬¿σ  αѪ¿¼«ó,  ¿  ó ßΓ᫬áσ ¿
  184. ¬«½«¡¬áσ ñ½∩ ΓѬßΓ«óδσ αѪ¿¼«ó.
  185.  
  186. è«¡ßΓá¡Γá              é¿ñÑ«-αѪ¿¼                ÆÑ¬ßΓ«óδ⌐ ¿½¿
  187.                                                   úαáΣ¿τÑ߬¿⌐
  188.  
  189. _DEFAULTMODE           é«ßßΓá¡áó½¿óáÑΓ φ¬αá¡ ó   Äíá
  190.                        «α¿ú¿¡á½∞¡δ⌐ αѪ¿¼
  191. _TEXTBW40              40x25 ΓѬßΓ, 16 ßÑαδσ     ΓѬßΓ«óδ⌐
  192. _TEXTTC40              40x25 ΓѬßΓ, 16/8 µóÑΓ¡δσ ΓѬßΓ«óδ⌐
  193. _TEXTBW80              80x25 ΓѬßΓ, 16 ßÑαδσ     ΓѬßΓ«óδ⌐
  194. _TEXTC80               80x25 ΓѬßΓ, 16/8 µóÑΓ¡δσ ΓѬßΓ«óδ⌐
  195. _MRES4COLOR            320x200 ∩τÑѬ, 4 µóÑΓá    úαáΣ¿τÑ߬¿⌐
  196. _MRESNOCOLOR           320x200 ∩τÑѬ, 4 ßÑαδσ    úαáΣ¿τÑ߬¿⌐
  197. _HRESBW                640x200 ∩τÑѬ, BW         úαáΣ¿τÑ߬¿⌐
  198. _TEXTMONO              80x25 ΓѬßΓ, BW           ΓѬßΓ«óδ⌐
  199. _MRES16COLOR           320x200 ∩τÑѬ, 16 µóÑΓ«ó  úαáΣ¿τÑ߬¿⌐
  200. _HRES16COLOR           640x200 ∩τÑѬ, 16 µóÑΓ«ó  úαáΣ¿τÑ߬¿⌐
  201. _ERESNOCOLOR           640x350 ∩τÑѬ, BW         úαáΣ¿τÑ߬¿⌐
  202. _ERESCOLOR             640x350 ∩τÑѬ,4/16 µóÑΓ«ó úαáΣ¿τÑ߬¿⌐
  203. _VRES2COLOR            640x480 ∩τÑѬ, 2 µóÑΓá    úαáΣ¿τÑ߬¿⌐
  204. _VRES16COLOR           640x480 ∩τÑѬ, 16 µóÑΓ«ó  úαáΣ¿τÑ߬¿⌐
  205. _MRES256COLOR          320x200 ∩τÑѬ, 256 µóÑΓ«ó úαáΣ¿τÑ߬¿⌐
  206.  
  207.  
  208.  
  209.     -éδí«α ó¿ñÑ«-αѪ¿¼á.
  210.  
  211.     éδíÑαÑΓÑ ó¿ñÑ«-αѪ¿¼  ß ΓαÑíπÑ¼δ¼  αáºαÑΦÑ¡¿Ñ¼ ñ½∩  óδ»«½¡Ñ¡¿∩ óáΦÑ⌐
  212. ºáñáτ¿.  éá¼   ¡πª¡«  ßñѽáΓ∞   óδí«α  ¼Ñªñπ   »«óδΦÑ¡¿Ñ¼Ñ¼  αáºαÑΦáεΘÑ⌐
  213. ß»«ß«í¡«ßΓ¿ φ¬αá¡á ¿ ¬«½¿τÑßΓó«¼  µóÑΓ«ó. ä½∩ πßΓᡫ󬿠αѪ¿¼á  ó맮ó¿ΓÑ
  214. Σπ¡¬µ¿ε _setvideomode ß «ñ¡«⌐ ¿º »ÑαÑτ¿ß½Ñ¡¡δσ óδΦÑ ¬«¡ßΓá¡Γ.
  215.  
  216.     é«ºóαáΘáѼ«Ñ  º¡áτÑ¡¿Ñ  0  «í«º¡áτáÑΓ,  τΓ«  óáΦÑ  «í«απñ«óá¡¿Ñ   ¡Ñ
  217. »«ññÑαñ¿óáÑΓ  óδíαá¡¡δ⌐  ó¿ñÑ«-αѪ¿¼.  æñѽá⌐ΓÑ  óδσ«ñ  ¿º  »α«úαá¼¼δ  ß
  218. ß««íΘÑ¡¿Ñ¼   «   Γ«¼,   τΓ«   óδíαá¡¡δ⌐   ó¿ñÑ«-αѪ¿¼  ¡Ñ »«ññÑনóáÑΓß∩
  219. ¬«¡Σ¿úπαᵿÑ⌐ óáΦÑú« «í«απñ«óá¡¿∩.
  220.  
  221.     Å«ß½Ñ Γ«ú«, ¬á¬  ΓαÑíπѼ«⌐ ó¿ñÑ«-αѪ¿¼ πßΓá¡«ó½Ñ¡,  ó맮ó¿ΓÑ Σπ¡¬µ¿ε
  222. _getvideoconfig  ñ½∩  «»αÑñѽѡ¿∩  »áαá¼ÑΓα«ó  óδíαá¡¡«ú«   ó¿ñÑ«-αѪ¿¼á
  223. (ΓᬿÑ, ¬á¬ αẼÑαδ  φ¬αá¡á). Å«¼ÑßΓ¿ΓÑ ¿¡Σ«α¼áµ¿ε  ó¿ñÑ«-¬«¡Σ¿úπαᵿ¿ ó
  224. ߻ѵ¿á½∞¡πε ßΓαπ¬Γπαπ, ¬«Γ«απε  íπñπΓ ¿ß»«½∞º«óáΓ∞ úαáΣ¿τÑ߬¿Ñ  Σπ¡¬µ¿¿.
  225. êß»«½∞ºπ⌐ΓÑ  ßΓαπ¬Γπαπ  ó¿ñÑ«-¬«¡Σ¿úπαᵿ¿,   á  ¡Ñ  áíß«½εΓ¡δÑ   τ¿ß½á,
  226. «»αÑñѽ∩εΘ¿Ñ  σáαá¬ΓÑα¿ßΓ¿¬¿  φ¬αá¡á.  ¥Γ«  «íÑß»Ñτ¿Γ  »ÑαÑ¡«ß¿¼«ßΓ∞  ¡á
  227. ñαπú¿Ñ φ¬αá¡¡δÑ ¬«¡Σ¿úπαᵿ¿ (CGA, EGA ¿½¿ VGA).
  228.  
  229.     -é«ßßΓá¡«ó½Ñ¡¿Ñ ó¿ñÑ«-αѪ¿¼á.
  230.  
  231.     Å« «¬«¡τá¡¿ε »α«úαá¼¼δ  óßÑúñá ß½ÑñπÑΓ ó«ßßΓá¡áó½¿óáΓ∞  «α¿ú¿¡á½∞¡δ⌐
  232. ó¿ñÑ«-αѪ¿¼  ß  »«¼«Θ∞ε   ó맮óá  Σπ¡¬µ¿¿  _setvideomode   ß  »áαá¼ÑΓα«¼
  233. _DEFAULTMODE. ÄΓ¬áº ß¿ßΓѼδ ó«ßßΓá¡«ó¿Γ∞ «α¿ú¿¡á½∞¡δ⌐ ó¿ñÑ«-αѪ¿¼  »«ß½Ñ
  234. óδ»«½¡Ñ¡¿∩  úαáΣ¿τÑ߬«⌐  »α«úαá¼¼δ  »α¿óÑñÑΓ  ¬  Γ«¼π,  τΓ«  »α¿ ºá»π߬Ñ
  235. ß½ÑñπεΘÑ⌐ »α«úαá¼¼δ ¼áΦ¿¡á íπñÑΓ "ºí½«¬¿α«óá¡á".
  236.  
  237.       -Åα¿¼Ñα: ôßΓá¡«ó¬á ó¿ñÑ«-αѪ¿¼á.
  238. #include <stdio.h>
  239. #include <graph.h>
  240. int set mode (void);
  241. struct videoconfig vc;
  242. char error _message [] = "äá¡¡δ⌐ ó¿ñÑ«-αѪ¿¼ ¡Ñ »«ññÑনóáÑΓß∩".
  243. main()
  244. {
  245.    if (!set_mode()) {
  246.       printf ("%s\n", error_message);
  247.       exit(0);
  248.    }
  249.   _setvideoconfig (&vc); /* »«¼ÑΘÑ¡¿Ñ ñá¡¡δ󠬫¡Σ¿úπαᵿ¿ ó VC */
  250.            /* ñá½ÑÑ ß½ÑñπÑΓ Γѽ« »α«úαá¼¼δ */
  251.    _setvideomode (_DEFAULTMODE); /* ó«ßßΓá¡«ó½Ñ¡¿Ñ ó¿ñÑ«-αѪ¿¼á */
  252.  
  253.  
  254. }
  255. int set_mode()
  256. {
  257. /* »αÑñ»«½áúáÑΓß∩, τΓ« »α«úαá¼¼á ΓαÑíπÑΓ αáºαÑΦÑ¡¿∩ 640x200 */
  258. if (_setvideomode(_HRES16COLOR))
  259.    return (_HRES16COLOR);
  260. if (_setvideomode(_HRESBW))
  261.    return (_HRESBW);
  262. else
  263.    return (0);
  264. }
  265.  
  266.  
  267.                  4.3. Ä»αÑñѽѡ¿Ñ ó¿ñÑ«-¬«¡Σ¿úπαᵿ¿.
  268.  
  269.     éß∩  ¿¡Σ«α¼áµ¿∩  «  ó¿ñÑ«-¬«¡Σ¿úπαᵿ¿  ß«ñÑনΓß∩  ó ßΓαπ¬ΓπαÑ Γ¿»á
  270. videoconfig. æ«ñÑন¼«Ñ ñá¡¡«⌐ ßΓαπ¬Γπαδ «»αÑñѽѡ« ó Σá⌐½Ñ graph.h. Åα¿
  271. πßΓá¡«ó¬Ñ ó¿ñÑ«-αѪ¿¼á, »αÑñóáα¿Γѽ∞¡« ñ«½ª¡á íδΓ∞ ºáñá¡á ¿¡Σ«α¼áµ¿∩ ñ½∩
  272. ó¿ñÑ«-¬«¡Σ¿úπαᵿ¿.
  273.  
  274.     -ÅÑαѼѡ¡á∩-ßΓαπ¬Γπαá videoconfig.
  275.  
  276.     ä½∩ »«½πτÑ¡¿∩  ¿¡Σ«α¼áµ¿¿ «  ó¿ñÑ«-¬«¡Σ¿úπαᵿ¿ óá¼  ß½ÑñπÑΓ «»¿ßáΓ∞
  277. »ÑαѼѡ¡πε  Γ¿»á  videoconfig.  äá¡¡á∩  ßΓαπ¬Γπαá íπñÑΓ ¿ß»«½∞º«óáΓ∞ß∩ ó
  278. ó맮óÑ getvideoconfig ó ß½ÑñπεΘѼ Σ«α¼áΓÑ:
  279.  
  280. struct videoconfig vc; /* «»¿ßá¡¿Ñ »ÑαѼѡ¡«⌐-ßΓαπ¬Γπαδ */
  281.    .
  282.    .
  283.    .
  284. _getvideoconfig (&vc); /* ¿ß»«½∞º«óá¡¿Ñ »ÑαѼѡ¡«⌐-ßΓαπ¬Γπαδ */
  285.  
  286.  
  287.       -æ«ñÑন¼«Ñ ßΓαπ¬Γπαδ videoconfig.
  288.  
  289.     æΓαπ¬Γπαá videoconfig «»αÑñѽ∩ÑΓß∩ ó úαáΣ¿τÑ߬«¼ ºáú«½«ó«τ¡«¼  Σá⌐½Ñ
  290. graph.h, ¿ ß«ñÑαª¿Γ ß½ÑñπεΘ¿Ñ φ½Ñ¼Ñ¡Γδ:
  291.  
  292. struct videoconfig {
  293.    short numxpixels; /* ¬«½¿τÑßΓó« »¿¬ßѽ«ó »« «ß¿ X */
  294.    short numypixels; /* ¬«½¿τÑßΓó« »¿¬ßѽ«ó »« «ß¿ Y */
  295.    short numtextcols; /* ¬«½¿τÑßΓó« ó«º¼«ª¡δσ ΓѬßΓ«óδ󠬫½«¡«¬ */
  296.    short numtextrows; /* ¬«½¿τÑßΓó« ó«º¼«ª¡δσ ΓѬßΓ«óδσ ßΓ᫬ */
  297.    short numcolors; /* ¬«½¿τÑßΓó« αÑá½∞¡δσ µóÑΓ«ó */
  298.    short bitsperpixel; /* ¬«½¿τÑßΓó« αáºα∩ñ«ó ¡á »¿¬ßѽ */
  299.    short numvideopages; /* ¬«½¿τÑßΓó« ñ«ßΓπ»¡δσ ó¿ñÑ«-ßΓαá¡¿µ */
  300. };
  301.  
  302.     -êß»«½∞º«óá¡¿Ñ ¿¡Σ«α¼áµ¿¿ ß ó¿ñÑ«-¬«¡Σ¿úπαᵿ¿.
  303.  
  304.     ê¡Σ«α¼áµ¿∩    ó¿ñÑ«-¬«¡Σ¿úπαᵿ¿    »α¿¼Ñ¡∩ÑΓß∩    ñ½∩   «»αÑñѽѡ¿∩
  305. αẼÑα¡«ßΓÑ⌐ φ¬αá¡á.  é ½εí«¼  úαáΣ¿τÑ߬«¼ αѪ¿¼Ñ  µÑ¡Γα φ¬αá¡á ºáñáÑΓß∩
  306. ß½ÑñπεΘ¿¼¿ ¬««αñ¿¡áΓἿ:
  307.  
  308. xcenter =  vc.numxpixels/2 -  1; /*  ¬««αñ¿¡áΓᠵѡΓαá  »« «ß¿  X */
  309. Ycenter = vc.numypixels/2 - 1; /* ¬««αñ¿¡áΓᠵѡΓαá »« «ß¿ Y */
  310.  
  311.     ÅÑαѼѡ¡á∩ vc.vcnumxpixels-φΓ« τ¿ß½« »¿¬ßѽ«ó »« «ß¿ X, á »ÑαѼѡ¡á∩
  312. vc.vcnumypixels-φΓ«  ¬«½¿τÑßΓó«   »¿¬ßѽ«ó  »«   «ß¿  Y   ó  ó   ΓѬπΘѼ
  313. ó¿ñÑ«-αѪ¿¼Ñ.
  314.  
  315.       -Åα¿¼Ñα: ÄíαáΘÑ¡¿Ñ ¬ ßΓαπ¬ΓπαÑ ó¿ñÑ«-¬«¡Σ¿úπαᵿ¿.
  316. #include <stdio.h>
  317. #include <ctype.h>
  318. #include <graph.h>
  319. struct videoconfig vc; /* »ÑαѼѡ¡á∩ vc Γ¿»á videoconfig */
  320.  
  321.  
  322. /* «»ÑαÑñѽѡ¿Ñ ¼áßß¿óá ó¿ñÑ«-αѪ¿¼«ó ¿ ¡á¿¼Ñ¡«óá¡¿⌐ αѪ¿¼«ó, »«ß-
  323.    ¬«½∞¬π τ¿ß½á ¡Ñ »«ß½Ññ«óáΓѽ∞¡δ */
  324. int modes[12] = {_TEXTBW40, _TEXTC40, _TEXTBW80, _TEXTC80,
  325.     _MRES4COLOR, _MRESNOCOLOR, _HRESBW, _TEXTMONO,
  326.     _MMRES16COLOR, _HRES16COLOR, _ERESNOCOLOR, _ERESCOLOR};
  327. char *modenames[] = {"TEXTBW40", "TEXTC40", "TEXTBW80",
  328.                       "TEXTC80", "MRES²COLOR", "MRESNOCOLOR",
  329.                       "HRESBW", "TEXTMONO", "MRES16COLOR",
  330.                       "HRES16COLOR", "ERESNOCOLOR", "ERESCOLOR"};
  331. main()
  332. {
  333.    int i;
  334.    /* »α«óÑα¬á óßÑσ ó¿ñÑ«-αѪ¿¼«ó */
  335.    for (i=0; i<=11; i++) {
  336.         setvideodeomode (modes[i]);
  337.         getvideoconfig (&vc);
  338.        printf ("\n video mode:\t%s\n",modenames[i]);
  339.        printf (" x pixels:\t%d\n",vc.numxpixels);
  340.        printf (" y pixels:\t%d\n",vc.numypixels);
  341.        printf (" text columns:\t%d\n",vc.numtextcols);
  342.        printf (" text rows:\t%d\n",vc.numtextrows);
  343.        printf (" # of colors:\t%d\n",vc.numcolors);
  344.        printf (" bits/pixel:\t%d\n",vc.bitsperpixel);
  345.        printf (" video pages:\t%d\n",vc.numvideopages);
  346.        print (" Hit return for next video mode");
  347.       _setcolor (2);
  348.        _rectangle (_GBORDER,0,0,vc.numxpixels-5,
  349.  
  350.  
  351.        vc.numypixels-5);
  352.        getchar();
  353.        _clearscreen (_GCLEARSCREEN);
  354.    }
  355.    _setvideomode (_DEFAULTMODE);
  356. }
  357.  
  358.     Åα«úαá¼¼á, »α¿óÑñÑ¡¡á∩ óδΦÑ, óδºδóáÑΓ ¬áªñδ⌐ ó«º¼«ª¡δ⌐ ó¿ñÑ«-αѪ¿¼ ¿
  359. αáß»ÑτáΓδóáÑΓ  ¿¡Σ«α¼áµ¿¿  ó¿ñÑ«-¬«¡Σ¿úπαᵿ¿.  äá¡¡á∩  »α«úαἼᠠΓᬪÑ
  360. óδτÑατ¿óáÑΓ »« ¬αá∩¼ φ¬αá¡á »α∩¼«πú«½∞¡¿¬.
  361.  
  362.  
  363.              4.4. êß»«½∞º«óá¡¿Ñ µóÑΓ¡δσ ΓѬßΓ«óδσ αѪ¿¼«ó.
  364.  
  365.     æ  ñ¿ß»½Ñ∩¼¿  CGA,  EGA  ¿  VGA ¼«ª¡« ¿ß»«½∞º«óáΓ∞ µóÑΓ¡δÑ ΓѬßΓ«óδÑ
  366. αѪ¿¼Ñ _TEXTC40  ¿ _TEXTC80.  äá¡¡δÑ αѪ¿¼δ  »αÑñ½áúáεΓ 16  »ÑαÑñ¡¿σ ¿ 8
  367. Σ«¡«óδσ µóÑΓ«ó.
  368.  
  369.     -Äß¡«óδ óδí«αá µóÑΓá ΓѬßΓá.
  370.  
  371.     é  ΓѬßΓ«ó«¼  αѪ¿¼Ñ  ¬áªñδ⌐  óδßóÑτ¿óáѼδ⌐  ß¿¼ó«½  ΓαÑíπÑΓ 2 íá⌐Γá
  372. ó¿ñÑ«-»á¼∩Γ¿. ÅÑαóδ⌐ íá⌐Γ ß«ñÑαª¿Γ  ¬«ñ ASCII, »αÑñßΓáó½∩εΘ¿⌐ ß¿¼ó«½,  á
  373. óΓ«α«⌐ íá⌐Γ  ß«ñÑαª¿Γ áΓα¿íπΓ  ¿º«íαᪿ¡¿∩. é  µóÑΓ¡«¼ ΓѬßΓ«ó«¼  αѪ¿¼Ñ
  374. CGA, íá⌐Γ-áΓα¿íπΓ «»αÑñѽ∩ÑΓ µóÑΓ ¿ ¡á½¿τ¿Ñ ¼Ñαµá¡¿∩ ß¿¼ó«½á. ê¼ÑεΓß∩ 16
  375. µóÑΓ«ó: º¡áτÑ¡¿∩ »¿¬ßѽ«ó CGA ¿ ßΓá¡ñáαΓ¡δÑ º¡áτÑ¡¿∩ »¿¬ßѽ«ó EGA ¿ VGA.
  376.  
  377.     Å«ß¬«½∞¬π  »á½¿Γαδ  EGA  ¿  VGA  ¼«úπΓ  íδΓ∞ »ÑαÑ»½á¡¿α«óá¡δ, ñá¡¡δÑ
  378. º¡áτÑ¡¿∩ ñ«½ª¡δ íδΓ∞ ºáñá¡δ Γᬿ¼ «íαẫ¼, τΓ«íδ ß««ΓóÑΓßΓó«óáΓ∞  ½εí«¼π
  379. ¡áí«απ  16  µóÑΓ«ó  ß  ß««ΓóÑΓßΓóπεΘÑ⌐  ¬áαΓ«⌐  »á½¿Γαδ.   (ê¡Σ«α¼áµ¿ε «
  380. »ÑαÑ»½á¡¿α«óá¡¿¿  º¡áτÑ¡¿⌐  ∩τÑѬ  EGA  ¿  VGA  ß¼«Γα¿ΓÑ  ß««ΓóÑΓßΓóÑ¡¡«
  381. αáºñѽδ 4.6 ¿ 4.7).
  382.  
  383.  
  384.     -êß»«½∞º«óá¡¿Ñ µóÑΓ«ó ΓѬßΓá.
  385.  
  386.     ä½∩ Γ«ú«,τΓ«íδ ¡á⌐Γ¿ º¡áτÑ¡¿Ñ ß««ΓóÑΓßΓóπεΘÑú« º¡áτÑ¡¿∩ »¿¬ßѽᠠñ½∩
  387. ΓѬπΘÑú«  µóÑΓá  ΓѬßΓá,  ¿ß»«½∞ºπ⌐ΓÑ  Σπ¡¬µ¿ε  _gettextcolor.  ç¡áτÑ¡¿∩
  388. »¿¬ßѽ«ó  ó  »αÑñѽáσ  «Γ  0  ñ«  15 ¿¡ΓÑα»αÑΓ¿απεΓß∩ ¬á¬ «íδτ¡δÑ µóÑΓá.
  389. ç¡áτÑ¡¿∩ »¿¬ßѽ«ó «Γ 16  ñ« 31-φΓ« ΓÑ ªÑ  ßá¼δÑ µóÑΓá, τΓ« ¿  0-15, ¡« ß
  390. ¼ÑαµáεΘ¿Ñ.
  391.  
  392.     ôßΓá¡áó½¿óáεΓß∩  µóÑΓá  ñ½∩  ΓѬßΓ«óδσ  αѪ¿¼«ó  »«ßαÑñßΓó«¼ Σπ¡¬µ¿¿
  393. _settextcolor. äá¡¡á∩ Σπ¡¬µ¿∩ ¿ß»«½∞ºπÑΓ Ññ¿¡ßΓóÑ¡¡δ⌐ áαúπ¼Ñ¡Γ,  ¬«Γ«αδ⌐
  394. ºáñáÑΓ  º¡áτÑ¡¿Ñ  »¿¬ßѽᠠñ½∩  ¿ß»«½∞º«óá¡¿∩  ó  ΓѬßΓ«óδσ   «»Ñαᵿ∩σ.
  395. ç¡áτÑ¡¿Ñ »¿¬ßѽᠠ0 »α¿ó«ñ¿Γ  ¬ ¡Ñó¿ñ¿¼«¼π  óδó«ñπ, »«ß¬«½∞¬π  «¡ óßÑúñá
  396. »αÑñßΓáó½∩ÑΓ ΓѬπΘ¿⌐ µóÑΓ Σ«¡á. ûóÑΓ  ΓѬßΓá ¡Ñ ó½¿∩ÑΓ ¡á «íδτ¡δ⌐  óδó«ñ
  397. ∩ºδ¬á  æê.  ä½∩  óδó«ñá  µóÑΓ¡«ú«  ΓѬßΓá  ß½ÑñπÑΓ  ¿ß»«½∞º«óáΓ∞ Σπ¡¬µ¿ε
  398. _outtext.  ì¿ªÑ  «»αÑñѽ∩εΓß∩  º¡áτÑ¡¿∩  ∩τÑѬ  ñ½∩  µóÑΓ¡δσ   ΓѬßΓ«óδσ
  399. αѪ¿¼«ó:
  400.  
  401. ⁿ   ûóÑΓ        ⁿ   ûóÑΓ         ⁿ   ûóÑΓ          ⁿ   ûóÑΓ
  402.  
  403. 0   τÑα¡δ⌐      4   ¬αáß¡δ⌐      8   ΓѼ¡«-ßÑαδ⌐   12  ßóÑΓ½«-¬αáß¡δ⌐
  404. 1   ú«½πí«⌐     5   ½¿½«óδ⌐      9   ßóÑΓ½«-ú«½π-  13  ßóÑΓ½«-½¿½«óδ⌐
  405.                     (Σαπ¬ß¿¡)        í«⌐
  406. 2   ºÑ½Ñ¡δ⌐     6   ¬«α¿τ¡Ñóδ⌐   10  ßóÑΓ½«-ºÑ½Ñ-  14  ªÑ½Γδ⌐
  407.                                      ¡δ⌐
  408. 3   ºÑ½Ñ¡«óáΓ«- 7   íѽδ⌐        11  ßóÑΓ½«-ºÑ½Ñ-  15  ∩ᬫ-íѽδ⌐
  409.     -ú«½πí«⌐                         ¡«óáΓ«-ú«½πí«⌐
  410.  
  411.  
  412.  
  413.       -Åα¿¼Ñα: éδó«ñ µóÑΓ¡«ú« ΓѬßΓá.
  414. #include <stdio.h>
  415. #include <graph.h>
  416. char buffer [225];
  417.  
  418.  
  419. main()
  420. {
  421.    int i,j;
  422.    long int delay;
  423.    _setvideomode (_TEXTC80);
  424.    for (j=0; j<= 7; j++) {
  425.                _setbkcolor (j); /* Σ«¡«óδÑ µóÑΓá */
  426.                _settextrosition (1,1);
  427.                printf ("bkocolor: %d\n", j);
  428.                for (i=0; i<= 15; i++) {
  429.                   _settextcolor (i); /* µóÑΓá ΓѬßΓá */
  430.                   _settextrosition (5+i,i);
  431.                   sprintf (buffer, "Color: %d\n", i9;
  432.                   _outtext (buffer);
  433.                }
  434.                   /* »áπºá */
  435.                  for (delay = 0; delay <=200000; delay++);
  436. }
  437.    _clearscreen (_GCLEARSCREEN);
  438.    _setvideomode (_DEFAULTMODE);
  439. }
  440.  
  441.     Åα¿óÑñÑ¡¡á∩ óδΦÑ  »α«úαá¼¼á ó  µ¿¬½Ñ »α«σ«ñ¿Γ  τÑαѺ óßÑ  ¬«¼í¿¡áµ¿¿
  442. µóÑΓ«ó Σ«¡á ¿ ΓѬßΓá.
  443.  
  444.  
  445.           4.5. êß»«½∞º«óá¡¿Ñ µóÑΓ¡δσ úαáΣ¿τÑ߬¿σ αѪ¿¼«ó CGA.
  446.  
  447.     ûóÑΓ¡δÑ úαáΣ¿τÑ߬¿Ñ αѪ¿¼δ CGA  (Γ« ÑßΓ∞ MRES4COLOR ¿  _MRESNOCOLOR)
  448. óδßóÑτ¿óáεΓ  4  µóÑΓá  (¿½¿  «ΓΓÑ¡¬¿  ßÑα«ú«),  óδí¿αáѼδÑ ¿º ¡Ñ߬«½∞¬¿σ
  449. ºáñá¡¡δσ »á½¿Γα µóÑΓ«ó. Ä¡¿ óδßóÑτ¿óáεΓ µóÑΓá »ÑαÑñ¡Ñú« »½á¡á ¡á  µóÑΓáσ
  450. Σ«¡á, óδí¿αáѼδσ ¿º 16 ó«º¼«ª¡δσ µóÑΓ«ó.
  451.  
  452.     -ûóÑΓ¡á∩ úαáΣ¿¬á CGA.
  453.  
  454.     é  úαáΣ¿τÑ߬«¼  αѪ¿¼Ñ  »¿¬ßѽ  φ¬αá¡á  »αÑñßΓáó½∩ÑΓß∩ ó ó¿ñÑ «ñ¡«-,
  455. ñóπσ-  ¿½¿  τÑΓδαÑσ  αáºα∩ñ¡«ú«  º¡áτÑ¡¿∩,  ó  ºáó¿ß¿¼«ßΓ¿ «Γ óδíαá¡¡«ú«
  456. αѪ¿¼á.  äá¡¡«Ñ  »αÑñßΓáó½Ñ¡¿Ñ  ¿ºóÑßΓ¡«,  ¬á¬  "º¡áτÑ¡¿Ñ  »¿¬ßѽá".   é
  457. ñ«íáó½Ñ¡¿Ñ ¬  º¡áτÑ¡¿ε »¿¬ßѽᠠßπΘÑßΓóπÑΓ ÑΘÑ  »«α∩ñ¬«ó«Ñ »αÑñßΓáó½Ñ¡¿Ñ
  458. µóÑΓá.  èáªñδ⌐   µóÑΓ,  ¬«Γ«αδ⌐   íπñÑΓ  óδßóÑτ¿óáΓ∞ß∩   ó  «»αÑñѽѡ¡«¼
  459. ó¿ñÑ«-αѪ¿¼Ñ, »αÑñßΓáó½∩ÑΓß∩  ó ó¿ñÑ  π¡¿¬á½∞¡«ú« »«α∩ñ¬«ó«ú«  º¡áτÑ¡¿∩.
  460. æ«ßΓáó½Ñ¡¿Ñ  ¬áαΓδ  º¡áτÑ¡¿⌐  »¿¬ßѽ«ó,  ß««ΓóÑΓßΓóπεΘ¿σ   ñÑ⌐ßΓó¿Γѽ∞¡«
  461. ¿º«íαáªáÑ¼δ¼ µóÑΓ«¼,  ñáÑΓ ó  αѺπ½∞ΓáΓÑ "»á½¿Γαπ".  ûóÑΓ¡á∩ úαáΣ¿¬á CGA
  462. »«ññÑনóáÑΓ 4 »á½¿Γαδ ¿º 4 µóÑΓ«ó. Å὿Γαá «»αÑñѽ∩ÑΓ »«ñ¼¡«ªÑßΓó« óßÑσ
  463. 󫺼«ª¡δσ µóÑΓ«ó, ¿  ß«ßΓ«¿Γ ¿º µóÑΓá  Σ«¡á (º¡áτÑ¡¿Ñ »¿¬ßѽᠠ0) ¿ ΓαÑσ
  464. ¡áí«α«ó µóÑΓ«ó »ÑαÑñ¡Ñú« »½á¡á. Å὿Γαá «»αÑñѽ∩ÑΓ ΓᬪѠ σáαá¬ΓÑα¿ßΓ¿¬¿
  465. óßÑú« ¿º«íαáªÑ¡¿∩.
  466.  
  467.     ûóÑΓ Σ«¡á ¼«ªÑΓ íδΓ∞ «ñ¡¿¼ ¿º ¿¼ÑεΘ¿σß∩ 16 µóÑΓ«ó. ä½∩  «í«απñ«óá¡¿∩
  468. CGA  »á½¿Γαá  µóÑΓ«ó  »ÑαÑñ¡Ñú«  »½á¡á  ºáñá¡á  ºáαá¡ÑÑ  ¿ ¡Ñ ¼«ªÑΓ íδΓ∞
  469. ¿º¼Ñ¡Ñ¡á.  ì«¼Ñα  »á½¿Γαδ-φΓ«  µÑ½«Ñ  τ¿ß½«,  ¬«Γ«α«Ñ  óδí¿αáÑΓ  «ñ¡π ¿º
  470. ºáñá¡¡δσ »á½¿Γα.
  471.  
  472.     -êß»«½∞º«óá¡¿Ñ »á½¿Γα.
  473.  
  474.     é  ó¿ñÑ«-αѪ¿¼Ñ  _MRES4COLOR  ¿¼ÑεΓß∩  τÑΓδαÑ »á½¿Γαδ. Å὿Γαπ ¼«ª¡«
  475. óδíαáΓ∞  ß  »«¼«Θ∞ε  Σπ¡¬µ¿¿  _selectpalette. Æáí½¿µá, »α¿óÑñÑ¡¡á∩ ¡¿ªÑ,
  476. »«¬áºδóáÑΓ ß««ΓóÑΓßΓó¿Ñ  ¼Ñªñπ º¡áτÑ¡¿∩¼¿  »¿¬ßѽ«ó ¿  µóÑΓ«ó ñ½∩ ¬áªñ«⌐
  477. »á½¿Γαδ. ö«¡ ¼«ªÑΓ íδΓ∞ πßΓá¡«ó½Ñ¡ «ñ¡¿¼ ¿º 16 ó«º¼«ª¡δσ µóÑΓ«ó.
  478.  
  479.  
  480. 쫼Ñα               ç¡áτÑ¡¿Ñ »¿¬ßѽá
  481. »á½¿Γαδ             1                  2                  3
  482.  
  483.  
  484. 0             ºÑ½Ñ¡δ⌐          ¬αáß¡δ⌐              ¬«α¿τ¡Ñóδ⌐
  485. 1             ºÑ½Ñ¡«óáΓ«-ú«-   ½¿½«óδ⌐              ßóÑΓ½«-ßÑαδ⌐
  486.               ½πí«⌐
  487. 2             ßóÑΓ½«-ºÑ½Ñ¡δ⌐   ßóÑΓ½«-¬αáß¡δ⌐       ªÑ½Γδ⌐
  488. 3             ßóÑΓ½«-ºÑ½Ñ¡«-   ßóÑΓ½«-½¿½«óδ⌐       íѽδ⌐
  489.               óáΓ«-ú«½πí«⌐
  490.  
  491.  
  492.  
  493.     é¿ñÑ«-αѪ¿¼ _MRESNOCOLOR ¿ß»«½∞ºπÑΓß∩ ñ½∩ τÑα¡«-íѽ«ú« ¿º«íαáªÑ¡¿∩ ß
  494. »«¼«Θ∞ε »á½¿Γα, ß«ßΓ«∩Θ¿σ ¿º «ΓΓÑ¡¬«ó ßÑα«ú« µóÑΓá.
  495.  
  496.     ÉѪ¿¼  _MRESNOCOLOR  ¼«ªÑΓ  ΓᬪѠ ó«ß»α«¿ºó«ñ¿Γ∞  µóÑΓá  ¡á µóÑΓ¡«¼
  497. ñ¿ß»½ÑÑ.  Äñ¡á¬«,  ¡á  µóÑΓ¡«¼  ñ¿ß»½ÑÑ  ¿¼ÑεΓß∩ Γ«½∞¬« ñóÑ »á½¿Γαδ. ä½∩
  498. óδí«αá  «ñ¡«⌐  ¿º   ºáαá¡ÑÑ  «»αÑñѽѡ¡δσ  »á½¿Γα   »α¿¼Ñ¡∩ÑΓß∩  Σπ¡¬µ¿∩
  499. _selectpalette.
  500.  
  501.     Åα¿óÑñÑ¡¡á∩ ¡¿ªÑ  »á½¿Γαá »«¬áºδóáÑΓ  ß««ΓóÑΓßΓó¿Ñ ¼Ñªñπ  º¡áτÑ¡¿∩¼¿
  502. »¿¬ßѽ«ó ¿ µóÑΓἿ ñ½∩ ¬áªñ«⌐ »á½¿Γαδ:
  503.  
  504. 쫼Ñα               ç¡áτÑ¡¿Ñ »¿¬ßѽá
  505. »á½¿Γαδ             1                  2                  3
  506.  
  507. 0             ú«½πí«⌐          ¬αáß¡δ⌐              ßóÑΓ½«-ßÑαδ⌐
  508. 1             ßóÑΓ½«-ú«½πí«⌐   ßóÑΓ½«-¬αáß¡δ⌐       íѽδ⌐
  509.  
  510.  
  511.  
  512.     öπ¡¬µ¿ε _selectpalette  ¼«ª¡« ¿ß»«½∞º«óáΓ∞  Γ«½∞¬« ß  ó¿ñÑ«-αѪ¿¼á¼¿
  513. _MRES4COLOR ¿ _MRESNOCOLOR.
  514.  
  515.       -Åα¿¼Ñα: êº«íαáªÑ¡¿Ñ µóÑΓ«ó »á½¿Γαδ.
  516. #include <stdio.h>
  517. #include <graph.h>
  518.  
  519.  
  520. long bkcolor[8] = {_BLACK, _BLUE, _GREEN, _CYAN,
  521.                    _RED, _MAGENTA, _BROWN, _WHITE};
  522. char *blcolor name [] = {"_BLACK", "_BLUE", "_GREEN",
  523.     "_CYAN", "_RED", "_MAGENTA", "_BROWN", "_WHITE"};
  524. main()
  525. {
  526.  int i, j, k, delay;
  527.  _setvideomode (_MRES4COLOR); /* ¿ß»«½∞º«óá¡¿Ñ µóÑΓ¡«ú« αѪ¿¼á CGA
  528. */
  529.  for (k=0; k <= 7; k++) {
  530.    _setbkcolor (bkcolor[k]);
  531.    for (i=0; i<= 3; i++) {
  532.      _selectpalette (i);
  533.      for (j=0; j<=3; j++) {
  534.        _settextposition (1,1);
  535.        _setcolor (j);
  536.        printf ("background color: %8s\n", bkcolor nameGk[);
  537.        printf ("palette: %d\ncolor: %d\n",i,j);
  538.        _rectangle (_GFILLINTERIOR,160,100,320,200);
  539.        for (delay=0; delay<= 20000; velay++)
  540.      }
  541.    }
  542.  }
  543.  _setvideomode (_DEFAULTMODE);
  544. }
  545.  
  546.     äá¡¡á∩  »α«úαἼᠠπßΓá¡áó½¿óáÑΓ  ó¿ñÑ«-αѪ¿¼  _MRES4COLOR  ¿  ºáΓѼ
  547. »α«¬απτ¿óáÑΓ óßÑ ¬«¼í¿¡áµ¿¿ Σ«¡á ¿ µóÑΓ«ó »á½¿Γα.
  548.  
  549.  
  550.  
  551.  
  552.      4.6. êß»«½∞º«óá¡¿Ñ µóÑΓ¡δσ úαáΣ¿τÑ߬¿σ αѪ¿¼«ó EGA.
  553.  
  554.     é¿ñÑ«-αѪ¿¼δ  _  MRES16COLOR,  _HRES16COLOR, _ERESCOLOR ¿ß»«½∞ºπεΓß∩
  555. ñ½∩ »«½πτÑ¡¿∩  π½¿τΘÑ¡¡«⌐ µóÑΓ¡«⌐  úαáΣ¿¬¿ ß  áñá»ΓÑα«¼ EGA.  ÉѪ¿¼δ CGA
  556. ΓᬪѠ¼«ª¡« ¿ß»«½∞º«óáΓ∞ ß áñá»ΓÑα«¼ EGA, ¡« ¡á πα«ó¡Ñ αáºαÑΦÑ¡¿∩ CGA  ¿
  557. ß π¼Ñ¡∞ΦÑ¡¡δ¼ ¡áí«α«¼ µóÑΓ«ó.
  558.  
  559.     -ûóÑΓ¡δÑ úαáΣ¿τÑ߬¿Ñ αѪ¿¼δ EGA.
  560.  
  561.     é úαáΣ¿τÑ߬¿σ  αѪ¿¼áσ »¿¬ßѽ  ¼«ªÑΓ íδΓ∞  »αÑñßΓáó½Ñ¡á «ñ¡«-, ñóπσ-
  562. ¿½¿  τÑΓδαÑσ-αáºα∩ñ¡δ¼  º¡áτÑ¡¿Ñ¼  ó  ºáó¿ß¿¼«ßΓ¿  «Γ óδíαá¡¡«ú« αѪ¿¼á.
  563. äá¡¡«Ñ »αÑñßΓáó½Ñ¡¿Ñ  ¿ºóÑßΓ¡«, ¬á¬  "º¡áτÑ¡¿Ñ »¿¬ßѽá".  é ñ«»«½¡Ñ¡¿Ñ ¬
  564. º¡áτÑ¡¿ε  ∩τÑ⌐¬¿  ßπΘÑßΓóπÑΓ  ¿  »«α∩ñ¬«ó«Ñ  »αÑñßΓáó½Ñ¡¿Ñ µóÑΓá. èáªñδ⌐
  565. µóÑΓ,  ¬«Γ«αδ⌐   ¼«ªÑΓ  íδΓ∞   óδßóÑτÑ¡  ó   «»αÑñѽѡ¡«¼  ó¿ñÑ«-αѪ¿¼Ñ,
  566. »αÑñßΓáó½∩ÑΓß∩  π¡¿¬á½∞¡δ¼  »«α∩ñ¬«óδ¼  º¡áτÑ¡¿Ñ¼.  èáαΓá,   »ÑαÑó«ñ∩Θá∩
  567. º¡áτÑ¡¿∩  ∩τÑѬ  ó  αÑá½∞¡δÑ  óδßóÑτ¿óáѼδÑ  µóÑΓá,  ñáÑΓ  ó  αѺπ½∞ΓáΓÑ
  568. "»á½¿Γαπ" óδßóÑτ¿óáѼδσ µóÑΓ«ó.
  569.  
  570.     Å὿Γαá  µóÑΓ«ó  ñ«ßΓπ»¡á,  ¬á¬«⌐  íδ  ¿º úαáΣ¿τÑ߬¿σ αѪ¿¼«ó EGA ¡Ñ
  571. ¿ß»«½∞º«óá½ß∩. Å὿Γαδ EGA ¼«úπΓ íδΓ∞ »ÑαÑ»½á¡¿α«óá¡δ ¿ »ÑαÑ«»αÑñѽѡδ ó
  572. »α«úαá¼¼Ñ.  æΓá¡ñáαΓ¡á∩  »á½¿Γαá  ñ½∩  αѪ¿¼«ó  EGA  Γá  ªÑ ßá¼á∩, τΓ« ¿
  573. »á½¿Γαá ñ½∩ µóÑΓ¡δσ ΓѬßΓ«óδσ αѪ¿¼«ó.
  574.  
  575.     -ÅÑαÑ«»αÑñѽѡ¿Ñ «Γñѽ∞¡δσ µóÑΓ«ó.
  576.  
  577.     ä½∩ »ÑαÑ«»αÑñѽѡ¿∩ «ñ¡«ú« º¡áτÑ¡¿∩ »¿¬ßѽá ó ºáñá¡¡δ⌐ µóÑΓ (¬«Γ«αδ⌐
  578. ñ«½ªÑ¡ íδΓ∞  «í∩ºáΓѽ∞¡« µóÑΓ«¼,  »«ññÑনóáÑ¼δ¼ ΓѬπΘ¿¼  ó¿ñÑ«-αѪ¿¼«¼)
  579. ¿ß»«½∞ºπÑΓß∩ Σπ¡¬µ¿∩ _remappalette.  ìá»α¿¼Ñα, »α¿óÑñÑ¡¡á∩ ¡¿ªÑ  Σπ¡¬µ¿∩
  580. »ÑαÑ«»αÑñѽ∩ÑΓ  º¡áτÑ¡¿Ñ  ∩τÑ⌐¬¿  1  ¡á  º¡áτÑ¡¿Ñ _RED. Å«ß½Ñ óδ»«½¡Ñ¡¿∩
  581. ñá¡¡«ú« «»ÑαáΓ«αá ú«½πí«⌐ µóÑΓ íπñÑΓ óѺñÑ »«∩ó½∩Γ∞ß∩, ¬á¬ ¬αáß¡δ⌐:
  582.  
  583. _remappalette (1, _RED); /* »ÑαѡạáτÑ¡¿Ñ ú«½πí«ú« ¡á ¬αáß¡δ⌐ */
  584.  
  585.  
  586.       -ÅÑαÑ«»αÑñѽѡ¿Ñ ¡áí«αá µóÑΓ«ó.
  587.  
  588.     ä½∩ »ÑαÑ«»αÑñѽѡ¿∩ óßÑσ º¡áτÑ¡¿⌐ »¿¬ßѽ«ó «ñ¡«óαѼѡ¡« ¿ß»«½∞ºπÑΓß∩
  589. Σπ¡¬µ¿∩ _remapallpalette. Çαúπ¼Ñ¡Γ  Σπ¡¬µ¿¿ π¬áºδóáÑΓ ¡á  ¼áß߿󠡫¼Ñα«ó
  590. µóÑΓ«ó, «ΓαáªáεΘ¿σ  »ÑαÑ»½á¡¿α«ó¬π. ÅÑαóδ⌐  ¡«¼Ñα µóÑΓá  ó ß»¿ß¬Ñ ßΓá¡ÑΓ
  591. ¡«óδ¼ µóÑΓ«¼, ßó∩ºá¡¡δ¼ ß« º¡áτÑ¡¿Ñ¼ »¿¬ßѽá 0.
  592.  
  593.     ì«¼Ñα ó ó맮óÑ Σπ¡¬µ¿¿, πßΓá¡áó½¿óáεΘÑ⌐ µóÑΓ (Γᬫ⌐, ¬á¬  _setcolor)
  594. ∩ó½∩ÑΓß∩ ¿¡ñѬ߫¼  ó ¿¼ÑεΘÑ⌐ß∩  »á½¿ΓαÑ µóÑΓ«ó.  é ßΓá¡ñáαΓ¡«⌐ ΓѬßΓ«ó«⌐
  595. »á½¿ΓαÑ  ¿¡ñѬߠ 1  «º¡áτáÑΓ  "ú«½πí«⌐".  àß½¿  »á½¿Γαá »ÑαÑ»½á¡¿απÑΓß∩,
  596. »«α∩ñ«¬ µóÑΓ«ó ó »á½¿ΓαÑ  ¿º¼Ñ¡∩ÑΓß∩. é αѺπ½∞ΓáΓÑ, µóÑΓ,  »«½πτáѼδ⌐ »«
  597. ñá¡¡«¼π  º¡áτÑ¡¿ε  »¿¬ßѽá,  ΓᬪѠ ¿º¼Ñ¡∩ÑΓß∩.  è«½¿τÑßΓó«  »½á¡¿απѼδσ
  598. µóÑΓ«ó   ºáó¿ß¿Γ   «Γ   ¬«½¿τÑßΓóá   µóÑΓ«ó,   »«ññÑনóáѼδσ    ΓѬπΘ¿¼
  599. ó¿ñÑ«-αѪ¿¼«¼.
  600.  
  601.     öπ¡¬µ¿¿ _remappalette ¿  _remapallpalette αáí«ΓáεΓ ó«  óßÑσ αѪ¿¼áσ,
  602. ¡«  Γ«½∞¬«  ß  «í«απñ«ó᡿Ѽ  EGA  ¿½¿  VGA.  àß½¿  óδ  ßñѽáÑΓÑ »«»δΓ¬π
  603. óδ»«½¡¿Γ∞ ñá¡¡δÑ  Σπ¡¬µ¿¿ íѺ  «í«απñ«óá¡¿∩ EGA  ¿½¿ VGA,  Σπ¡¬µ¿¿ ñáñπΓ
  604. ßí«⌐ ¿ ó«ºóαáΓ∩Γ º¡áτÑ¡¿Ñ-1.
  605.  
  606.       -Åα¿¼Ñα: ÅÑαÑ»½á¡¿α«óá¡¿Ñ µóÑΓ«ó »á½¿Γαδ.
  607. #include <stdio.h>
  608. #include <graph.h>
  609.  
  610. main()
  611. {
  612.    _setdideomode (_ERESCOLOR);
  613.    _settextposition (1,1); /* «íδτ¡á∩ »á½¿Γαá */
  614.    printf ("Normal palette");
  615.    _setcolor (4); /* ¬αáß¡δ⌐ ó ßΓá¡ñáαΓ¡«⌐ »á½¿ΓαÑ */
  616.    _rectangle (_ GFILLINTERIOR, 50,50,200,200);
  617.    getchar(); /* «ª¿ñá¡¿Ñ ¬½ετá ENTER */
  618.    _remappalette (4. _BLUE); /* »αÑóαáΘÑ¡¿Ñ ¬αáß¡«ú« ó ú«½πí«⌐ */
  619.  
  620.  
  621.    _settextposition (1,1);
  622.    printf ("Remapped palette");
  623.    _setcolor (4); /* ú«½πí«⌐ */
  624.    _rectangle (_GFILLINTERIOR, 50,50,200,200);
  625.    getchar(); /* «ª¿ñá¡¿Ñ ¬½ετá ENTER */
  626.    _remappalette (4, _RED); /* ó«ßßΓá¡«ó½Ñ¡¿Ñ */
  627.    _settextposition (1,1);
  628.    printf ("Restored palette");
  629.    _setcolor (4); /* ¬αáß¡δ⌐ */
  630.    _rectangle (_GFILLINTERIOR,50,50,200,200);
  631.    getchar(); /* «ª¿ñá¡¿Ñ ¬½ετá ENTER */
  632.    _clearscreen (_GCLEARSCREEN);
  633.    _setvideomode (_DEFAULTMODE);
  634. }
  635.  
  636.     äá¡¡á∩  »α«úαἼᠠóδτÑατ¿óáÑΓ   »α∩¼«πú«½∞¡¿¬  ¬αáß¡«ú«  µóÑΓá.   é
  637. ßΓá¡ñáαΓ¡«⌐ »á½¿ΓαÑ EGA º¡áτÑ¡¿Ñ »¿¬ßѽá 4 «º¡áτáÑΓ ¬αáß¡δ⌐ µóÑΓ. äá¡¡«Ñ
  638. ¡áº¡áτÑ¡¿Ñ »ÑαÑ«»αÑñѽ∩ÑΓß∩ ó ñá¡¡«⌐ »α«úαἼѠ¡á _BLUE ¿  »α∩¼«πú«½∞¡¿¬
  639. »ÑαÑτÑατ¿óáÑΓß∩.  é  ¬«¡µÑ  »α«úαá¼¼δ  º¡áτÑ¡¿Ñ »¿¬ßѽᠻÑαÑ«»αÑñѽ∩ÑΓß∩
  640. ¡áºáñ ó «α¿ú¿¡á½∞¡δ⌐ µóÑΓ.
  641.  
  642.  
  643.           4.7. êß»«½∞º«óá¡¿Ñ µóÑΓ¡δσ úαáΣ¿τÑ߬¿σ αѪ¿¼«ó VGA.
  644.  
  645.     æ ñ¿ß»½ÑѼ VGA ¿ß»«½∞ºπεΓß∩ ó¿ñÑ«-αѪ¿¼δ _VRES2COLOR,  _VRES16COLOR,
  646. _MRES256COLOR. æ «í«απñ«ó᡿Ѽ VGA  ¼«úπΓ ¿ß»«½∞º«óáΓ∞ß∩ ΓᬪѠ¿  αѪ¿¼δ
  647. EGA ¿  CGA, ¡«  ß í«½ÑÑ  ¡¿º¬«⌐ αáºαÑΦáεΘÑ⌐  ß»«ß«í¡«ßΓ∞ε ¿ «úαá¡¿τÑ¡¡δ¼
  648. ¡áí«α«¼ µóÑΓ«ó.
  649.  
  650.  
  651.     -ûóÑΓ¡δÑ úαáΣ¿τÑ߬¿Ñ αѪ¿¼δ VGA.
  652.  
  653.     é úαáΣ¿τÑ߬«¼ αѪ¿¼Ñ »¿¬ßѽ ¼«ªÑΓ íδΓ∞ »αÑñßΓáó½Ñ¡á ¬á¬ «ñ¡«-, ñóπσ-
  654. ¿½¿ τÑΓδαÑσ-í¿Γ«ó«Ñ º¡áτÑ¡¿Ñ, ó ºáó¿ß¿¼«ßΓ¿ «Γ óδíαá¡¡«ú« αѪ¿¼á. äá¡¡«Ñ
  655. »αÑñßΓáó½Ñ¡¿Ñ ¿ºóÑßΓ¡«, ¬á¬ "º¡áτÑ¡¿Ñ »¿¬ßѽá". èα«¼Ñ Γ«ú«, ó ñ«»«½¡Ñ¡¿Ñ
  656. ¬  º¡áτÑ¡¿ε  »¿¬ßѽᠠßπΘÑßΓóπÑΓ  »«α∩ñ¬«ó«Ñ »αÑñßΓáó½Ñ¡¿Ñ µóÑΓá. èáªñδ⌐
  657. µóÑΓ, óδßóÑτ¿óáѼδ⌐ ó «»αÑñѽѡ¡«¼ ó¿ñÑ«-αѪ¿¼Ñ, »αÑñßΓáó½Ñ¡  π¡¿¬á½∞¡δ¼
  658. »«α∩ñ¬«óδ¼   º¡áτÑ¡¿Ñ¼.   Éáß»αÑñѽѡ¿Ñ   º¡áτÑ¡¿⌐   ∩τÑѬ   ó  αÑá½∞¡δÑ
  659. óδßóÑτ¿óáѼδÑ µóÑΓá ñáÑΓ ó αѺπ½∞ΓáΓÑ "»á½¿Γαπ" óδßóÑτ¿óáѼδσ µóÑΓ«ó.
  660.  
  661.     ûóÑΓ¡á∩  úαáΣ¿¬á  VGA  «»Ñα¿απÑΓ  »«τΓ¿  ß  262144 (φ¬ó¿óá½Ñ¡Γ 256è)
  662. µóÑΓἿ.   ÉѪ¿¼   úαáΣ¿¬¿   _VRES2COLOR   óδßóÑτ¿óáÑΓ   2  µóÑΓá, αѪ¿¼
  663. _VRES16COLOR óδßóÑτ¿óáÑΓ 16 µóÑΓ«ó, αѪ¿¼ _MRES256COLOR óδßóÑτ¿óáÑΓ  256
  664. µóÑΓ«ó ¿º ¿¼ÑεΘ¿σß∩ ó VGA.
  665.  
  666.     ü«½∞Φ«Ñ  ¬«½¿τÑßΓ󫠠󫺼«ª¡δσ  µóÑΓ«ó  ó  αѪ¿¼áσ  VGA   ßΓá¡«ó¿Γß∩
  667. 󫺼«ª¡δ¼  »α¿  ¿ß»«½∞º«óá¡¿¿  ΓαÑσ  íá⌐Γ«ó  ¿¡Σ«α¼áµ¿¿,  »αÑñßΓáó½∩εΘÑ⌐
  668. ¿¡Γѡ߿ó¡«ßΓ∞ ¬αáß¡«ú«, ºÑ½Ñ¡«ú« ¿ ú«½πí«ú« ñ½∩ ¬áªñ«⌐ »¿¬ßѽÑ. é ¬áªñ«¼
  669. íá⌐ΓÑ  ñóá  ßΓáαΦ¿σ  αáºα∩ñá  ñ«½ª¡δ  αáó¡∩Γ∞ß∩  ¡π½ε.  ÄßΓáóΦ¿Ñß∩ ΦÑßΓ∞
  670. αáºα∩ñ«ó  «»αÑñѽ∩εΓ   ¿¡Γѡ߿ó¡«ßΓ∞  ú«½πí«ú«,   ºÑ½Ñ¡«ú«  ¿   ¬αáß¡«ú«
  671. (τ¿ΓáÑΓß∩ «Γ  ßΓáαΦÑú« íá⌐Γá  ¬ ¼½áñΦѼπ).  Æα¿ µóÑΓá,  ¬áªñδ⌐ ß  ΦÑßΓ∞ε
  672. αáºα∩ñἿ  ¿¡Γѡ߿ó¡«ßΓ¿  ñáεΓ  64**3  ¿½¿  262144 «ΓΓÑ¡¬á.  (φ¬ó¿óá½Ñ¡Γ
  673. 256è).  ìá»α¿¼Ñα,   αáó¡δÑ  º¡áτÑ¡¿∩   ¬αáß¡«ú«,  ºÑ½Ñ¡«ú«   ¿  ú«½πí«ú«
  674. ¿ß»«½∞ºπεΓß∩  ñ½∩  »«½πτÑ¡¿∩  íѽ«ú«  ¡¿º¬«⌐  ¿¡Γѡ߿ó¡«ßΓ¿, ΓᬠτΓ« Γα¿
  675. íá⌐Γá µóÑΓá ñ«½ª¡δ ß«ñÑαªáΓ∞ ß½ÑñπεΘÑÑ:
  676.  
  677. ú«½πí«⌐             ºÑ½Ñ¡δ⌐            ¬αáß¡δ⌐
  678. 00011111            00011111           00011111
  679. ßΓáαΦ¿Ñ αáºα∩ñδ-------------------->¼½áñΦ¿Ñ αáºα∩ñδ
  680.  
  681.     Å«ß¬«½∞¬π ¡«¼Ñαá µóÑΓ«ó αáºñѽ∩εΓß∩ ¼Ñªñπ íá⌐ΓἿ, ¡«¼Ñαá µóÑΓ«ó  ¡Ñ
  682. ∩ó½∩εΓß∩ »«ß½Ññ«óáΓѽ∞¡δ¼¿ (¬á¬ ¿ ó ß½πτáÑ CGA ¿½¿ EGA).
  683.  
  684.     16 µóÑΓ«ó ñ½∩ ßΓá¡ñáαΓ¡«⌐  »á½¿Γαδ αѪ¿¼á _VRES16COLOR ¿  »Ñαóδ⌐ ñ½∩
  685. ßΓá¡ñáαΓ¡«⌐  »á½¿Γαδ  αѪ¿¼á  _MRES256COLOR  ΓÑ  ªÑ  ßá¼δÑ,  τΓ«  ¿  ñ½∩
  686. ΓѬßΓ«óδσ µóÑΓ¡δσ αѪ¿¼«ó.
  687.  
  688.     -ÅÑαÑ«»αÑñѽѡ¿Ñ «Γñѽ∞¡δσ µóÑΓ«ó.
  689.  
  690.     ä½∩  »ÑαÑ«»αÑñѽѡ¿∩  «ñ¡«ú«  º¡áτÑ¡¿∩  »¿¬ßѽᠠ󠫻αÑñѽѡ¡δ⌐ µóÑΓ
  691. ¿ß»«½∞ºπÑΓß∩   Σπ¡¬µ¿∩    _remappalette.   Åα¿óÑñÑ¡¡á∩    ¡¿ªÑ   Σπ¡¬µ¿∩
  692. »ÑαÑ«»αÑñѽ∩ÑΓ  º¡áτÑ¡¿Ñ  »¿¬ßѽᠠ1  ó  µóÑΓ,  ºáñá¡¡δ⌐ ¬«¡ßΓá¡Γ«⌐ _RED
  693. (¬«Γ«αá∩ »αÑñßΓáó½∩ÑΓ  ¬αáß¡δ⌐ µóÑΓ).  Å«ß½Ñ Γ«ú«,  ¬á¬ ñá¡¡δ⌐  «»ÑαáΓ«α
  694. óδ»«½¡¿Γß∩, µóÑΓ, ºáñá¡¡δ⌐ ú«½πíδ¼, íπñÑΓ óδßóÑτ¿óáΓ∞ß∩ , ¬á¬ ¬αáß¡δ⌐:
  695.  
  696. _remappalette (1, _RED); /* »ÑαѡạáτÑ¡¿Ñ ú«½πí«ú« ó ¬αáß¡δ⌐ ó
  697.                            αѪ¿¼Ñ VGA */
  698.  
  699.     -ÅÑαѡạáτÑ¡¿Ñ ¡áí«αá µóÑΓ«ó.
  700.  
  701.     ùΓ«íδ  »Ñαѡạáτ¿Γ∞  óßÑ  ¿¼ÑεΘ¿Ñß∩  ó  ¡á½¿τ¿¿ µóÑΓá «ñ¡«óαѼѡ¡«,
  702. ó«ß»«½∞ºπ⌐Γѽ∞  Σπ¡¬µ¿Ñ⌐  _remapallpalette.  Çαúπ¼Ñ¡Γ  Σπ¡¬µ¿¿  áñαÑßπÑΓ
  703. ¼áß߿󠡫¼Ñα«ó µóÑΓ«ó, «ΓαáªáεΘ¿σ  »ÑαѡạáτÑ¡¿Ñ. ÅÑαóδ⌐ ¡«¼Ñα µóÑΓá  ó
  704. ß»¿ß¬Ñ ßΓá¡ÑΓ ¡«óδ¼ µóÑΓ«¼, ß««ΓóÑΓßΓóπεΘ¿¼ º¡áτÑ¡¿ε »¿¬ßѽá 0.
  705.  
  706.     ù¿ß½« ó ó맮óÑ Σπ¡¬µ¿¿, πßΓá¡áó½¿óáεΘÑ⌐ µóÑΓ (Γᬫ⌐ ¬á¬  _setcolor),
  707. ∩ó½∩ÑΓß∩ ¿¡ñѬ߫¼ ó »á½¿ΓαÑ ¿º ¿¼ÑεΘ¿σß∩ µóÑΓ«ó. é ßΓá¡ñáαΓ¡«⌐ ΓѬßΓ«ó«⌐
  708. »á½¿ΓαÑ ¿¡ñѬߠ 1 ß««ΓóÑΓßΓóπÑΓ  "ú«½πí«¼π". Åα¿  »ÑαѡạáτÑ¡¿¿ »á½¿Γαδ
  709. »«α∩ñ«¬ µóÑΓ«ó  ó »á½¿ΓαÑ  ¼Ñ¡∩ÑΓß∩. é  αѺπ½∞ΓáΓÑ, µóÑΓ,  »«½πτÑ¡¡δ⌐ »«
  710. ñá¡¡«¼π º¡áτÑ¡¿ε »¿¬ßѽá, ΓᬪѠ ¿º¼Ñ¡¿Γß∩. è«½¿τÑßΓó« µóÑΓ«ó ó  Γáí½¿µÑ
  711. ºáó¿ß¿Γ «Γ ¬«½¿τÑßΓóá µóÑΓ«ó, »«ññÑনóáѼδσ ΓѬπΘ¿¼ ó¿ñÑ«-αѪ¿¼«¼.
  712.  
  713.     öπ¡¬µ¿¿ _remappalette ¿  _remapallpalette αáí«ΓáεΓ ó«  óßÑσ αѪá¼áσ,
  714. ¡«  Γ«½∞¬«  ¡á  «í«απñ«óá¡¿¿  EGA  ¿½¿  VGA.  àß½¿  óδ  ßñѽáÑΓÑ »«»δΓ¬π
  715. »Ñαѡạáτ¿Γ∞ »á½¿Γαπ íѺ «í«απñ«óá¡¿∩ EGA ¿½¿ VGA, Σπ¡¬µ¿¿
  716.  
  717. _remappalette ¿ _remapallpalette ñáñπΓ ßí«⌐ ¿ ó«ºóαáΓ∩Γ º¡áτÑ¡¿Ñ -1.
  718.  
  719.     Ä»¿ßδóáεΘ¿Ñ ¬«¡ßΓá¡Γδ ñ½∩ ßΓá¡ñáαΓ¡δσ ¡«¼Ñα«ó µóÑΓ«ó ºáñáεΓß∩  Γᬿ¼
  720. «íαẫ¼, τΓ« »ÑαѡạáτÑ¡¿Ñ  µóÑΓ«ó ñ½∩ VGA  ß«ó¼ÑßΓ¿¼« ß αѪ¿¼á¼¿  EGA.
  721. ê¼Ñ¡á ñá¡¡δσ  ¬«¡ßΓá¡Γ ßἫñ«¬π¼Ñ¡Γ¿απѼδ.  ìá»α¿¼Ñα, ¡«¼Ñαá  µóÑΓ«ó ñ½∩
  722. τÑα¡«ú«,  ¬αáß¡«ú«   ¿  ßóÑΓ½«-ªÑ½Γ«ú«   µóÑΓ«ó  ºáñáεΓß∩   «íΩ∩ó½∩εΘ¿¼¿
  723. ¬«¡ßΓá¡ΓἿ _BLACK, _RED, _LIGHTYELLOW.
  724.  
  725.     éßÑ  αѪ¿¼δ   VGA  ñÑ⌐ßΓóπεΓ   ß  ½εíδ¼   ó¿ñÑ«-¼«¡¿Γ«α«¼  VGA.  Åα¿
  726. »«ñß«Ññ¿¡Ñ¡¡«¼ ¼«¡«σα«¼¡«¼ ¼«¡¿Γ«αÑ óßÑ µóÑΓá óδßóÑτ¿óáεΓß∩, ¬á¬ «ΓΓÑ¡¬¿
  727. ßÑα«ú«.
  728.  
  729.       -Åα¿¼Ñα: ÅÑαѡạáτÑ¡¿Ñ µóÑΓ¡δσ »á½¿Γα VGA.
  730. long colors1 [16] = {_BLACK, _BLUE, _GREEN, _RED, _RED, _MAGENTA,
  731.        _BROWN, _WHITE, _GRAY, _LIGHTBLUE, _LIGHTGREEN, _LIGHTRED,
  732.        _LIGHTRED, _LIGHTMAGENTA, _LIGHTYELLOW, _BRIGHWHITE};
  733.  
  734.     Åα¿óÑñÑ¡¡δ⌐  óδΦÑ  ¼áß߿󠠡«¼Ñα«ó  µóÑΓ«ó »ÑαѡạáτáÑΓ ßΓá¡ñáαΓ¡πε
  735. »á½¿Γαπ  VGA  Γᬿ¼  «íαẫ¼,  τΓ«  ó¼ÑßΓ«  µóÑΓ«ó ºÑ½Ñ¡«óáΓ«-ú«½πí«ú« ¿
  736. ßóÑΓ½«-ºÑ½Ñ¡«óáΓ«-ú«½πí«ú« íπñπΓ óδßóÑτ¿óáΓ∞ß∩ ¬αáß¡δ⌐ ¿ ßóÑΓ½«-¬αáß¡δ⌐.
  737.  
  738.  
  739.                  4.8. Å«¡∩Γ¿Ñ « ¬««αñ¿¡áΓ¡«⌐ ß¿ßΓѼÑ.
  740.  
  741.     "è««αñ¿¡áΓ¡á∩ ß¿ßΓѼá" ¿ß»«½∞ºπÑΓß∩ ñ½∩ ¿ñÑ¡Γ¿Σ¿¬áµ¿¿ ¼ÑßΓ«»«½«ªÑ¡¿∩
  742. »¿¬ßÑ½á «Γ¡«ß¿Γѽ∞¡« ú«α¿º«¡Γá½∞¡«⌐  ¿ óÑαΓ¿¬á½∞¡«⌐ «ßÑ⌐.  é úαáΣ¿τÑ߬«¼
  743. αѪ¿¼Ñ  ¬áªñδ⌐  »¿¬ßѽ  ¡á  φ¬αá¡Ñ  ¼«ªÑΓ  íδΓ∞  «í«º¡áτÑ¡   »«ßαÑñßΓó«¼
  744. π¡¿¬á½∞¡«⌐ »áαδ ¬««αñ¿¡áΓ.  âαáΣ¿τÑ߬á∩ í¿í½¿«ΓѬá Σπ¡¬µ¿⌐  »«ññÑনóáÑΓ
  745. ñóÑ ¬««αñ¿¡áΓ¡δÑ ß¿ßΓѼδ: Σ¿º¿τÑ߬πε ¿ ½«ú¿τÑ߬πε.
  746.  
  747.  
  748.     -ö¿º¿τÑ߬¿Ñ ¬««αñ¿¡áΓδ.
  749.  
  750.     "ö¿º¿τÑ߬á∩  ¬««αñ¿¡áΓ¡á∩  ß¿ßΓѼá"  »«¼ÑΘáÑΓ  ¡áτὫ  «ΓßτÑΓá  (¿½¿
  751. ¬««αñ¿¡áΓ¡πε »áαπ 0,0) ó óÑασ¡¿⌐ ½Ñóδ⌐ πú«½ φ¬αá¡á. É«ßΓ  »«½«ª¿Γѽ∞¡«ú«
  752. º¡áτÑ¡¿∩  ¬««αñ¿¡áΓδ  ò  »α«¿ßσ«ñ¿Γ  ß½Ñóá  ¡á»αáó«. É«ßΓ »«½«ª¿Γѽ∞¡«ú«
  753. º¡áτÑ¡¿∩  ¬««αñ¿¡áΓδ  ô  »α«¿ßσ«ñ¿Γ  ßóÑασπ  ó¡¿º. Æá¬¿¼ «íαẫ¼, »αáóδ⌐
  754. ¡¿ª¡¿⌐ πú«½ φ¬αá¡á ¿¼ÑÑΓ  ¬««αñ¿¡áΓπ ò, αáó¡πε ¼á¬ß¿¼á½∞¡«¼π  ¬«½¿τÑßΓóπ
  755. »¿¬ßѽ«ó  »«  «ß¿  ò,  »«ññÑনóáѼ«¼π ñá¡¡δ¼ ó¿ñÑ«-αѪ¿¼«¼. Ç¡á½«ú¿τ¡«,
  756. ¡¿ª¡¿⌐  »αáóδ⌐  πú«½  φ¬αá¡á  ¿¼ÑÑΓ  ¬««αñ¿¡áΓπ  ô, αáó¡πε ¼á¬ß¿¼á½∞¡«¼π
  757. ¬«½¿τÑßΓóπ »¿¬ßѽ«ó »« «ß¿ ô ó ñá¡¡«¼ ó¿ñÑ«-αѪ¿¼Ñ.
  758.  
  759.     ö¿º¿τÑ߬á∩  ¬««αñ¿¡áΓ¡á∩   ß¿ßΓѼᠠ߫ñÑαª¿Γ   Γ«½∞¬«  »«½«ª¿Γѽ∞¡δÑ
  760. º¡áτÑ¡¿∩: ò «Γ 0 ( ó óÑασ¡Ñ¼ ½Ñó«¼ πú½π) ñ« ¬«½¿τÑßΓóá »¿¬ßѽ«ó »« «ß¿ ò
  761. (»αáóá∩ úαá¡¿µá); ô «Γ 0 (óÑασ¡¿⌐ ½Ñóδ⌐ πú«½) ñ« ¬«½¿τÑßΓóá »¿¬ßѽ«ó  »«
  762. «ß¿ ô (¡¿º φ¬αá¡á).
  763.  
  764.     ö¿º¿τÑ߬á∩   ¬««αñ¿¡áΓ¡á∩   ß¿ßΓѼᠠ ºáó¿ß¿Γ   «Γ   «í«απñ«óá¡¿∩  ¿
  765. ¬«¡Σ¿úπαᵿ¿ ¿º«íαáªÑ¡¿∩ ¿ ¡Ñ ¼«ªÑΓ íδΓ∞ ¿º¼Ñ¡Ñ¡á.
  766.  
  767.     -ï«ú¿τÑ߬¿Ñ ¬««αñ¿¡áΓδ.
  768.  
  769.     "ï«ú¿τÑ߬á∩  ¬««αñ¿¡áΓ¡á∩  ß¿ßΓѼá"  ß«ºñáÑΓß∩  »ÑαѼÑΘÑ¡¿Ñ¼  ¡áτá½á
  770. ¬««αñ¿¡áΓ   ó   í«½ÑÑ   "½«ú¿τÑ߬πε"   »«º¿µ¿ε   «Γ¡«ß¿Γѽ∞¡« áíß«½εΓ¡δσ
  771. Σ¿º¿τÑ߬¿σ  ¬««αñ¿¡áΓ.  Ä¡á  «»αÑñѽ∩ÑΓß∩  Σπ¡¬µ¿Ñ⌐  _setlogorg, ¬«Γ«αá∩
  772. πßΓá¡áó½¿óáÑΓ   ¡«ó«Ñ   ½«ú¿τÑ߬«Ñ   ¡áτὫ   ¬««αñ¿¡áΓ.  ÅÑαó«¡áτá½∞¡«,
  773. ½«ú¿τÑ߬á∩  ¬««αñ¿¡áΓ¡á∩   ß¿ßΓѼᠠ¿ñÑ¡Γ¿τ¡á   Σ¿º¿τÑ߬«⌐  ¬««αñ¿¡áΓ¡«⌐
  774. ß¿ßΓѼÑ.
  775.  
  776.     Å«ß½Ñ »ÑαÑ¡ÑßÑ¡¿∩ ¡áτá½á ¬««αñ¿¡áΓ, ¬««αñ¿¡áΓδ ò ¿ ô  »α¿ñÑনóáεΓß∩
  777. ñá¡¡«⌐  «α¿Ñ¡Γᵿ¿.  Åα¿  πóѽ¿τÑ¡¿¿  ò  »«º¿µ¿∩ »¿¬ßѽᠻÑαѼÑΘáÑΓß∩ »«
  778. φ¬αá¡π ß½Ñóá ¡á»αáó«; »α¿ πóѽ¿τÑ¡¿¿ ô, »«º¿µ¿∩ »¿¬ßѽᠻÑαѼÑΘáÑΓß∩  «Γ
  779. óÑασ¡Ñ⌐ úαá¡¿µδ ¬ ¡¿ª¡Ñ⌐ úαá¡¿µÑ φ¬αá¡á.
  780.  
  781.     -ÅÑαѼÑΘÑ¡¿Ñ ¡áτá½á ¬««αñ¿¡áΓ.
  782.  
  783.     æÑú¼Ñ¡Γ »α«úαá¼¼δ, »α¿óÑñÑ¡¡δ⌐  ¡¿ªÑ, »ÑαѼÑΘáÑΓ ¡áτὫ  ¬««αñ¿¡áΓ ó
  784. µÑ¡Γα φ¬αá¡á:
  785.  
  786. _getvideoconfig (&vc);
  787. _setlogorg (vc.numxpixels/2-1, vc.numypixels/2-1);
  788.  
  789.     é맮ó Σπ¡¬µ¿¿ _getvideoconfig »«¼ÑΘáÑΓ ¿¡Σ«α¼áµ¿ε ó¿ñÑ«-¬«¡Σ¿úπαᵿ¿
  790. ó  »ÑαѼѡ¡πε-ßΓαπ¬Γπαπ  vc.  æΓαπ¬Γπαá  ¬«¡Σ¿úπαᵿ¿  ß«ñÑαª¿Γ ñá¡¡δÑ «
  791. αẼÑαÑ φ¬αá¡á.  ¥Γ« ¿ß»«½∞ºπÑΓß∩  (»«ß½Ñ ß««ΓóÑΓßΓóπεΘÑú«  ñѽѡ¿∩) ñ½∩
  792. »ÑαѼÑΘÑ¡¿∩ ¡áτá½á ¬««αñ¿¡áΓ ó µÑ¡Γα φ¬αá¡á.
  793.  
  794.     -髺óαáΓ ¬ Σ¿º¿τÑ߬¿¼ ¬««αñ¿¡áΓá¼.
  795.  
  796.     é«ºóαáΓ «Γ ½«ú¿τÑ߬¿σ ¬««αñ¿¡áΓ ¬ Σ¿º¿τÑ߬¿¼ »α«¿ºó«ñ¿Γß∩ ß  »«¼«Θ∞ε
  797. Σπ¡¬µ¿¿ _setlogorg (Γ« ÑßΓ∞  »ÑαѼÑΘÑ¡¿Ñ ¡áτá½á ¬««αñ¿¡áΓ ß¡«óá  ó ½Ñóδ⌐
  798. óÑασ¡¿⌐  πú«½  φ¬αá¡á).  ì¿ªÑ  »α¿óÑñÑ¡  »α¿¼Ñα  ó«ºóαáΓá  ¬  Σ¿º¿τÑ߬¿¼
  799. ¬««αñ¿¡áΓá¼:
  800.  
  801.  setlogorg (0,0);
  802.  
  803.     -ÅαÑ«íαẫóá¡¿Ñ ¬««αñ¿¡áΓ «Γ «ñ¡«⌐ ¬««αñ¿¡áΓ¡«⌐ ß¿ßΓÑ¼δ ¬ ñαπú«⌐.
  804.  
  805.     ä½∩ »αÑ«íαẫóá¡¿∩  Σ¿º¿τÑ߬¿σ ¬««αñ¿¡áΓ  ó ½«ú¿τÑ߬¿Ñ  ¿ß»«½∞ºπÑΓß∩
  806. Σπ¡¬µ¿∩  _getlogcoord.  ï«ú¿τÑ߬¿Ñ  ¬««αñ¿¡áΓδ  »«¼ÑΘáεΓß∩  ó  ßΓαπ¬Γπαπ
  807. xycoord.  ä½∩  »αÑ«íαẫóá¡¿∩  ½«ú¿τÑ߬¿σ  ¬««αñ¿¡áΓ ºáñá¡¡«ú« »¿¬ßѽá ó
  808. Σ¿º¿τÑ߬¿Ñ  ¬««αñ¿¡áΓδ  ¿ß»«½∞ºπÑΓß∩  Σπ¡¬µ¿∩  _getphyscoord. ö¿º¿τÑ߬¿Ñ
  809. ¬««αñ¿¡áΓδ »«¼ÑΘáεΓß∩  ó ßΓαπ¬Γπαπ  xycoord. ö«α¼áΓ  ñóπσ ñá¡¡δσ  «»¿ßá¡
  810. ¡¿ªÑ:
  811.  
  812. _getlogcoord (x,y);
  813. _getphyscoord (x,y);
  814. _getvideoconfig (&vc); /* »«½πτÑ¡¿Ñ ¿¡Σ«α¼áµ¿¿ ó¿ñÑ«-¬«¡Σ¿úπαᵿ¿ */
  815. x = vc.numxpixels/2 - 1; /* «»αÑñѽѡ¿Ñ ò ¿ ô ßαÑñ¡¿σ Γ«τѬ */
  816. y = vc.numypixels/2 -1;
  817. _setlogorg (x,y); /* »ÑαѼÑΘÑ¡¿Ñ ¡áτá½á ¬««αñ¿¡áΓ */
  818.  
  819.     äá¡¡δ⌐   Σαáú¼Ñ¡Γ   »α«úαá¼¼δ   ¡áσ«ñ¿Γ   µÑ¡Γα   φ¬αá¡á  ñ½∩ ½εí«ú«
  820. ó¿ñÑ«-αѪ¿¼á ¿ πßΓá¡áó½¿óáÑΓ ó ¡Ñ¼ ¡áτὫ ¬««αñ¿¡áΓ.
  821.  
  822.  
  823.                    4.9. ÉẼÑΘÑ¡¿Ñ «Γñѽ∞¡δσ Γ«τѬ.
  824.  
  825.     Åα«ßΓÑ⌐Φ¿Ñ  úαáΣ¿τÑ߬¿Ñ  Σπ¡¬µ¿¿  ñÑ⌐ßΓóπεΓ  ¡á «ñ¡«Γ«τÑτ¡«¼ πα«ó¡Ñ.
  826. ä«ßΓπ»Ñ¡ ½εí«⌐ »¿¬ßѽ φ¬αá¡á, ó ¬«Γ«αδ⌐ ¼«ªÑΓ íδΓ∞ πßΓá¡«ó½Ñ¡á Γ«τ¬á.
  827.  
  828.     -ÅÑαѼÑΘÑ¡¿Ñ ¡á ºáñá¡¡πε Γ«τ¬π φ¬αá¡á.
  829.  
  830.     ÆÑ¬πΘπε  úαáΣ¿τÑ߬πε  »«º¿µ¿ε  ¼«ª¡«  ¿º¼Ñ¡¿Γ∞  ß  »«¼«Θ∞ε   Σπ¡¬µ¿¿
  831. _moveto.  äá¡¡á∩  Σπ¡¬µ¿∩  »ÑαѼÑΘáÑΓ  ΓѬπΘπε  »«º¿µ¿ε  (Γ« ÑßΓ∞ Γπ, ¡á
  832. ¬«Γ«α«⌐   ºá¬«¡τ¿½áß∞   »αÑñδñπΘá∩   «»Ñαᵿ∩)   ó   ºáñá¡¡δÑ ½«ú¿τÑ߬¿Ñ
  833. ¬««αñ¿¡áΓδ. ö«α¼áΓ ñá¡¡«⌐ Σπ¡¬µ¿¿ ß½ÑñπεΘ¿⌐:
  834.  
  835. _moveto (10,10); /* ßñó¿ú ¡á 10 »¿¬ßѽ«ó ó»αáó« ¿ ¡á 10 »¿¬ßѽ«ó
  836.                     ó¡¿º «Γ ½«ú¿τÑ߬«ú« ¡áτá½á ¬««αñ¿¡áΓ */
  837.  
  838.     -ôßΓá¡«ó¬á ¿ «τ¿ßΓ¬á »¿¬ßѽ«ó.
  839.  
  840.     öπ¡¬µ¿∩ _setpixel ¿ß»«½∞ºπÑΓß∩ ñ½∩ πßΓᡫ󬿠»¿¬ßѽá, αáß»«½«ªÑ¡¡«ú«
  841. »« ºáñá¡¡δ¼ ½«ú¿τÑ߬¿¼ ¬««αñ¿¡áΓá¼ ó ΓѬπΘ¿⌐ µóÑΓ. àÑ Σ«α¼áΓ ß½ÑñπεΘ¿⌐:
  842.  
  843. _setpixel (10,10); /* πßΓá¡«ó¬á »¿¬ßѽᠻ« ¬««αñ¿¡áΓá¼ 10, 10 ó
  844.                       ΓѬπΘ¿⌐ µóÑΓ */
  845.  
  846.  
  847.     é䬽ετÑ¡¿Ñ  »¿¬ßѽᠠ»α«¿ºó«ñ¿Γß∩  »πΓѼ  πßΓᡫ󬿠 Ñú« ó µóÑΓ Σ«¡á
  848. (¬«Γ«αδ⌐   ¿¼ÑÑΓ   óßÑúñá   º¡áτÑ¡¿Ñ   »¿¬ßѽᠠ 0).   ì¿ªÑ    »α¿óÑñÑ¡á
  849. »«ß½Ññ«óáΓѽ∞¡«ßΓ∞ ¬«¼á¡ñ, ¡Ñ«íσ«ñ¿¼á∩ ñ½∩ «τ¿ßΓ¬¿ ºáñá¡¡«ú« »¿¬ßѽá:
  850.  
  851. _setcolor (0); /* πßΓá¡«ó¬á ΓѬπΘÑú« µóÑΓá ó µóÑΓ Σ«¡á */
  852. _setpixel (x,y); /* «τ¿ßΓ¬á »¿¬ßѽá */
  853.  
  854.     -Åα¿¼Ñα: ôßΓá¡«ó¬á »¿¬ßѽ«ó.  Åα«úαá¼¼á hyppix.c, »α¿óÑñÑ¡¡á∩  ¡¿ªÑ,
  855. óδτÑατ¿óáÑΓ  ú¿»«µ¿¬½«¿ñ-  -Σ¿úπαπ,  »«½πτÑ¡¡πε  óαáΘÑ¡¿Ñ¼  «ñ¡«ú« ¬απúá
  856. ó¡πΓα¿ ñαπú«ú«. Å«ñ¬½ετáÑΓß∩ í¿í½¿«ΓѬá math.h (¼áΓѼáΓ¿τÑ߬¿σ Σπ¡¬µ¿⌐),
  857. »«ß¬«½∞¬π »«ΓαÑíπεΓß∩ Σπ¡¬µ¿¿ ß¿¡πß ¿ ¬«ß¿¡πß. êß»«½∞ºπÑΓß∩ ó¿ñÑ«-αѪ¿¼,
  858. ß«ó¼ÑßΓ¿¼δ⌐ ß  CGA. èα¿óá∩  óδτÑατ¿óáÑΓß∩ ó«  óαѼδ αáí«Γδ  µ¿¬½á while,
  859. ¬«Γ«αδ⌐ ¼«ªÑΓ  íδΓ∞ »αÑαóá¡  ¡áªáΓ¿Ñ¼ Σπ¡¬µ¿∞¡á½∞¡«ú«  ¬½ετá. ä½∩  Γ«ú«,
  860. τΓ«íδ »«½πτ¿Γ∞ í«½ÑÑ ¿¡ΓÑαÑß¡δÑ  α¿ßπ¡¬¿, ºáñá⌐ΓÑ circle ratio  í«½∞Φ¿¼,
  861. τѼ  pen  position  ¿  ¡Ñ  ¿ß»«½∞ºπ⌐ΓÑ  τ¿ßΓ«  µÑ½δσ  º¡áτÑ¡¿⌐. ìá¿í«½ÑÑ
  862. ¿¡ΓÑαÑß¡δ⌐  α¿ßπ¡«¬  »«½πτáÑΓß∩  »α¿  circle  ratio,  αáó¡«¼  3.2  ¿ ren
  863. position, αáó¡«¼  1.6.  (ü«½ÑÑ  »«ñα«í¡πε ¿¡Σ«α¼áµ¿ε  « ú¿»«µ¿¬½«¿ñáσ  ¿
  864. ñαπú¿σ  µ¿¬½«¿ñáσ  ¼«ª¡«  ¡á⌐Γ¿  ó  ªπα¡á½Ñ  "Byte",  May, 1987 ó ßΓáΓ∞Ñ
  865. "îáΓѼáΓ¿τÑ߬¿Ñ »«ßΓα«Ñ¡¿∩").
  866.  
  867. /* hyppix.c-»«ßΓα«Ñ¡¿Ñ ú¿»«µ¿¬½«ñá-Γ«τÑτ¡«Ñ */
  868. #include <stdio.h>
  869. #include <graph.h>
  870. #include <mach.h>
  871. #include <conio.h>
  872. struct videoconfig vc;
  873. char error_message [] = "This video mode is not supported";
  874. main()
  875. {
  876.    if (_setvideomode(_MRES4COLOR) == 0) {
  877.  
  878.  
  879.       printf ("%s\n", error_message);
  880.       exit(0);
  881.    }
  882.    _getvideoconfig (&vc);
  883.    hypcycle(); /* ó맮ó Σπ¡¬µ¿¿ α¿ß«óá¡¿∩ */
  884.    _clearscreen(_GCLEARSCREEN);
  885.    _setvideomode (_DEFAULTMODE); /* ó«ßßΓá¡«ó½Ñ¡¿Ñ ó¿ñÑ«-αѪ¿¼á */
  886. }
  887. hypcycle()
  888. {
  889.    float pi=3.14159; /* «íΩ∩ó½Ñ¡¿Ñ ¿ ¿¡µ¿á½¿ºáµ¿∩ */
  890.    float a,h,b,r,x0,y0,x,y, ang;
  891.    int i;
  892.    x0 = vc.numxpixels/2 -1;
  893.    y0 = vc.numypixels/2 -1;
  894.    printf ("circle ratio (>=1): ");
  895.    schanf ("%f", &r);
  896.    printf ("\npen position (>1): ");
  897.    scanf ("%f",&h);
  898.    _clearscreen(_GCLEARSCREEN);
  899.    _setcolor (1);
  900.    _moveto (x0,0); /* óδτÑατ¿óá¡¿Ñ «ßÑ⌐ */
  901.    _lineto (x0,vc.numypixels);
  902.    _moveto (0,y0);
  903.    _lineto (vc.numxpixels,y0);
  904.     a = 0.5*r*vc.numypixels/(r+h-1);
  905.    b = a/r;
  906.    h = h*b;
  907.    _setcolor (2);
  908.    ang = 0;
  909.  
  910.  
  911.    while (!kbhit()) { /* óδτÑατ¿óá¡¿Ñ ú¿»«µ¿¬½«¿ñá */
  912.        for (i=1; i<= 20; i++) {
  913.           ang = ang + 2*pi/100;
  914.           x = x0+(a-b)*cls(ang)+cos(ang*(a-b)/b);
  915.           y = y0-(a-b)*sin(ang)+h*sin(ang*(a-b)/b);
  916.            setpixel (x,y);
  917.        }
  918.    }
  919. }
  920.  
  921.  
  922.                         4.10. É¿ß«óá¡¿Ñ ½¿¡¿⌐.
  923.  
  924.     ä½∩ α¿ß«óá¡¿∩ ½¿¡¿⌐ ¼Ñªñπ ñóπ¼∩ Γ«τ¬á¼¿ ¿ß»«½∞ºπεΓß∩ Σπ¡¬µ¿∩ _moveto
  925. ¿ _lineto. ï¿¡¿∩ ¼«ªÑΓ íδΓ∞ óδτÑατѡᠽ¿í« »½«Γ¡« (¡Ñ»αÑαδó¡«), ½¿í«  »«
  926. «íαẵπ .
  927.  
  928.     -ÅÑαѼÑΘÑ¡¿Ñ ó ºáñá¡¡πε »«º¿µ¿ε.
  929.  
  930.     ä½∩ »ÑαѼÑΘÑ¡¿∩  ó ºáñá¡¡πε  ½«ú¿τÑ߬¿¼¿ ¬««αñ¿¡áΓἿ  (»áα«⌐ τ¿ßѽ)
  931. Γ«τ¬π ¿ß»«½∞ºπÑΓß∩ Σπ¡¬µ¿∩ _moveto. ö«α¼áΓ «»ÑαáΓ«αá _moveto  ß½ÑñπεΘ¿⌐:
  932.  
  933. _moveto (25,25); /* »ÑαѼÑΘÑ¡¿Ñ ó Γ«τ¬π ß ½«ú¿τÑ߬¿¼¿ ¬««αñ¿¡áΓἿ 25,25
  934. */
  935.  
  936.     -éδτÑατ¿óá¡¿Ñ ½¿¡¿⌐.
  937.  
  938.     ä½∩  Γ«ú«,  τΓ«íδ  »α«τÑαΓ¿Γ∞  ½¿¡¿ε  «Γ  ΓѬπΘÑ⌐ »«º¿µ¿¿ ¬παß«αá ñ«
  939. ºáñá¡¡«⌐ ó  Σπ¡¬µ¿¿ ¬«¡Ñτ¡«⌐  Γ«τ¬¿, ¿ß»«½∞ºπÑΓß∩  Σπ¡¬µ¿∩ _lineto. àß½¿
  940. ½¿¡¿∩ íδ½á  πß»ÑΦ¡« óδτÑατÑ¡á,  ΓѬπΘá∩ »«º¿µ¿∩  ¬παß«αá »ÑαѼÑΘáÑΓß∩ ¡á
  941. ¬««αñ¿¡áΓδ, π¬áºá¡¡δÑ  ó Σπ¡¬µ¿¿  _lineto .  êß»«½∞ºπѼδ⌐ µóÑΓ  ∩ó½∩ÑΓß∩
  942. ΓѬπΘ¿¼.  Å«ß½Ñ  óδ»«½¡Ñ¡¿Ñ   «»¿ßá¡¡«⌐  óδΦÑ  Σπ¡¬µ¿¿   _moveto(25,25),
  943. »α¿óÑñÑ¡¡á∩ ¡¿ªÑ Σπ¡¬µ¿∩ lineto  óδτÑαΓ¿Γ ½¿¡¿ε «Γ Γ«τ¬¿  ß ¬««αñ¿¡áΓἿ
  944. (25,25) ñ« Γ«τ¬¿ (100,100), »α¿τѼ ¬παß«α πßΓá¡«ó¿Γß∩ ó Γ«τ¬Ñ (100,100):
  945.  
  946. _lineto (100,100); /* óδτÑατ¿óá¡¿Ñ ½¿¡¿¿ «Γ ΓѬπΘÑ⌐ »«º¿µ¿¿ ñ« Γ«τ¬¿
  947.                       (100,100) */
  948.  
  949.     -éδτÑατ¿óá¡¿Ñ »π¡¬Γ¿α¡δσ ½¿¡¿⌐ ½¿í« ½¿¡¿⌐ «»αÑñѽѡ¡«ú« «íαẵá.
  950.  
  951.     É¿ß«ó᡿Ѽ ½¿¡¿¿ π»αáó½∩ÑΓ  ¼á߬á ßΓ¿½∩. îá߬á-φΓ«  ¿ß»«½∞ºπѼδ⌐ ñ½∩
  952. α¿ß«óá¡¿∩ 16-αáºα∩ñ¡δ⌐ Φáí½«¡. èáªñδ⌐ αáºα∩ñ ó ¼á߬Ѡ«»αÑñѽ∩ÑΓ »¿¬ßѽ ó
  953. ½¿¡¿¿. àß½¿  αáºα∩ñ ß«ñÑαª¿Γ  1, ß««ΓóÑΓßΓóπεΘ¿⌐  »¿¬ßѽ «¬αáΦ¿óáÑΓß∩  ó
  954. ΓѬπΘ¿⌐ µóÑΓ.  àß½¿ αáºα∩ñ  ß«ñÑαª¿Γ 0-»¿¬ßѽ  πßΓá¡áó½¿óáÑΓß∩ ó Σ«¡«óδ⌐
  955. µóÑΓ. æΓá¡ñáαΓ¡á∩ ¼á߬á-φΓ« ¡Ñ»αÑαδó¡á∩ »½«Γ¡á∩ ½¿¡¿∩ (0σFFFF).
  956.  
  957.     öπ¡¬µ¿∩  _setlinestyle  πßΓá¡áó½¿óáÑΓ  ßΓ¿½∞,  ó ¬«Γ«α«¼ óδτÑατ¿óáεΓ
  958. ½¿¡¿¿ Σπ¡¬µ¿¿ _lineto ¿ _rectangle.
  959.  
  960.     æ½ÑñπεΘ¿⌐ »α¿¼Ñα ¿º¼Ñ¡∩ÑΓ  ßΓ¿½∞ ½¿¡¿¿ ¡á  »π¡¬Γ¿α¡δ⌐: _setlinestyle
  961. (0xAAAA); /* ßΓ¿½∞ »« Φáí½«¡π 1010101010101010 */
  962.  
  963.       -Åα¿¼Ñα: éδτÑατ¿óá¡¿Ñ ½¿¡¿⌐.
  964. #include <stdio.h>
  965. #include <graph.h>
  966. #include <conio.h>
  967. struct videoconfig vc;
  968. char error_message [] = "This video mode is not supported";
  969. main()
  970. {
  971.    if (_setvideomode(_MRES4COLOR) == 0) {
  972.       printf ("%s\n", error message);
  973.       exit(0);
  974.    }
  975.  
  976.  
  977.    _getvideoconfig (&vc);
  978.    _setlinestyle (0x0001);
  979.    _moveto (0,0); /* óδτÑατ¿óá¡¿Ñ Σ¿úπαδ */
  980.    _lineto (0,150);
  981.    _setlinestyle (0x0bb0);
  982.    _lineto (150,150);
  983.    _setlinestyle (0x0ff0);
  984.    _lineto (150,0);
  985.    _setlinestyle (0xffff);
  986.    _lineto (0,0);
  987.    getchar(); /* «ª¿ñá¡¿Ñ ó«ºóαáΓá */
  988.    _clearscreen( GCLEARSCREEN); /* «τ¿ßΓ¬á ß«ñÑন¼«ú« φ¬αá¡á */
  989.    _setvideomode ( DEFAULTMODE); /* ó«ßßΓá¡«ó½Ñ¡¿Ñ ó¿ñÑ«-αѪ¿¼á */
  990. }
  991.  
  992.     Åα¿óÑñÑ¡¡á∩ óδΦÑ »α«úαá¼¼á óδτÑατ¿óáÑΓ »α∩¼«πú«½∞¡¿¬, »α¿τѼ  ¬áªñπε
  993. ßΓ«α«¡π ó αạ«¼ ßΓ¿½Ñ.
  994.  
  995.  
  996.                  4.11. Ä»¿ßá¡¿Ñ úαáΣ¿τÑ߬¿σ «íΩÑ¬Γ«ó.
  997.  
  998.     äá¡¡δ⌐  αáºñѽ  ñáÑΓ  «ß¡«ó«»«½áúáεΘ¿Ñ  ¬«¡µÑ»µ¿¿,  ¿ß»«½∞ºπѼδÑ »α¿
  999. «»¿ßá¡¿¿ úαáΣ¿τÑ߬¿σ «íΩÑ¬Γ«ó.
  1000.  
  1001.     -Äúαá¡¿τ¿óáεΘ¿⌐ »α∩¼«πú«½∞¡¿¬.
  1002.  
  1003.     Äúαá¡¿τ¿óáεΘ¿⌐  »α∩¼«πú«½∞¡¿¬  «»αÑñѽ∩ÑΓ  ¼ÑßΓ«,  ó  ¬«Γ«α«¼  íπñÑΓ
  1004. αáß»«½«ªÑ¡á  ¬απú«óá∩  Σ¿úπαá,  »α¿τѼ  µÑ¡Γα  »α∩¼«πú«½∞¡¿¬á «»αÑñѽ∩ÑΓ
  1005. µÑ¡Γα ¬απú«ó«⌐ Σ¿úπαδ. äαπú¿¼¿ ß½«óἿ, φΓ« »½«Θáñ∞, ºá»«½¡∩Ѽá∩ ¬απú½δ¼
  1006. «íΩÑ¬Γ«¼.  Äúαá¡¿τ¿óáεΘ¿⌐  »α∩¼«πú«½∞¡¿¬  ºáñáÑΓß∩ ¬««αñ¿¡áΓἿ óÑασ¡Ñú«
  1007. ½Ñó«ú« πú½á ¿  »αáó«ú« ¡¿ª¡Ñú« πú½á  ñá¡¡«ú« »α∩¼«πú«½∞¡¿¬á. äóá  ñαπú¿σ
  1008. πú½á »«ñαáºπ¼ÑóáεΓß∩.
  1009.  
  1010.     -âαá¡¿µá.
  1011.  
  1012.     âαá¡¿µá   ¬απú«ó«ú«   «íΩѬΓá   óδτÑατ¿óáÑΓß∩   ó   ΓѬπΘѼ  µóÑΓÑ ¿
  1013. ¡Ñ»αÑαδó¡«⌐  ½¿¡¿Ñ⌐.  âαá¡¿µá  »α∩¼«πú«½∞¡«ú«  «íΩѬΓá  óδτÑατ¿óáÑΓß∩  ó
  1014. ΓѬπΘѼ µóÑΓÑ ¿ ó ½εí«¼ ßΓ¿½Ñ, ºáñá¡¡«¼ Σπ¡¬µ¿Ñ⌐ _setlinestyle. àß½¿ ñ½∩
  1015. óδτÑατ¿óá¡¿∩ úαá¡¿µδ ¡Ñ ºáñá¡« Φáí½«¡á, ¿ß»«½∞ºπÑΓß∩ ßΓá¡ñáαΓ¡δ⌐  Φáí½«¡
  1016. (0xFFFF).
  1017.  
  1018.     -ö½áª«¬ ºá»«½¡Ñ¡¿∩.
  1019.  
  1020.     ö½áª«¬ ºá»«½¡Ñ¡¿∩ ¿ß»«½∞ºπÑΓß∩ ñ½∩ «»αÑñѽѡ¿∩ Γ«ú«, íπñÑΓ ½¿ Σ¿úπαá
  1021. ºá»«½¡∩Γ∞ß∩ »« ΓѬπΘÑ⌐ ¼á߬Ѡºá»«½¡Ñ¡¿∩ ¿½¿ «ßΓá¡ÑΓß∩ »πßΓ«⌐.  è«¡ßΓá¡Γá
  1022. _GFILLINTERIOR  «»αÑñѽ∩ÑΓ,  ¬á¬¿¼  «íαẫ¼  íπñÑΓ ºá»«½¡∩Γ∞ß∩ «íΩѬΓ, á
  1023. ¬«¡ßΓá¡Γá _GBORDER «»αÑñѽ∩ÑΓ, τΓ« íπñÑΓ óδτÑατ¿óáΓ∞ß∩ Γ«½∞¬« úαá¡¿µá.
  1024.  
  1025.     -éÑ¬Γ«α ¡áτá½á ¿ ¬«¡µá.
  1026.  
  1027.     äπúá ¿½¿ ßÑ¬Γ«α ¡áτ¿¡áεΓß∩ ó Γ«τ¬Ñ, úñÑ «úαá¡¿τ¿óáεΘ¿⌐ »α∩¼«πú«½∞¡¿¬
  1028. »ÑαÑßѬáÑΓß∩  ß«  ßΓáαΓ«óδ¼  óÑ¬Γ«α«¼   ¿  ºá¬á¡τ¿óáÑΓß∩  Γá¼,  úñÑ   «¡
  1029. »ÑαÑßѬáÑΓß∩ ß ºá¬á¡τ¿óáεΘ¿¼ óÑ¬Γ«α«¼.
  1030.  
  1031.     -è«φΣΣ¿µ¿Ñ¡Γ ¿º«íαáªÑ¡¿∩.
  1032.  
  1033.     è«φΣΣ¿µ¿Ñ¡Γ  ¿º«íαáªÑ¡¿∩-φΓ«  ¬«½¿τÑßΓó«  »¿¬ßѽ«ó  ¡á  óÑαΓ¿¬á½∞¡«⌐
  1034. ½¿¡¿¿, αáºñѽѡ¡«Ñ ¡á ¬«½¿τÑßΓó« »¿¬ßѽ«ó »« ú«α¿º«¡Γá½∞¡«⌐ ½¿¡¿¿. ùΓ«íδ
  1035. óδτÑαΓ¿Γ∞ ¬óáñαáΓ ¿½¿  «¬απª¡«ßΓ∞, óá¼ ß½ÑñπÑΓ  ß«¿º¼Ñα∩Γ∞ ¿σ αẼÑαδ  ß
  1036. ¬«φΣΣ¿µ¿Ñ¡Γ«¼ ¿º«íαáªÑ¡¿∩.
  1037.  
  1038.     è«φΣΣ¿µ¿Ñ¡Γ ¿º«íαáªÑ¡¿∩ ºáó¿ß¿Γ «Γ ñóπσ Σá¬Γ«α«ó:
  1039.  
  1040.     1.  â«α¿º«¡Γá½∞¡á∩  ßΓα«¬á  ¿¼ÑÑΓ  í«½∞ΦÑ »¿¬ßѽ«ó, τѼ óÑαΓ¿¬á½∞¡á∩
  1041. ¬«½«¡¬á Γ«⌐ ªÑ ßἫ⌐ Σ¿º¿τÑ߬«⌐ ñ½¿¡δ-ó« óßÑσ αѪ¿¼áσ φ¬αá ¡á, »«ß¬«½∞¬π
  1042. ¡á ú«α¿º«¡Γá½∞¡«⌐ ½¿¡¿¿ αáßßΓ«∩¡¿Ñ ¼Ñªñπ Γ«τ¬á¼¿ ¼Ñ¡∞ΦÑ.
  1043.  
  1044.     2. ¥¬αá¡ ó¿ñÑ«-ñ¿ß»½Ñ∩ Φ¿αÑ, τѼ Ñú« óδß«Γá, «íδτ¡« ß  ¬«φΣΣ¿µ¿Ñ¡Γ«¼
  1045. 4:3.
  1046.  
  1047.  
  1048.     -éδτ¿ß½Ñ¡¿Ñ ¬«φΣΣ¿µ¿Ñ¡Γá ¿º«íαáªÑ¡¿∩.
  1049.  
  1050.     è«φΣΣ¿µ¿Ñ¡Γ  ¿º«íαáªÑ¡¿∩  ñ½∩  ñá¡¡«ú«  ó¿ñÑ«-αѪ¿¼á  óδτ¿ß½∩ÑΓß∩ »«
  1051. ß½ÑñπεΘÑ⌐ Σ«α¼π½Ñ:
  1052.  
  1053.     ¬«φΣ.¿º«íα.=(Φ¿α¿¡á φ¬αá¡á/óδß«Γá φ¬αá¡á)*(π-»¿¬ßѽ/σ-»¿¬ßѽ),
  1054.  
  1055.     úñÑ "Φ¿α¿¡á φ¬αá¡á" ¿ "óδß«Γá φ¬αá¡á"-φΓ« Σ¿º¿τÑ߬¿Ñ αẼÑαδ φ¬αá¡á,
  1056. á "π-»¿¬ßѽ"  ¿ "σ-»¿¬ßѽ"-φΓ«  ΓѬπΘÑÑ αáºαÑΦÑ¡¿Ñ  φ¬αá¡á (¿º¼Ñα∩ÑΓß∩ ó
  1057. »¿¬ßѽáσ).
  1058.  
  1059.       -Åα¿¼Ñα: éδτÑατ¿óá¡¿Ñ Γ«τ¡« »α«»«αµ¿«¡á½∞¡δσ Σ¿úπα.
  1060. #include <stdi.h>
  1061. #include <math.h>
  1062. #include <graph.h>
  1063. struct videoconfig vc;
  1064. char error_mesage [] = "this video mode is not supported";
  1065. main()
  1066. {
  1067.    float ar, x, y;
  1068.    if (_setvideomode(_MRES4COLOR == 0) {
  1069.       printf ("%s\n", error_message);
  1070.       exit(0);
  1071.    }
  1072.    _getvideoconfig (&vc);
  1073.    /* αẼÑαδ φ¬αá¡á 10*6.6 ñε⌐¼«ó */
  1074.    ar = (float) (10 * vc.numypixels) / (6.5 * vc.numhpixels);
  1075.    y = 100*ar;
  1076.    x = 100;
  1077.    _setlogorg (vc.numxpixels/2 - 1, vc.numypixels/2 - 1);
  1078.    _setcolor (1);
  1079.    _rectangle (_GFILIINTERIOR, -x, -y, x, y);
  1080.    _setcolor (3);
  1081.  
  1082.  
  1083.    _ellipse (_GFILLINTERIOR, -x, -y, x, y);
  1084.    getchar();
  1085.    _clearscreen(_GCLEARSCREEN);
  1086.    _setvideomode (_DEFAULTMODE); /* ó«ßßΓá¡«ó½Ñ¡¿Ñ ó¿ñÑ«-αѪ¿¼á*/
  1087. }
  1088.  
  1089.     äá¡¡á∩  »α«úαἼᠠ¿ß»«½∞ºπÑΓ  ¬«φΣΣ¿µ¿Ñ¡Γ  ¿º«íαáªÑ¡¿∩, ñ½∩ Γ«τ¡«ú«
  1090. óδτÑατ¿óá¡¿∩ ¬óáñαáΓá ¿ «¬απª¡«ßΓ¿.
  1091.  
  1092.     èαπú«óá∩ Σ¿úπαá «ßóÑΘáÑΓ »α¿¡µ¿» «úαá¡¿τ¿óáεΘÑú« »α∩¼«πú«½∞¡¿¬á.
  1093.  
  1094.  
  1095.                   4.12. éδτÑατ¿óá¡¿Ñ «ß¡«ó¡δσ Σ¿úπα.
  1096.  
  1097.     Äß¡«ó¡δÑ Σ¿úπαδ, ¿¼ÑεΘ¿Ñß∩ ó ßΓá¡ñáαΓ¡«⌐ í¿í½¿«ΓѬѠ»α«µÑñπα  æê-φΓ«
  1098. »α∩¼«πú«½∞¡¿¬, φ½½¿»ß, ñπúá ¿ ßÑ¬Γ«α.
  1099.  
  1100.     -éδτÑατ¿óá¡¿Ñ »α∩¼«πú«½∞¡¿¬«ó.
  1101.  
  1102.     ä½∩  ¿º«íαáªÑ¡¿∩  »α∩¼«πú«½∞¡¿¬«ó  ¿ß»«½∞ºπÑΓß∩  Σπ¡¬µ¿∩  rectangle.
  1103. Çαúπ¼Ñ¡ΓἿ ñá¡¡«⌐  Σπ¡¬µ¿¿ ∩ó½∩εΓß∩  ¬««αñ¿¡áΓδ »α«Γ¿ó«»«½«ª¡δσ  πú½«ó.
  1104. ÄßΓá½∞¡δÑ πú½δ »«ñαáºπ¼ÑóáεΓß∩. Åáαá¼ÑΓα Σ½áª¬á ºá»«½¡Ñ¡¿∩  ¿ß»«½∞ºπÑΓß∩
  1105. ñ½∩  Γ«ú«,  τΓ«íδ  «»αÑñѽ¿Γ∞,  íπñÑΓ  ½¿ »α∩¼«πú«½∞¡¿¬ «í«º¡áτÑ¡ Γ«½∞¬«
  1106. úαá¡¿µá¼¿ ¿½¿ íπñÑΓ ºá»«½¡Ñ¡Γ  ΓѬπΘ¿¼ µóÑΓ«¼. äóÑ ¬«¼á¡ñδ,  »α¿óÑñÑ¡¡δÑ
  1107. ¡¿ªÑ,   óδτÑατ¿óáεΓ   »α∩¼«πú«½∞¡¿¬   ó   óÑασ¡¿⌐   ½Ñó«⌐  τáßΓ¿ φ¬αá¡á.
  1108. Åα«Γ¿ó«»«½«ª¡δÑ  πú½δ  »α∩¼«πú«½∞¡¿¬á  ºáñáεΓß∩  ¬««αñ¿¡áΓἿ:  (0,0)  ¿
  1109. (25,25).
  1110.  
  1111. _rectangle (_GBORDER,0,0,25,25); /* óδτÑατ¿óá¡¿Ñ Γ«½∞¬« úαá¡¿µ */
  1112. _restangle (_GFILLINTERIOR,25,25,0,0); /* ºá¬αáΦ¿óá¡¿Ñ ó¡πΓαÑ¡¡«ß-
  1113.                                           Γ¿ */
  1114.  
  1115.     -éδτÑατ¿óá¡¿Ñ «¬απª¡«ßΓÑ⌐ ¿ φ½½¿»ß«ó.
  1116.  
  1117.     ä½∩ óδτÑατ¿óá¡¿∩ φ½½¿»ß«ó  ¿ß»«½∞ºπÑΓß∩ Σπ¡¬µ¿∩ _ellipse.  Åáαá¼ÑΓαδ
  1118. Σπ¡¬µ¿¿ «»αÑñѽ∩εΓ »α«Γ¿ó«»«½«ª¡δÑ πú½δ «úαá¡¿τ¿óáεΘÑú«  »α∩¼«πú«½∞¡¿¬á.
  1119. ûÑ¡Γα«¼  φ½½¿»ßá  ∩ó½∩ÑΓß∩  µÑ¡Γα  «úαá¡¿τ¿óáεΘÑú«  »α∩¼«πú«½∞¡¿¬á. àß½¿
  1120. «úαá¡¿τ¿óáεΘ¿⌐    »α∩¼«πú«½∞¡¿¬    ∩ó½∩ÑΓß∩    ¬óáñαáΓ«¼-φ½½¿»ß    íπñÑΓ
  1121. «¬απª¡«ßΓ∞ε. ì¿ªÑ»α¿óÑñÑ¡¡δÑ ¬«¼á¡ñδ  óδτÑατ¿óáεΓ ñóá φ½½¿»ßá  ó óÑασ¡¿⌐
  1122. ½Ñó«⌐ τáßΓ¿ φ¬αá¡á:
  1123.  
  1124. _ellipse (_GBORDER,0,0,25,25); /* óδτÑατ¿óá¡¿Ñ «ñ¡¿σ úαá¡¿µ */
  1125. _ellipse (_GFILLINTERIOR,25,25,0,0); /* ºá»«½¡Ñ¡¿Ñ Σ¿úπαδ */
  1126.       àß½¿ »α¿¡µ¿» «úαá¡¿τ¿óáεΘÑú« »α∩¼«πú«½∞¡¿¬á ¡Ñ¼¡«ú« ¡Ñ»«¡∩ΓÑ¡,
  1127. óδ ¼«ªÑΓÑ óδºóáΓ∞ Σπ¡¬µ¿ε _ellipse, ¿ß»«½∞ºπ∩ Γ«½∞¬« µÑ¡Γα (σ,π) ¿
  1128. αáñ¿πß (r), ¬á¬ »«¬áºá¡« ¡¿ªÑ.
  1129. _ellipse (_GBORDER,x-r,y-r,x+r,y+r); /* óδτÑατ¿óá¡¿Ñ «ñ¡¿σ úαá¡¿µ */
  1130.  
  1131.     -꺫íαáªÑ¡¿Ñ ñπú ¿ ßÑ¬Γ«α«ó.
  1132.  
  1133.     äπúá-φΓ«  τáßΓ∞  φ½½¿»ßá,  ñαπú¿¼¿  ß½«óἿ,  ¬«α«Γ¬á∩ ¬α¿óá∩ ½¿¡¿∩.
  1134. æÑ¬Γ«α-φΓ« τáßΓ∞ φ½½¿»ßá, ó¬½ετáεΘá∩ ó ßÑí∩ ñπúπ ¿ »½«Θáñ∞, «úαá¡¿τÑ¡¡πε
  1135. ñó¼∩ ½¿¡¿∩¼¿,  ¿ñπΘ¿¼¿ «Γ  µÑ¡Γαá. Å½«Θáñ∞  ßÑ¬Γ«αᠺừ½¡∩ÑΓß∩  ΓѬπΘ¿¼
  1136. µóÑΓ«¼.äπúá    ¿½¿    ßÑ¬Γ«α    «»αÑñѽ∩εΓß∩    »α«Γ¿ó«»«½«ª¡δ¼¿  πú½á¼¿
  1137. «úαá¡¿τ¿óáεΘÑú« »α∩¼«πú«½∞¡¿¬á  ¿ ¬«¡Ñτ¡δ¼¿  Γ«τ¬á¼¿ óÑ¬Γ«α«ó,  ºáñáεΘ¿σ
  1138. ¬«¡Ñτ¡δÑ Γ«τ¬¿ ñπú¿ ¿½¿ ßÑ¬Γ«αá. ûÑ¡Γα ñπú¿ ¿½¿ ßÑ¬Γ«αá-φΓ« óßÑúñᠵѡΓα
  1139. «úαá¡¿τ¿óáεΘÑú« »α∩¼«πú«½∞¡¿¬á. äπúá ¿½¿ ßÑ¬Γ«α ¡áτ¿¡áεΓß∩ ó Γ«τ¬Ñ,  úñÑ
  1140. óÑ¬Γ«α, «»αÑñѽ∩Ѽδ⌐  µÑ¡Γα«¼ «úαá¡¿τ¿óáεΘÑú«  »α∩¼«πú«½∞¡¿¬á ¿  ΓαÑΓ∞Ñ⌐
  1141. »áα«⌐ Γ«τѬ,  »ÑαÑßѬáÑΓ «úαá¡¿τ¿óáεΘ¿⌐  »α∩¼«πú«½∞¡¿¬. äπúá  ¿½¿ ßÑ¬Γ«α
  1142. ¬«¡τáεΓß∩  Γá¼,   úñÑ  óÑ¬Γ«α,   «»αÑñѽ∩Ѽδ⌐  µÑ¡Γα«¼   «úαá¡¿τ¿óáεΘÑú«
  1143. »α∩¼«πú«½∞¡¿¬á  ¿  »«ß½Ññ¡Ñ⌐  »áα«⌐  Γ«τѬ,  »ÑαÑßѬáÑΓ   «úαá¡¿τ¿óáεΘ¿⌐
  1144. »α∩¼«πú«½∞¡¿¬. äπúá ¿½¿ ßÑ¬Γ«α α¿ßπεΓß∩ ß ¿ß»«½∞º«ó᡿Ѽ ΓѬπΘÑú«  µóÑΓá
  1145. »« ¡á»αáó½Ñ¡¿ε τáß«ó«⌐ ßΓαѽ¬¿. äπúá-¡Ñºá¼¬¡πΓá∩ Σ¿úπαá, »«φΓ«¼π «¡á  ¡Ñ
  1146. ºá¬αáΦ¿óáÑΓß∩.  æÑ¬Γ«α  ºá¬αáΦ¿óáÑΓß∩  ΓѬπΘ¿¼  µóÑΓ«¼. Åα¿óÑñÑ¡¡δÑ ¡¿ªÑ
  1147. »α¿¼Ñαδ »«¬áºδóáεΓ ¿ß»«½∞º«óá¡¿Ñ ñá¡¡δσ Σπ¡¬µ¿⌐:
  1148.  
  1149. /* «úαá¡¿τ¿óáεΘ¿⌐ »α∩¼«πú«½∞¡¿¬ «»αÑñѽ∩ÑΓß∩ ¬««αñ¿¡áΓἿ: (,0) ¿
  1150. (50,50), óÑ¬Γ«α ¡áτá½á-µÑ¡Γα «úαá¡¿τ¿óáεΘÑú« »α∩¼«πú«½∞¡¿¬á &
  1151. (0,100); ¬«¡Ñτ¡δ⌐ óÑ¬Γ«α-µÑ¡Γα «úαá¡¿τ¿óáεΘÑú« »α∩¼«πú«½∞¡¿¬á
  1152. &(100,100) */
  1153. _arc (0, 0, 50, 50, 0, 100, 100, 100);
  1154. _pie (_GFILLINTERIOR, 0, 0, 50, 50, 0, 100, 100, 100);
  1155.  
  1156.       -Åα¿¼Ñα: É¿ß«óá¡¿Ñ Σ¿úπα.
  1157. #include <stdio.h>
  1158. #include <graph.h>
  1159. #include <math.h>
  1160. struct videoconfig vc;
  1161. char error_message [] = "äá¡¡δ⌐ ó¿ñÑ«-αѪ¿¼ »«ññÑনóáÑΓß∩";
  1162. main()
  1163. {
  1164.    int x = 50;
  1165.    int y = 40;
  1166.    if (_setvideomode(_MRES4COLOR) == 0) {
  1167.       printf ("%s\n", error_message);
  1168.       exit (0);
  1169.    }
  1170.    _getvideoconfig (&vc);
  1171.    _setlogorg (vc.numxpixels/2 - 1, vc.numypixels/2 - 1);
  1172.    _setcolor (1);
  1173.    _setlogorg (vc.numxpixels/2 - 2, vc.numypixels/2 - 1);
  1174.    _setlinestyle (0x5555);
  1175.    _rectangle (_GBORDER, -x, -y, x, y);
  1176.    _setcolor (2);
  1177.    _ellipse (_GFILLINTERIOR, -x, -y, x, y);
  1178.    _setcolor (3);
  1179.  
  1180.  
  1181.    _pie (_GFILLINTERIOR,-x, -y, x, y, -x-10, y+10, x+10, y-10);
  1182.    getchar();
  1183.    _clearscreen(_GCLEARSCREEN);
  1184.    _setdideomode (_DEFAULTMODE); /* ó«ßßΓá¡«ó½Ñ¡¿Ñ ó¿ñÑ«-αѪ¿¼á */
  1185. }
  1186.  
  1187.  
  1188.                   4.13. çừ½¡Ñ¡¿Ñ Σ¿úπα »« Φáí½«¡π.
  1189.  
  1190.     ä½∩  ºá»«½¡Ñ¡¿∩  ½εí«⌐  ºá¼¬¡πΓ«⌐  Σ¿úπαδ  »«  Φáí½«¡π  ¿ß»«½∞ºπÑΓß∩
  1191. Σπ¡¬µ¿∩ _floodfill. çἬ¡πΓá∩ Σ¿úπαá-φΓ«  Σ¿úπαá, ¡Ñ ¿¼ÑεΘá∩ αáºαδó«ó  ó
  1192. «úαá¡¿τ¿óáεΘÑ⌐ ÑÑ ½¿¡¿¿.
  1193.  
  1194.     -çừ½¡Ñ¡¿Ñ Σ¿úπα »« Φáí½«¡π.
  1195.  
  1196.     öπ¡¬µ¿∩ _floodfill ¿ß»«½∞ºπÑΓß∩  ñ½∩ ºá»«½¡Ñ¡¿∩ ºá¼¬¡πΓ«⌐  Σ¿úπαδ »«
  1197. Φáí½«¡π,  ºáñáóáѼ«¼π  »áαá¼ÑΓα«¼  fillmask.   (¼á߬ᠺừ½¡Ñ¡¿∩). îá߬á
  1198. ºá»«½¡Ñ¡¿∩-φΓ« ¼áßß¿ó ó«ß∞¼¿αáºα∩ñ¡δσ º¡áτÑ¡¿⌐, ó ¬«Γ«α«¼ ¬áªñδ⌐  αáºα∩ñ
  1199. »αÑñßΓáó½∩ÑΓ  ß««ΓóÑΓßΓóπεΘ¿⌐  »¿¬ßѽ.  àß½¿  αáºα∩ñ  ß«ñÑαª¿Γ 0, »¿¬ßѽ
  1200. «ßΓáÑΓß∩ ¡Ñºá»«½¡Ñ¡¡«⌐. àß½¿ í¿Γ ß«ñÑαª¿Γ 1, ∩τÑ⌐¬á ºá»«½¡∩ÑΓß∩  ΓѬπΘ¿¼
  1201. µóÑΓ«¼. äá¡¡á∩ ¼á߬ᠺừ½¡Ñ¡¿∩ »«óΓ«α∩ÑΓß∩ óßεñπ ¡á ºá»«½¡∩Ѽ«⌐ »½«Θáñ¿
  1202. Σ¿úπαδ. æΓá¡ñáαΓ¡á∩ ¼á߬ᠺừ½¡Ñ¡¿∩-φΓ« ß»½«Φ¡«Ñ ºá¬αáΦ¿óá¡¿Ñ.
  1203.  
  1204.     îá߬ᠺừ½¡Ñ¡¿∩ ñÑ⌐ßΓóπÑΓ ó  ∩ó¡«¼ αѪ¿¼Ñ ºá¬αáΦ¿óá¡¿∩. àß½¿  í¿Γ ó
  1205. ¼á߬ѠαáóÑ¡ ¡π½ε, »¿¬ßѽ «ßΓáÑΓß∩ ¡Ñºá»«½¡Ñ¡¡δ¼. àñ¿¡¿µá, ß«ñÑαªáΘá∩ß∩ ó
  1206. ¼á߬Ѡ ºá¬αáΦ¿óáÑΓ  ß««ΓóÑΓßΓóπεΘ¿⌐  »¿¬ßѽ  ó  ΓѬπΘ¿⌐ µóÑΓ. Å«-αạ«¼π
  1207. αá߬αáΦÑ¡¡δÑ  Σ¿úπαδ  ¼«úπΓ  íδΓ∞  ß«ºñá¡δ  ß  »«¼«Θ∞ε πßΓᡫ󬿠¿ ß¼Ñ¡δ
  1208. µóÑΓ«ó  ¼Ñªñπ  ó맮óἿ  Σπ¡¬µ¿¿  _floodfill.  âαá¡¿µá,  ¡Ñ   ∩ó½∩εΘá∩ß∩
  1209. ¡Ñ»αÑαδó¡«⌐   (Φáí½«¡   ¬«Γ«α«⌐    ¡Ñ   αáóÑ¡   0σFFFF),    »α¿óÑñÑΓ   ¬
  1210. ¡Ñ»αÑñ߬áºπѼ«¼π  αѺπ½∞ΓáΓπ,  Ñß½¿  óδ  ßñѽáÑΓÑ  »«»δΓ¬π  ºá»«½¡Ñ¡¿∩ ß
  1211. »«¼«Θ∞ε  Σπ¡¬µ¿¿   _floodfill  (óÑα«∩Γ¡«   ¬  »ÑαÑ»«½¡Ñ¡¿ε   úαáΣ¿τÑ߬«⌐
  1212. «í½áßΓ¿).
  1213.  
  1214.     ùΓ«íδ  óÑα¡πΓ∞ß∩  ¬  ΓѬπΘÑ⌐  ¼á߬Ѡ ºá»«½¡Ñ¡¿∩, ¿ß»«½∞ºπ⌐ΓÑ Σπ¡¬µ¿ε
  1215. _getfillmask.   öπ¡¬µ¿∩   _getfillmask   »α¿¼Ñ¡∩ÑΓß∩   ñ½∩   Γ«ú«, τΓ«íδ
  1216. πßΓá¡«ó¿Γ∞ ΓѬπΘπε  ¼á߬π ºá»«½¡Ñ¡¿∩  ó ºáñá¡¡«Ñ  º¡áτÑ¡¿Ñ. ì¿ªÑ »«¬áºá¡
  1217. Σ«α¼áΓ Σπ¡¬µ¿⌐ ºáñá¡¿∩ ¼á߬¿ ºá»«½¡Ñ¡¿∩:
  1218.  
  1219. _getfillmask (fillmask);
  1220. _setfillmask (fillmask);
  1221.  
  1222.       îá߬ᠺừ½¡Ñ¡¿∩ NULL ¿ß»«½∞ºπÑΓß∩ ñ½∩ »ÑαѬ½ετÑ¡¿∩ αѪ¿¼á
  1223. ºá»«½¡Ñ¡¿∩ Σ¿úπαδ ó ß»½«Φ¡«Ñ ºá»«½¡Ñ¡¿Ñ, ¬á¬ »«¬áºá¡« ¡¿ªÑ:
  1224. _setfillmask (NULL); /* »ÑαѬ½ετÑ¡¿Ñ ¼á߬¿ ¡á ß»½«Φ¡«Ñ ºá»«½¡Ñ¡¿Ñ */
  1225.  
  1226.       -櫺ñá¡¿Ñ ¼á߬¿ ºá»«½¡Ñ¡¿∩.
  1227.  
  1228.     îá߬ᠺừ½¡Ñ¡¿∩ »αÑñßΓáó½∩ÑΓ ß«í«⌐ ¼áßß¿ó ó«ß∞¼¿αáºα∩ñ¡δσ  º¡áτÑ¡¿⌐
  1229. («»αÑñѽ∩Ѽδ⌐, ¬á¬ «íδτ¡δ⌐ ß¿¼ó«½∞¡δ⌐ ¼áßß¿ó). æ«ºñá¡¿Ñ ¼á߬¿ ºá»«½¡Ñ¡¿∩
  1230. «»¿ßδóáÑΓß∩ ¡¿ªÑ:
  1231.  
  1232.     1. ìáα¿ßπ⌐ΓÑ Γáí½¿µπ-Φáí½«¡ ß ó«ßѼ∞ε ¬«½«¡¬á¼¿ ¿ ó«ßѼ∞ε  ßΓα«¬á¼¿,
  1233. ºá»«½¡Ñ¡¡πε ¡π½∩¼¿.  Å«¼ÑßΓ¿ΓÑ Ññ¿¡¿µδ  (1) ó  ¬áªñπε ∩τÑ⌐¬π  ¬«Γ«απε óδ
  1234. σ«Γ¿ΓÑ ºá¬αáß¿Γ∞.
  1235.  
  1236.     2.  ÅαÑ«íαáºπ⌐ΓÑ  8-αáºα∩ñ¡δÑ  τ¿ß½á  ó  ¬áªñ«⌐ ¬«½«¡¬Ñ ó ñÑß∩Γ¿τ¡δÑ
  1237. µÑ½δÑ.
  1238.  
  1239.     3. æ«ºñá⌐ΓÑ ¿º φΓ¿σ º¡áτÑ¡¿⌐ ¼áßß¿ó, ¬á¬ »«¬áºá¡« ¡¿ªÑ:
  1240.  
  1241.       /* ¼á߬ᠺừ½¡Ñ¡¿∩ ñ½∩ Φáí½«¡á X
  1242.          ñó«¿τ¡«Ñ          ñÑß∩Γ¿τ¡«Ñ
  1243.          »αÑñßΓáó½Ñ¡¿Ñ     »αÑñßΓáó½Ñ¡¿Ñ
  1244.  
  1245.          10000001           129
  1246.          01000010            66
  1247.          00100100            36
  1248.          00011000            24
  1249.          00011000            24
  1250.          00100100            36
  1251.          01000010            66
  1252.          10000001           129 */
  1253.  
  1254.       char fill_mask [] = {129,66,36,24,24,36,66,129};
  1255.  
  1256.       4. ìáα¿ßπ⌐ΓÑ Σ¿úπαπ ¿ ºá¬αáß∞ΓÑ ÑÑ ó¡πΓαÑ¡¡«ßΓ∞ ß »«¼«Θ∞ε Γ«½∞-
  1257.          ¬« τΓ« ß«ºñá¡¡«⌐ ¼á߬¿.
  1258. _setfillmask (fill_mask);
  1259. _rectangle (_GFILLINTERIOR,50,50,25,25,100);
  1260.  
  1261.       -Åα¿¼Ñα: çừ½¡Ñ¡¿Ñ Σ¿úπα »« «íαẵá¼.
  1262. #include <stdio.h>
  1263. #include <graph.h>
  1264. char mask1 [] = {0,66,36,24,24,36,36,66,0}; /* 2 ¼á߬¿ ºá»«½¡Ñ¡¿∩ */
  1265. char mask2 [] = {0,24,0,102,102,0,24,0};
  1266. char error_message [] = This video mode is not supported";
  1267. main()
  1268. {
  1269.    if (_setvideomode(_MRES4COLOR) == 0) {
  1270.       printf ("%s'n", error_message);
  1271.       exit(0);
  1272.    }
  1273.    _setfillmask (mask1);
  1274.    _setcolor (1); /* ¿ß»«½∞º«óá¡¿Ñ ¼¡«ú«µóÑΓ¡«ßΓ¿ */
  1275.    _rectangle (_GBORDER,0,0,150,150);
  1276.    _setcolor (2);
  1277.    _floodfill (100,100,1); /* ßΓ«» ¡á úαá¡¿µÑ µóÑΓá */
  1278.    _setcolor (3);
  1279.    _setfillmask (mask2);
  1280.    _floodfill (100,100,1);
  1281.    getchar(); /* «ª¿ñá¡¿Ñ ó«ºóαáΓá ¬áαÑΓ¬¿ */
  1282.    _clearsceen(_GCLEARSCREEN);
  1283.    _setvideomode (_DEFAULTMODE); /* ó«ßßΓá¡«ó½Ñ¡¿ ó¿ñÑ«-αѪ¿¼á */
  1284. }
  1285.  
  1286.  
  1287.  
  1288.                 4.14. éδτÑατ¿óá¡¿Ñ ¿ ºá»«¼¿¡á¡¿Ñ Σ¿úπα.
  1289.  
  1290.     é   »á¼∩Γ¿   ¼«ª¡«   ºá»«¼¿¡áΓ∞   ß½«ª¡δÑ   Σ¿úπαδ   ñ½∩ ñá½∞¡Ñ⌐ΦÑú«
  1291. ¿ß»«½∞º«óá¡¿∩  ¿σ   ó  ¼π½∞Γ¿»½¿¬áµ¿¿.   öπ¡¬µ¿∩  _getimage   ºá»¿ßδóáÑΓ
  1292. ¿º«íααáªÑ¡¿Ñ ó »á¼∩Γ∞, á Σπ¡¬µ¿∩ _putimage óδºδóáÑΓ σαá¡∩Θ¿⌐ß∩ ó  »á¼∩Γ¿
  1293. ¿º«íαáªÑ¡¿Ñ ¡á φ¬αá¡.
  1294.  
  1295.     -çừ¼¿¡á¡¿Ñ ¿º«íαáªÑ¡¿⌐.
  1296.  
  1297.     ÉẼÑαδ  ß«σαá¡∩Ѽ«ú«  ó  »á¼∩Γ¿  φ¬αá¡¡«ú«  «íαáºá   «úαá¡¿τ¿óáεΓß∩
  1298. αẼÑαἿ «úαá¡¿τ¿óáεΘÑú«  »α∩¼«πú«½∞¡¿¬á. ä½∩  Γ«ú«, τΓ«íδ  ß¬«»¿α«óáΓ∞
  1299. «í½áßΓ∞  φ¬αá¡á,  ¡áσ«ñ∩Θπεß∩  ó¡πΓα¿  «úαá¡¿τ¿óáεΘÑú« »α∩¼«πú«½∞¡¿¬á, ó
  1300. íπΣÑα¡πε »á¼∩Γ∞, ¿ß»«½∞ºπÑΓß∩ Σπ¡¬µ¿∩ _getimage, ¬á¬ »«¬áºá¡« ¡¿ªÑ:
  1301.  
  1302.     _getimage (0,0,10,10,buffer);
  1303.  
  1304.     Äúαá¡¿τ¿óáεΘ¿⌐ »α∩¼«πú«½∞¡¿¬ ¿¼ÑÑΓ ¬««αñ¿¡áΓδ »α«Γ¿ó«»«½«ª¡δσ  πú½«ó
  1305. (0,0) ¿  (10,10). ÅÑαѼѡ¡á∩  buffer-φΓ« π¬áºáΓѽ∞  ¡á íπΣÑα,  ó ¬«Γ«α«⌐
  1306. íπñÑΓ σαá¡¿Γ∞ß∩ ñá¡¡δ⌐ φ¬αá¡¡δ⌐ «íαáº.
  1307.  
  1308.     -ÆαÑí«óá¡¿∩ »á¼∩Γ¿ ñ½∩ Σπ¡¬µ¿¿ _getimage.
  1309.  
  1310.     üπΣÑα ñ«½ªÑ¡ ¿¼ÑΓ∞ ñ«ßΓáΓ«τ¡δÑ αẼÑαδ ñ½∩ αẼÑΘÑ¡¿∩ ¿º«íαáªÑ¡¿∩  ó
  1311. »á¼∩Γ¿.  ÅÑαÑñ   ΓѼ,  ¬á¬   ºá»¿ßáΓ∞  ¿º«íαáªÑ¡¿Ñ,   óδ»«½¡¿ΓÑ  Σπ¡¬µ¿ε
  1312. _getimagesize,  «»αÑñѽ∩εΘπε  αẼÑα  íπΣÑαá  ñ½∩  σαá¡Ñ¡¿∩ ¿º«íαáªÑ¡¿∩.
  1313. Åα¿¼Ñα,  »α¿óÑñÑ¡¡δ⌐   ó  ¬«¡µÑ   ñá¡¡«ú«  αáºñѽᠠ ¿½½εßΓα¿απÑΓ  ΓᬪÑ
  1314. ¿ß»«½∞º«óá¡¿Ñ Σπ¡¬µ¿¿ malloc ñ½∩ αáß»αÑñѽѡ¿∩ »á¼∩Γ¿ »«ñ íπΣÑα.
  1315.  
  1316.     éδó«ñ ¿º«íαáªÑ¡¿⌐ ¿º »á¼∩Γ¿.
  1317.  
  1318.     öπ¡¬µ¿∩  _putimage  ¿ß»«½∞ºπÑΓß∩  ñ½∩  ó맮óá  «íαáºá   ß«σαá¡Ñ¡¡«ú«
  1319. »α∩¼«πú«½∞¡¿¬á  ¡á  φ¬αá¡,  »α¿τѼ  ó  Σπ¡¬µ¿¿ ºáñáεΓß∩ ¬««αñ¿¡áΓδ Γ«τ¬¿
  1320. óÑασ¡Ñú«  ½Ñó«ú«  πú½á  ªÑ½áѼ«ú«  »«∩ó½Ñ¡¿∩  »α∩¼«πú«½∞¡¿¬á  ¡á φ¬αá¡Ñ.
  1321. öπ¡¬µ¿∩, »α¿óÑñÑ¡¡á∩ ¡¿ªÑ, ¿½½εßΓα¿απÑΓ  óδó«ñ ¿º«íαáªÑ¡¿∩ ¿º »á¼∩Γ¿  ¡á
  1322. φ¬αá¡  ó¡πΓα∞.  »α∩¼«πú«½∞¡¿¬á  ß  ¬««αñ¿¡áΓἿ  ó  ½Ñó«¼  óÑασ¡Ñ¼  πú½π
  1323. (50,50).    Å«ß½Ññ¡¿⌐    »áαá¼ÑΓα-φΓ«    áαúπ¼Ñ¡Γ     "ú½áú«½-ñÑ⌐ßΓó¿∩",
  1324. «»αÑñѽ∩εΘ¿⌐,  ¬á¬¿¼   «íαẫ¼  «íαáº,   σαá¡∩Θ¿⌐ß∩  ó   »á¼∩Γ¿,  ñ«½ªÑ¡
  1325. óºá¿¼«ñÑ⌐ßΓó«óáΓ∞ ß ΓѬπΘ¿¼ φ¬αá¡«¼. _putimage (50,50,buffer,_GPSET);
  1326.  
  1327.     -Çαúπ¼Ñ¡Γ "ú½áú«½-ñÑ⌐ßΓó¿∩ Σπ¡¬µ¿¿ _putimage.
  1328.  
  1329.     â½áú«½   ñÑ⌐ßΓó¿∩   π»αáó½∩ÑΓ   ΓѼ,   ¬á¬¿¼   «íαẫ¼ ¿º«íααáªÑ¡¿Ñ,
  1330. óδºδóáѼ«Ñ ¿º  »á¼∩Γ¿, íπñÑΓ  óºá¿¼«ñÑ⌐ßΓó«óáΓ∞ ß  ΓѼ, τΓ«  πªÑ ÑßΓ∞ ¡á
  1331. φ¬αá¡Ñ.  Ä»¿ßδóáεΘ¿Ñ  ¬«¡ßΓá¡Γδ  ñá¡¡«ú«  áαúπ¼Ñ¡Γá »α¿ó«ñ∩Γ ¬ ß½ÑñπεΘ¿¼
  1332. ñÑ⌐ßΓó¿∩¼:
  1333.  
  1334.  è«¡ßΓá¡Γá             äÑ⌐ßΓó¿Ñ
  1335.  
  1336.  
  1337.  _GPSET                Åα∩¼á∩ »ÑαÑß佬á.
  1338.  _GPRESET              Åα∩¼á∩ »ÑαÑß佬á, µóÑΓ ¿¡óÑαΓ¿α«óá¡.
  1339.  _GAND                 ï«ú¿τÑ߬«Ñ AND óδºóá¡¡«ú« «íαáºá ¿ ΓѬπΘÑú«
  1340.                        φ¬αá¡á «íαáºá.
  1341.  _GOR                  ìὫªÑ¡¿Ñ «íαáºá ¡á ßπΘÑßΓóπεΘ¿⌐ «íαáº.
  1342.  _GXOR                 ê¡óÑαß¿∩ φ¬αá¡á Γá¼, úñÑ ó íπΣÑαÑ ßπΘÑßΓóπÑΓ
  1343.                        Γ«τ¬á.
  1344.  
  1345.  
  1346.  
  1347.       -Åα¿¼Ñα: α¿ß«óá¡¿Ñ ¿ ºá»«¼¿¡á¡¿Ñ Σ¿úπαδ.
  1348. draw_and_store_figure()
  1349. {
  1350.    _setbkcolor (0);
  1351.    _setcolor (1);
  1352.    _rectangle (_GBORDER,0,0,10,10);
  1353.    _setcolor (2);
  1354.    _rectangle (_GFILLINTERIOR,1,1,9,9);
  1355.    _setcolor (3);
  1356.    _moveto (1,1);
  1357.  
  1358.  
  1359.    _lineto (9,9);
  1360.    _moveto (1,9);
  1361.    _lineto (9,1);
  1362.    buffer=(char far *)malloc((unsigned int)
  1363.           _imagesize(0,0,10,10));
  1364.    _getimage (0,0,10,10, buffer);
  1365. }
  1366.  
  1367.     äá¡¡á∩  Σπ¡¬µ¿∩  α¿ßπÑΓ  Σ¿úπαπ,  «»αÑñѽ∩ÑΓ  αẼÑα,  ΓαÑíπѼδ⌐ ñ½∩
  1368. αẼÑΘÑ¡¿∩ ¿º«íαáªÑ¡¿∩ ó »á¼∩Γ¿, ºáΓѼ »«¼ÑΘáÑΓ Σ¿úπαπ ó »á¼∩Γ∞  (íπΣÑα)
  1369. ñ½∩  ñá½∞¡Ñ⌐ΦÑú«  ¿ß»«½∞º«óá¡¿∩  ÑÑ  ó  ¼π½∞Γ¿»½¿¬áµ¿¿.  (äá¡¡á∩ Σπ¡¬µ¿∩
  1370. »«ºñ¡ÑÑ  »«∩ó½∩ÑΓß∩  ó  ÉáºñѽѠ 4.15, "êß»«½∞º«óá¡¿Ñ ¼π½∞Γ¿»½¿¬áµ¿¿", ó
  1371. »«½¡«⌐ »α«úαἼѠ¡á ∩ºδ¬Ñ æê.
  1372.  
  1373.  
  1374.                   4.15. êß»«½∞º«óá¡¿Ñ ¼π½∞Γ¿»½¿¬áµ¿¿.
  1375.  
  1376.     Åα«ßΓÑ⌐Φá∩ ¼π½∞Γ¿»½¿¬áµ¿∩ ¼«ªÑΓ íδΓ∞ ß«ºñá¡á, ¡á»α¿¼Ñα, »ÑαѼÑΘÑ¡¿Ñ¼
  1377. Σ¿úπαδ ó ¡«óπε  »«º¿µ¿ε ¡á φ¬αá¡Ñ  ß πñá½Ñ¡¿Ñ¼ ßΓáα«ú«  ¿º«íαáªÑ¡¿∩. ä½∩
  1378. í«½ÑÑ  íδßΓα«⌐  ¿  φΣΣÑ¬Γ¿ó¡«⌐  ¼π½∞Γ¿»½¿¬áµ¿¿  ß »«¼«Θ∞ε ß½«ª¡δσ Σ¿úπα,
  1379. ¿ß»«½∞ºπ⌐ΓÑ Σπ¡¬µ¿¿ _getimage ¿ _ putimage.
  1380.  
  1381.     -櫺ñá¡¿Ñ ¼π½∞Γ¿»½¿¬áµ¿¿.
  1382.  
  1383.     æ«ºñá⌐ΓÑ  ¿º«íαáªÑ¡¿Ñ  ¡á  φ¬αá¡Ñ,  ¿ß»«½∞ºπ∩  úαáΣ¿τÑ߬¿Ñ  Σπ¡¬µ¿¿,
  1384. ßñѽá⌐ΓÑ  "ß¡¿¼«¬"  φΓ«ú«  ¿º«íαáªÑ¡¿∩   ó  »á¼∩Γ∞  ß  »«¼«Θ∞ε   Σπ¡¬µ¿¿
  1385. _getimage. çáΓѼ »«ßαÑñßΓó«¼  Σπ¡¬µ¿¿ _putimage óδ  ¼«ªÑΓÑ ó«ß»α«¿ºóÑßΓ¿
  1386. ñá¡¡«Ñ ¿º«íαáªÑ¡¿Ñ úñÑ-¡¿íπñ∞ ¡á φ¬αá¡Ñ.
  1387.  
  1388.     ä½∩  ¼π½∞Γ¿»½¿¬áµ¿¿  σ«α«Φ«  »«ñσ«ñ∩Γ  ñóá ú½áú«½á-ñÑ⌐ßΓó¿∩: _GXOR ¿
  1389. _GPSET. îπ½∞Γ¿»½¿¬áµ¿∩ ß »«¼«Θ∞ε _GPSET αáí«ΓáÑΓ íδßΓαÑÑ, ¡«  π¡¿τΓ«ªáÑΓ
  1390. Σ«¡, ¡á»α«Γ¿ó, ¼π½∞Γ¿»½¿¬áµ¿∩ ß  _GXOR αáí«ΓáÑΓ ¼Ññ½Ñ¡¡ÑÑ, ¡«  ß«σαá¡∩ÑΓ
  1391. Σ«¡ φ¬αá¡á.
  1392.  
  1393.  
  1394.     -êß»«½∞º«óá¡¿Ñ ó ¼π½∞Γ¿»½¿¬áµ¿¿ ¬«¡ßΓá¡Γδ _GXOR.
  1395.  
  1396.     îπ½∞Γ¿»½¿¬áµ¿∩  ß   »α¿¼Ñ¡Ñ¡¿Ñ¼  _GXOR   «ßπΘÑßΓó½∩ÑΓß∩  óδ»«½¡Ñ¡¿Ñ¼
  1397. ß½ÑñπεΘ¿σ τÑΓδαÑσ Φáú«ó:
  1398.  
  1399.     1.Å«¼ÑßΓ¿ΓÑ «íΩÑ¬Γ ¡á φ¬αá¡ ß »«¼«Θ∞ε _GXOR.
  1400.  
  1401.     2.éδτ¿ß½¿ΓÑ ¡«ó«Ñ »«½«ªÑ¡¿Ñ «íΩѬΓá.
  1402.  
  1403.     3.Å«¼ÑßΓ¿ΓÑ  «íΩÑ¬Γ  ¡á  φ¬αá¡  óΓ«α«⌐  αẠ »«  ßΓáα«⌐  »«º¿µ¿¿   ß
  1404. ¬«¡ßΓá¡Γ«⌐ GXOR-τΓ«íδ πñ὿Γ∞ ßΓáα«Ñ ¿º«íαáªÑ¡¿Ñ
  1405.  
  1406.     4.ÅÑαÑ⌐ñ¿ΓÑ  ¬  Φáúπ  1,  ¡«  ¡á  φëàαẠ»«¼ÑßΓ¿ΓÑ «íΩÑ¬Γ ¡á ¡«óπε
  1407. »«º¿µ¿ε.
  1408.  
  1409.     ÅÑαѼÑΘÑ¡¿Ñ  «íΩѬΓá,  óδ»«½¡Ñ¡¡«Ñ  ß  »«¼«Θ∞ε ñá¡¡δσ τÑΓδαÑσ Φáú«ó,
  1410. «ßΓáó½∩ÑΓ  Σ«¡  ¡Ñ¿º¼Ñ¡¡δ¼  »«ß½Ñ  Φáúá  3. ÄΓ ¼¿úá¡¿∩ ¿º«íαáªÑ¡¿∩ ¼«ª¡«
  1411. ¿ºíáó¿Γ∞ß∩ »«ßαÑñßΓó«¼ ¼¿¡¿¼¿ºáµ¿¿ óαѼѡ¿ αáí«Γδ ¼Ñªñπ ΦáúἿ 4 ¿ 1,  ¿
  1412. πóÑαÑ¡¡«ßΓ¿, τΓ«  ¼Ñªñπ ΦáúἿ  1 ¿  3 »α«Φ½«  ñ«ßΓáΓ«τ¡« óαѼѡ¿.  àß½¿
  1413. »ÑαѼÑΘáÑΓß∩ í«½ÑÑ,  τѼ 1  «íΩѬΓ, ¬áªñδ⌐  «íΩÑ¬Γ ñ«½ªÑ¡ «íαáíáΓδóáΓ∞ß∩
  1414. «Γñѽ∞¡«, «ñ¿¡ Φáú ºá «ñ¿¡ »α¿Ñ¼.
  1415.  
  1416.     -êß»«½∞º«óá¡¿Ñ ó ¼π½∞Γ¿»½¿¬áµ¿¿ ¬«¡ßΓá¡Γδ _GPSET.
  1417.  
  1418.     àß½¿  ß«σαá¡Ñ¡¿Ñ  Σ«¡á  ¡Ñ  ∩ó½∩ÑΓß∩  ó᪡δ¼,  ¼π½∞Γ¿»½¿¬áµ¿ε  ¼«ª¡«
  1419. óδ»«½∞¡¿Γ∞  ß  »«¼«Θ∞ε   «»µ¿¿  _GPSET.  àß½¿   úαá¡¿µá  «úαá¡¿τ¿óáεΘÑú«
  1420. »α∩¼«πú«½∞¡¿¬á  ó«¬απú  ¿º«íαáªÑ¡¿∩  Γá¬á∩  ªÑ  í«½∞Φá∩  ¿½¿ í«½∞ΦÑ, τѼ
  1421. ¼á¬ß¿¼á½∞¡«Ñ αáßßΓ«∩¡¿Ñ, ¡á ¬«Γ«α«Ñ »ÑαѼÑΘáÑΓß∩ «íΩѬΓ, Γ« óß∩¬¿⌐  αáº,
  1422. ¬á¬ «íαẠíπñÑΓ »«¼ÑΘáΓ∞ß∩ ó ¡«óπε »«º¿µ¿ε, úαá¡¿µá íπñÑΓ π¡¿τΓ«ªáΓ∞ óßÑ
  1423. ß½Ññδ «íαáºá ó ßΓáα«⌐ »«º¿µ¿¿.
  1424.  
  1425.       -Åα¿¼Ñα: îπ½∞Γ¿»½¿¬áµ¿∩ ß »«¼«Θ∞ε ºá»«¼¿¡á¡¿∩ «íαẫó.
  1426.    .
  1427.    .     previous includes from huppix.c
  1428.    .
  1429. #include qmalloc.h> /* ΓαÑíπÑΓß∩ ñ½∩ ¿ß»«½∞º«óá¡¿∩ íπΣÑαá */
  1430.    .
  1431.  
  1432.  
  1433.    .     declarations from hyppix.c
  1434.    .
  1435. char far *buffer; /* ¿ß»«½∞ºπÑΓß∩ ß Σπ¡¬µ¿∩¼¿ _getimage ¿
  1436.                      _putimage */
  1437. main()
  1438. {  .
  1439.    .     body of program from hyppix.c
  1440.    .
  1441. }
  1442. hypcycle()
  1443. {  .
  1444.    .    declarations and initialization from hyppix.c
  1445.    .
  1446.    draw_and_store_figure(); /* »«¼ÑΘÑ¡¿Ñ Σ¿úπαδ ó íπΣÑα */
  1447.    _clearscreen (_GCLEARSCREEN);
  1448.    .
  1449.    .    drawing of axes as in hyppix.c
  1450.    .
  1451.    /* αáßßΓá¡«ó¬á Γ«τѬ ¿ »«¼ÑΘÑ¡¿Ñ «íαáºá ¿º íπΣÑαá ¡á φ¬αá¡ */
  1452.    while (!kbhit()) {
  1453.         for (i=1; i<= 20; i++) {
  1454.            ang = ang + 2*pi/100;
  1455.            x = x=+(a-b)*cos(ang)+h*cos(ang*(a-b)/b);
  1456.            y = y0-(a-b)*sin(ang)+h*sin(ang*(a-b)/b);
  1457.            _putimage (x,y,buffer?GXOR);
  1458.            for (j=1; j<=6000; j++)
  1459.               ;
  1460.            _putimage (x,y,buffer,GXOR);
  1461.  
  1462.  
  1463.          }
  1464.   }
  1465. }
  1466. draw_and_store_figure()
  1467. {  .
  1468.    .   ß«ñÑন¡Ñ Σπ¡¬µ¿¿ ¿º »αÑñδñπΘÑú« αáºñѽá.
  1469.    .
  1470. }
  1471.  
  1472.     Åα«úαἼᠠ óδτÑατ¿óá¡¿∩   ú¿»«µ¿¬½«¿ñá   ¿º   Éáºñѽᠠ 4.9    íδ½á
  1473. ¼«ñ¿Σ¿µ¿α«óá¡á ß ΓѼ, τΓ«íδ óδτÑατ¿óá¡¿Ñ ¬α¿ó«⌐ »α«¿ºó«ñ¿½«ß∞ ß  »«¼«Θ∞ε
  1474. ºá»«¼¡Ñ¡¡«ú«    Φáí½«¡á    ¿    »«óÑασ    Σ«¡á    ¡á    φ¬αá¡Ñ.  öπ¡¬µ¿∩
  1475. _draw_and_store_ligure óº∩Γá ¿º Éáºñѽá 4.14, «¡á ¿ß»«½∞ºπÑΓß∩  Σπ¡¬µ¿Ñ⌐
  1476. _getimage ñ½∩  ß«σαá¡Ñ¡¿∩ óßÑ⌐  úαáΣ¿τÑ߬«⌐ Σ¿úπαδ  ó íπΣÑα¡«⌐  «í½áßΓ¿.
  1477. æ¬Ñ½ÑΓ  ñá¡¡«⌐  »α«úαá¼¼δ  »α¿óÑñÑ¡  óδΦÑ  ß ºá¼Ñτá¡¿∩¼¿ « »α«¿ºóÑñÑ¡¡δσ
  1478. ¿º¼Ñ¡Ñ¡¿∩σ.
  1479.