home *** CD-ROM | disk | FTP | other *** search
Text File | 1990-12-05 | 93.8 KB | 3,001 lines |
- âïÇéÇ 9 -- 1 --
- -------
-
- êìÆàÉöàëæ æ "î¢ÿ£₧"
- -----------------------------------------------------------------
-
- ìá¿í«½ÑÑ »«»π½∩α¡δ¼ πßΓα«⌐ßΓó«¼ óó«ñá ñá¡¡δσ »«ß½Ñ
- ¬½áó¿áΓπαδ ∩ó½∩ÑΓß∩ "¼δΦ∞" (mouse). ìÑß¼«Γα∩ ¡á Γ«, τΓ« "¼δΦ∞" ¿
- ßσ«ñ¡δÑ ΓÑσ¡«½«ú¿¿, Γá¬¿Ñ ¬á¬ "roller ball", »«½πτ¿½¿ Φ¿α«¬«Ñ
- αáß»α«ßΓαá¡Ñ¡¿Ñ ½¿Φ∞ ó »«ß½Ññ¡ÑÑ óαѼ∩, »«»π½∩α¡«ßΓ∞ "¼δΦ¿"
- íÑαÑΓ ßó«Ñ ¡áτὫ ß ¼«¼Ñ¡Γá óδσ«ñá ¡á αδ¡«¬ «τÑαÑñ¡«⌐ αáºαáí«Γ¬¿
- Σ¿α¼δ Apple ¬«¼»∞εΓÑαá Apple Lisa, ó ¬«Γ«α«¼ ó»ÑαóδÑ íδ½á
- »α¿¼Ñ¡Ñ¡á ΓÑσ¡«½«ú¿∩ "¼δΦ∞" ñ½∩ αáí«Γδ ß »¿¬Γ«úαá¼¼¡δ¼ (¿¬«¡¡δ¼)
- ¿¡ΓÑαΣÑ⌐ß«¼ «»Ñαᵿ«¡¡«⌐ ß¿ßΓѼδ φΓ«ú« ¬«¼»∞εΓÑαá. î«ñѽ∞ Apple
- Lisa »α«¿ºóѽá Σ«α¼Ñ¡¡δ⌐ »ÑαÑó«α«Γ ó Σ¿α¼Ñ Macintosh, ¬«Γ«αá∩
- »«Φ½á »« »πΓ¿ ¿ß»«½∞º«óá¡¿∩ "¼δΦ¿" ¿ »¿¬Γ«úαá¼¼¡«ú« ¿¡ΓÑαΣÑ⌐ßá ó
- ßó«¿σ »α«úαá¼¼¡δσ »α«ñπ¬Γáσ. ÅÑαÑñ óδσ«ñ«¼ ¡á αδ¡«¬ ßÑα¿¿ IBM
- PS/2 "¼δΦ∞", »« ßπΘÑßΓóπ, íδ½á ΓαÑΓ∞¿¼ ñ«»«½¡Ñ¡¿Ñ¼ ¬ Éæ. ÆÑ¼ ¡Ñ
- ¼Ñ¡ÑÑ πªÑ »α¿ á¡«¡ß¿α«óá¡¿¿ ß¿ßΓѼδ IBM PS/2 ß««íΘὫß∞, τΓ« «¡á
- ß¡áíªÑ¡á »«αΓ«¼ ñ½∩ »«ñ¬½ετÑ¡¿∩ "¼δΦ¿", ¿ "¼δΦ∞" ºá¡¿¼áÑΓ
- º¡áτ¿Γѽ∞¡«Ñ ¼ÑßΓ« ßαÑñ¿ Éæ.
-
- ì´πτΦÑÑ ¿ß»«½∞º«óá¡¿Ñ "¼δΦ¿" - »αÑñ¼ÑΓ »«ßΓ«∩¡¡δσ
- ñ¿ß¬πßß¿⌐. ìÑ óßÑ »α«úαá¼¼¿ßΓδ (¿½¿ »«½∞º«óáΓѽ¿) ó«ß»α¿¡¿¼áεΓ
- »¿¬Γ«úαἡδ⌐ ¿¡ΓÑαΣÑ⌐ß. é ßó∩º¿ ß ΓѼ, τΓ« "¼δΦ∞" ó»ÑαóδÑ íδ½á
- ¿ß»«½∞º«óá¡á ¿¼Ñ¡¡« ß »¿¬Γ«úαá¼¼¡δ¼ ¿¡ΓÑαΣÑ⌐ß«¼, ó«»α«ßδ
- ¿ß»«½∞º«óá¡¿∩ "¼δΦ¿" τáΘÑ óßÑú« ßó«ñ∩Γß∩ ¿¼Ñ¡¡« ¬ ¡Ñ¼π, á φΓ« ó,
- ßó«ε «τÑαÑñ∞, «ΓΓὬ¿óáÑΓ «Γ "¼δΦ¿" í«½∞Φ«⌐ ¬απú »α«úαá¼¼¿ßΓ«ó,
- ¡ÑúáΓ¿ó¡« «Γ¡«ß∩Θ¿σß∩ ¬ Γᬫ¼π ¿¡ΓÑαΣÑ⌐ßπ. Äñ¡á¬« "¼δΦ∞" óÑñ∞
- ¼«ªÑΓ ¿ß»«½∞º«óáΓ∞ß∩ ¿ íѺ Γᬫú« ¿¡ΓÑαΣÑ⌐ßá. ìá»α¿¼Ñα,
- »αá¬Γ¿τÑ߬¿ óßÑ ß«ú½áß¡δ ß ΓѼ, τΓ« "¼δΦ∞" φΣΣÑ¬Γ¿ó¡« ¼«ªÑΓ
- ¿ß»«½∞º«óáΓ∞ß∩ »α¿ αáí«ΓÑ ß ¿¡ΓÑαá¬Γ¿ó¡«⌐ úαáΣ¿¬«⌐.
-
- ìѬ«Γ«αδÑ ¼«ñѽ¿ ¼á¡¿»π½∩Γ«α«ó Γ¿»á "¼δΦ∞", αáó¡« ¬á¬ ¿
- óδ»«½¡∩ѼδÑ ¿¼¿ Σπ¡¬µ¿¿, ¼«úπΓ º¡áτ¿Γѽ∞¡« «Γ½¿τáΓ∞ß∩ ñαπú «Γ
- ñαπúá. Å«φΓ«¼π ºá¼ÑΓ¿¼, τΓ« óßÑ »α«úαá¼¼δ, »α¿óÑñÑ¡¡δÑ ó φΓ«⌐
- ú½áóÑ, «α¿Ñ¡Γ¿α«óá¡δ ¡á ¿ß»«½∞º«óá¡¿Ñ "¼δΦ¿" Σ¿α¼δ Microsoft,
- ¬«Γ«αá∩ Σπ¡¬µ¿«¡á½∞¡« ¿ñÑ¡Γ¿τ¡á "¼δΦ¿", ¿ß»«½∞ºπѼ«⌐ ó ¼«ñѽ∩σ PS
- /2. ä½∩ «íÑß»ÑτÑ¡¿∩ ¿¡ΓÑαΣÑ⌐ßá ß "¼δΦ∞ε" Σ¿α¼δ Microsoft óá¼
- ¡Ñ«íσ«ñ¿¼« ¿¼ÑΓ∞ »« ¬αá⌐¡Ñ⌐ ¼ÑαÑ ßá¼π "¼δΦ∞", απ¬«ó«ñßΓó«
- »«½∞º«óáΓѽ∩ »« »α«úαá¼¼¡«¼π «íÑß»ÑτÑ¡¿ε "¼δΦ¿" (Microsoft Mouse
- Programmer's Reference Guide) ¿ »«ßΓáó½∩Ѽδ⌐ ß φΓ¿¼ απ¬«ó«ñßΓó«¼
- ñ¿ß¬. ìá φΓ«¼ ñ¿ß¬Ñ αáß»«½«ªÑ¡á ߻ѵ¿á½∞¡á∩ í¿í½¿«ΓѬá ß ¿¼Ñ¡Ñ¼
- MOUSE.LIB, óδ»«½¡∩εΘá∩ »«ññÑ᪬π Σπ¡¬µ¿«¡¿α«óá¡¿∩ "¼δΦ¿" ¡á ßἫ¼
- ¡¿ª¡Ñ¼ πα«ó¡Ñ. îδ íπñѼ ¿ß»«½∞º«óáΓ∞ Σπ¡¬µ¿¿ ¿º φΓ«⌐ í¿í½¿«ΓѬ¿ ó
- ¬áτÑßΓóÑ íẫóδσ Σπ¡¬µ¿⌐ »α¿ αáßß¼«ΓαÑ¡¿¿ »α«úαá¼¼, »αÑñ½áúáѼδσ
- óá¼ ó φΓ«⌐ ú½áóÑ. óδ ñ«½ª¡δ »«¼¡¿Γ∞, τΓ« óáΦ ¬«¼»¿½∩Γ«α æ ñ«½ªÑ¡
- íδΓ∞ ß«ó¼ÑßΓ¿¼ ß »«ñ¬½ετáÑ¼δ¼¿ ¡á φΓá»Ñ αÑñá¬Γ¿α«óá¡¿∩ ßó∩ºÑ⌐
- »«ñ»α«úαἼἿ ¿º í¿í½¿«ΓѬ¿ »«ñ»α«úαá¼¼ »«ßΓáó½∩Ѽδσ ¡á ñ¿ß¬Ñ
- Σ¿α¼«⌐ Microsoft. óá¼ Γá¬ªÑ ¡áñ½Ñª¿Γ »«¼¡¿Γ∞, τΓ« «í∩ºáΓѽ∞¡«
- ¡Ñ«íσ«ñ¿¼« ¡á½¿τ¿Ñ ñαá⌐óÑαá πßΓα«⌐ßΓóá MOUSE.SYS.
-
- Å«ß½Ñ íÑú½«ú« «íº«αá «ß¡«ó ¿ß»«½∞º«óá¡¿∩ ¼á¡¿»π½∩Γ«αá Γ¿»á
- "¼δΦ∞" ó φΓ«⌐ ú½áóÑ óδ »«½πτ¿ΓÑ ¿¡Σ«α¼áµ¿ε « Γ«¼, ¬á¬ ¼«ª¡«
- ¼«ñ¿Σ¿µ¿α«óáΓ∞ αá¡ÑÑ αáßß¼«ΓαÑ¡¡πε »α«úαá¼¼π "α¿ß«óá¡¿∩" ß ΓѼ,
- τΓ«íδ «¡á ¼«ú½á αáí«ΓáΓ∞ ß "¼δΦ∞ε" (ß πτÑΓ«¼ Γ«ú«, τΓ« «ß¡«ó¡δÑ
- ¬«¡µÑ»µ¿¿ »α¿¼Ñ¡Ñ¡¿∩ "¼δΦ¿", á Γá¬ªÑ αáºαáí«Γá¡¡δÑ ó »α«µÑßßÑ
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá IX -- 2 --
-
-
- ¿º½«ªÑ¡¿∩ ¼áΓÑα¿á½á »«ñ»α«úαá¼¼δ, ¼«úπΓ ¿ß»«½∞º«óáΓ∞ß∩ óἿ ó
- ñá½∞¡Ñ⌐ΦѼ »α¿ ß«ºñá¡¿¿ αẽ¿τ¡δσ ¬«¡¬αÑΓ¡δσ »α¿½«ªÑ¡¿⌐).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá IX -- 3 --
-
-
- ìàèÄÆÄÉ¢à ìÇùÇï£ì¢à æéàäàìêƒ Ä "î¢ÿê"
- -----------------------------------------------------------------
-
- ä½∩ Γ«ú«, τΓ«íδ ¿ß»«½∞º«óáΓ∞ "¼δΦ∞", »αѪñÑ óßÑú« ¡Ñ«íσ«ñ¿¼«
- ¿¡ßΓ὿α«óáΓ∞ ß««ΓóÑΓßΓóπεΘ¿⌐ ñαá⌐óÑα. ä½∩ "¼δΦ¿" Σ¿α¼δ Microsoft
- ó Σá⌐½ CONFIG.SYS ñ«½ª¡á íδΓ∞ ñ«íáó½Ñ¡á ß½ÑñπεΘá∩ ßΓ᫬á:
-
- device = mouse.sys
-
- ä½∩ ¿¡ßΓá½∩µ¿¿ ñαá⌐óÑαá "¼δΦ¿" Σ¿α¼δ IBM ñ«½ª¡á íδΓ∞
- ºá»πΘÑ¡á »α«úαá¼¼á MOUSE.COM. æ φΓ«⌐ µÑ½∞ε ó Σá⌐½ AUTOEXEC.BAT
- ¼«ªÑΓ íδΓ∞ ñ«íáó½Ñ¡á ßΓ᫬á ó¿ñá:
-
- mouse
-
- Å«ß½Ñ Γ«ú«, ¬á¬ ñαá⌐óÑα αẼÑΘÑ¡ ó ß¿ßΓѼÑ, ½εíδÑ ñÑ⌐ßΓó¿∩
- »« »ÑαѼÑΘÑ¡¿ε "¼δΦ¿" ¿½¿ ¡áªáΓ¿ε ÑÑ ¬½áó¿Φ íπñπΓ óδºδóáΓ∞
- úÑ¡Ñαáµ¿ε »αÑαδóá¡¿∩ 33ì. Åα«µÑßß, π»αáó½∩εΘ¿⌐ "¼δΦ∞ε", óδºδóáÑΓ
- »αÑαδóá¡¿Ñ, ºáΓѼ πßΓá¡áó½¿óáÑΓ º¡áτÑ¡¿∩ ß««ΓóÑΓßΓóπεΘ¿σ
- ó¡πΓαÑ¡¡¿σ »ÑαѼѡ¡δσ ¿ »α«ñ«½ªáÑΓ ßó«ε αáí«Γπ. éß½ÑñßΓó¿Ñ Γ«ú«,
- τΓ« »αÑαδóá¡¿Ñ úÑ¡Ñα¿απÑΓß∩ ½¿Φ∞ »α¿ ¿º¼Ñ¡Ñ¡¿¿ "¼δΦ∞ε" ßó«Ñú«
- »«½«ªÑ¡¿∩, ¡Ñ»«ñ󿪡á∩ "¼δΦ∞" ¡Ñ óδºδóáÑΓ ¡Ñ«íσ«ñ¿¼«ßΓ¿ óδñѽѡ¿∩
- ¡á ¡ÑÑ αÑßπαß«ó ¬«¼»∞ΓÑαá.
-
- Æ«τ¡« ΓᬠªÑ, ¬á¬ ß ¬½áó¿áΓπα«⌐ áßß«µ¿¿α«óá¡ ¬παß«α, ß
- "¼δΦ∞ε" Γá¬ªÑ áßß«µ¿¿α«óá¡ ¡Ñ¬¿⌐ ¼áα¬Ñα ¡á φ¬αá¡Ñ (¡áºδóáѼδ⌐
- ñá½ÑÑ π¬áºáΓѽ∞). Å«ñ»α«úαá¼¼δ ó í¿í½¿«ΓÑ¬Ñ ó »«ññÑαª¬Ñ "¼δΦ¿"
- Σ¿α¼δ Microsoft «»αÑñѽ∩εΓ »« π¼«½τá¡¿ε ß½ÑñπεΘπε Σ«α¼π
- π¬áºáΓѽ∩: ó úαáΣ¿τÑ߬¿σ αѪ¿¼áσ - φΓ« ßΓαѽ¬á, á ó ΓѬßΓ«óδσ
- αѪ¿¼áσ - »α∩¼«πú«½∞¡¿¬ ó αἬáσ úáíáα¿Γ¡δσ αẼÑα«ó ß¿¼ó«½á.
- ǡὫú¿τ¡« ¬παß«α𠬽áó¿áΓπαδ π¬áºáΓѽ∞-¬παß«α "¼δΦ¿" ¼«ªÑΓ
- «Γ«íαáªáΓ∞ß∩ ½¿Φ∞ Γ«úñá, ¬«úñá "¼δΦ∞" ¡Ñ»«ßαÑñßΓóÑ¡¡«
- ¿ß»«½∞ºπÑΓß∩. é »α«Γ¿ó¡«¼ ß½πτáÑ π¬áºáΓѽ∞-¬παß«α "¼δΦ¿" ¡Ñ
- «Γ«íαáªáÑΓß∩ ¡á φ¬αá¡Ñ Γá¬, ¬á¬ íπñΓ« ¿¡ΓÑαΣÑ⌐ßá ß "¼δΦ∞ε" ó««íΘÑ
- ¡Ñ ßπΘÑßΓóπÑΓ.
-
- ìÑß¼«Γα∩ ¡á Γ«, τΓ« "¼δΦ∞" ¿ φ¬αá¡ Σ¿º¿τÑ߬¿ «Γñѽѡδ ñαπú
- «Γ ñαπúá, ßó∩º∞ ¼Ñªñπ ¡¿¼¿ óßÑ ªÑ ¿¼ÑÑΓß∩, Γᬠ¬á¬ ñαá⌐óÑα
- "¼δΦ¿" áóΓ«¼áΓ¿τÑ߬¿ «Γ߽Ѫ¿óáÑΓ ß«ñÑন¼«Ñ ßτÑΓτ¿¬«ó,
- ¿¡ñ¿µ¿απεΘ¿σ ΓѬπΘÑÑ ß«ßΓ«∩¡¿Ñ π¬áºáΓѽ∩-¬παß«αá "¼δΦ¿" ¡á
- φ¬αá¡Ñ. Åα¿ »ÑαѼÑΘÑ¡¿¿ "¼δΦ¿" ¬παß«α áóΓ«¼áΓ¿τÑ߬¿ »ÑαѼÑΘáÑΓß∩
- ¡á φ¬αá¡Ñ ó Γ«τ¡«¼ ß««ΓóÑΓßΓó¿¿ ß ¿º¼Ñ¡Ñ¡¿Ñ¼ ¬««αñ¿¡áΓ "¼δΦ¿".
- ÉáßßΓ«∩¡¿Ñ, ¡á ¬«Γ«α«Ñ íδ½á »ÑαѼÑΘá¡á "¼δΦ∞", ¿º¼Ñα∩ÑΓß∩ ó
- "¼δΦ¿¡δσ" Φáúáσ. Äñ¿¡ Γᬫ⌐ Φáú αáóÑ¡ 1/200 ñε⌐¼á. Äñ¡á¬« ó
- í«½∞Φ¿¡ßΓóÑ ß½πτáÑó º¡áΓ∞ ¡á ߬«½∞¬« »ÑαѼÑßΓ¿½áß∞ "¼δΦ∞" ß«óßѼ
- ¡Ñ«í∩ºáΓѽ∞¡«.
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá IX -- 4 --
-
-
- éêÉÆôÇïêçÇûêƒ ê ÉàÇï£ì¢ë ¥èÉÇì
- -----------------------------------------------------------------
-
- ü¿í½¿«ΓÑ¬á »«ñ»α«úαá¼¼ »«ññÑ᪬¿ "¼δΦ¿" Σ¿α¼δ Microsoft
- αáí«ΓáÑΓ ß ó¿αΓπá½∞¡δ¼ φ¬αá¡«¼ ó ó¿ñÑ ¼áßß¿óá Γ«τѬ αáßΓαá
- (¼áßß¿óá ¿º Ññ¿¡¿µ ¼¿¡¿¼á½∞¡«ú« ¿º«íαáªÑ¡¿∩, µóÑΓ ¿ ∩ᬫßΓ∞
- ¬«Γ«αδσ ¼«ª¡« ºáñáΓ∞ ¡Ñºáó¿ß¿¼« «Γ «ßΓá½∞¡«ú« ¿º«íαáªÑ¡¿∩),
- ¬«Γ«αδ⌐ ¼«ªÑΓ «Γ½¿τáΓ∞ß∩ «Γ αÑá½∞¡«ú« φ¬αá¡á. Åα¿ »ÑαѼÑΘÑ¡¿¿
- "¼δΦ¿" ßτÑΓτ¿¬¿ ¼ÑßΓ«»«½«ªÑ¡¿∩ ¬παß«αá ¿º¼Ñ¡∩εΓ ßó«Ñ º¡áτÑ¡¿Ñ.
- ÅÑαÑñ «Γ«íαáªÑ¡¿Ñ¼ ¬παß«αá ó¿αΓπá½∞¡δÑ ¬««αñ¿¡áΓδ ¬παß«αá
- »αÑ«íαáºπεΓß∩ ó ¬««αñ¿¡áΓδ αÑá½∞¡«ú« φ¬αá¡á. é ó¿ñÑ«αѪ¿¼áσ 6,
- 14, 15 ¿ 16 φΓ« »αÑ«íαẫóá¡¿Ñ «ßπΘÑßΓó½∩ÑΓß∩ «ñ¿¡ ¬ «ñ¡«¼π. é
- αѪ¿¼áσ 4 ¿ 5 ¡Ñ ¬áªñá∩ Γ«τ¬á ó¿αΓπá½∞¡«⌐ ú«α¿º«¡Γá½∞¡«⌐ »«º¿µ¿¿
- »αÑ«íαáºπÑΓß∩ ó ¬««αñ¿¡Γδ αÑá½∞¡«ú« φ¬αá¡á, á τÑαѺ «ñ¡π. óδ
- ñ«½ª¡δ «íαáΓ¿Γ∞ ó¡¿¼á¡¿Ñ ¡á φëà Σá¬Γ, Γᬠ¬á¬ »α«úαá¼¼á
- α¿ß«óá¡¿∩, ¬ ¬«Γ«α«⌐ íπñÑΓ ñ«íáó½Ñ¡ ¿¡ΓÑαΣÑ⌐ß ß "¼δΦ∞ε" ¿ ¬«Γ«αá∩
- íπñÑΓ αáßß¼áΓα¿óáΓ∞ß∩ ó ñá¡¡«⌐ ú½áóÑ, αáí«ΓáÑΓ ¿¼Ñ¡¡« ó 4
- úαáΣ¿τÑ߬«¼ αѪ¿¼Ñ.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá IX -- 5 --
-
-
- üêüïêÄÆàèÇ ÅÄääàÉåèê "î¢ÿê"
- -----------------------------------------------------------------
-
- Å«ñ»α«úαá¼¼δ ó¡πΓα¿ MOUSE.LIB áßß«µ¿¿απεΓß∩ π »«½∞º«óáΓѽ∩ ß
- «ñ¡«⌐ Σπ¡¬µ¿Ñ⌐, ¿ß»«½∞ºπεΘÑ⌐ ó ¬áτÑßΓóÑ óσ«ñ¡«ú« áαúπ¼Ñ¡Γá τ¿ß½«,
- ߻ѵ¿Σ¿µ¿απεΘÑÑ ¡«¼Ñα Σπ¡¬µ¿¿ »«ññÑ᪬¿ "¼δΦ¿". (¥Γ«Γ »α«µÑßß
- ¡Ñ¬«Γ«αδ¼ «íαẫ¼ ßσ«ñÑ¡ ß »α«µÑßß«¼ ñ«ßΓπ»á ¬ Σπ¡¬µ¿∩¼ DOS
- »«ßαÑñßΓó«¼ »αÑαδóá¡¿∩ 21ì ß π¬áºá¡¿Ñ¼ ¡«¼Ñαá ¡πª¡«⌐ Σπ¡¬µ¿¿).
- ê¼∩ φΓ«⌐ Σπ¡¬µ¿¿ «»αÑñѽ∩ÑΓß∩ ¼«ñѽ∞ε »á¼∩Γ¿, ¬«Γ«αá∩
- ¿ß»«½∞ºπÑΓß∩ »α¿ ¬«¼»¿½∩µ¿¿ óáΦÑ⌐ »α«úαá¼¼δ. êß»«½∞ºπ⌐ΓÑ ¿¼∩
- cmouses() ñ½∩ ¼«ñѽ¿ ¼á½Ñ¡∞¬«⌐ »á¼∩Γ¿, cmousec() ñ½∩ ¼«ñѽ¿
- ¬«¼»á¬Γ¡«⌐ »á¼∩Γ¿, cmousem() ñ½∩ ¼«ñѽ¿ ßαÑñ¡Ñ⌐ »á¼∩Γ¿ ¿
- cmousel() ñ½∩ ¼«ñѽ¿ í«½∞Φ«⌐ ¿ ßἫ⌐ í«½∞Φ«⌐ («úα«¼¡«⌐) »á¼∩Γ¿.
- (çá¼ÑΓ¿¼, τΓ« Σπ¡¬µ¿∩ ¡Ñ ¼«ªÑΓ αáí«ΓáΓ∞ ó ¼«ñѽ¿ ßἫ⌐ ¼á½Ñ¡∞¬«⌐
- »á¼∩Γ¿). Åα¿¼Ñα, »αÑñßΓáó½Ñ¡¡δ⌐ ó φΓ«⌐ ú½áóÑ, ¿ß»«½∞ºπÑΓ ¼«ñѽ∞
- ¼á½Ñ¡∞¬«⌐ »á¼∩Γ¿, «ñ¡á¬« óδ ¼«ªÑΓÑ ¿º¼Ñ¡¿Γ∞ Γ¿» ¼«ñѽ¿ »á¼∩Γ¿ »«
- ßó«Ñ¼π πß¼«ΓαÑ¡¿ε.
-
- Äß¡«ó¡δ¼ Σ«α¼áΓ«¼ Σπ¡¬µ¿¿ cmouses() ∩ó½∩ÑΓß∩:
-
- void cmouses(fnum, arg2, arg3, arg4);
- int *fnum, *arg2, *arg3, *arg4;
- èᬠó¿ñ¡«, fnum ∩ó½∩ÑΓß∩ ¡«¼Ñα«¼ Σπ¡¬µ¿¿ »«ññÑ᪬¿ "¼δΦ¿",
- ¬«Γ«απε ¡Ñ«íσ«ñ¿¼« óδºóáΓ∞. äαπú¿Ñ »áαá¼ÑΓαδ ß«ñÑαªáΓ ¿¡Σ«α¼áµ¿ε,
- ¡Ñ«íσ«ñ¿¼πε ñ½∩ ߻ѵ¿Σ¿¬áµ¿¿ Σπ¡¬µ¿¿. ÄíαáΓ¿ΓÑ ó¡¿¼á¡¿Ñ, τΓ«
- Σπ¡¬µ¿¿ »ÑαÑñáεΓß∩ ¡Ñ ßἿ áαúπ¼Ñ¡Γδ, á π¬áºáΓѽ¿ ¡á ¿σ º¡áτÑ¡¿∩.
- öπ¡¬µ¿∩ cmouses() ó«ºóαáΘáÑΓ αѺπ½∞ΓáΓδ αáí«Γδ ó ó¿ñÑ »áαá¼ÑΓα«ó
- ¿, ß½Ññ«óáΓѽ∞¡«, ¡πªñáÑΓß∩ ó ¿σ áñαÑßᵿ¿. ö¿α¼á Microsoft
- «»αÑñѽ¿½á Γα¿ñµáΓ∞ Σπ¡¬µ¿⌐ »«ññÑ᪬¿ "¼δΦ¿". Äñ¡á¬« ó »α«úαá¼¼Ñ
- α¿ß«óá¡¿∩ íπñπΓ ¿ß»«½∞º«óá¡δ ½¿Φ∞ »∩Γ∞ ¿º ¡¿σ. ì¿ªÑ »α¿óÑñÑ¡
- ¬αáΓ¬¿⌐ «íº«α Σπ¡¬µ¿⌐ »«ññÑ᪬¿ "¼δΦ¿" Σ¿α¼δ Microsoft, ¬«Γ«αδÑ
- íπñπΓ ¿ß»«½∞º«óá¡δ ¡á¼¿ ó φΓ«⌐ ú½áóÑ.
-
-
- Åα¿óÑßΓ¿ ó ¿ßσ«ñ¡«Ñ ß«ßΓ«∩¡¿Ñ, óδñáΓ∞ ßΓáΓπß.
- ---------------------------------------------
-
- öπ¡¬µ¿∩ 0 »α¿ó«ñ¿Γ "¼δΦ∞" ó ¡áτá½∞¡«Ñ ß«ßΓ«∩¡¿Ñ (ßíαáßδóáÑΓ
- "¼δΦ∞") Ä¡á »ÑαѼÑΘáÑΓ ¬παß«α-π¬áºáΓѽ∞ "¼δΦ¿" ó µÑ¡Γα φ¬αá¡á ¿
- "ó䬽ετáÑΓ " Ñú«. öπ¡¬µ¿∩ ó«ºóαáΘáÑΓ ¡«¼Ñα ¡áªáΓ«⌐ ¬½áó¿Φ¿
- "¼δΦ¿" ó ¬áτÑßΓóÑ º¡áτÑ¡¿∩ arg2. Å«ß½Ñ ºáóÑαΦÑ¡¿∩ Σπ¡¬µ¿¿ fnum
- »α¿¡¿¼áÑΓ º¡áτÑ¡¿Ñ 0, Ñß½¿ "¼δΦ∞" ¿ ß««ΓóÑΓßΓóπεΘÑÑ »α«úαá¼¼¡«Ñ
- «íÑß»ÑτÑ¡¿Ñ ¡Ñ ¿¡ßΓ὿α«óá¡δ, ¿ -1 ó »α«Γ¿ó¡«¼ ß½πτáÑ.
-
-
- ÄΓ«íαếΓ∞ ¬παß«α
- -----------------
-
- öπ¡¬µ¿∩ 1 «Γ«íαáªáÑΓ π¬áºáΓѽ∞-¬παß«α "¼δΦ¿". Ä¡á ¡Ñ
- ó«ºóαáΘáÑΓ ¡¿¬á¬«ú« º¡áτÑ¡¿∩.
-
-
- ÅÑαѼÑßΓ¿Γ∞ ¬παß«α
- ------------------
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá IX -- 6 --
-
-
-
- öπ¡¬µ¿∩ 2 »ÑαѼÑΘáÑΓ ¬παß«α »« φ¬αá¡π. Ä¡á ¡Ñ ó«ºóαáΘáÑΓ
- ¡¿¬á¬«ú« º¡áτÑ¡¿∩.
-
-
- éδñáΓ∞ ßΓáΓπß ¬½áó¿Φ¿ ¿ »«º¿µ¿ε ¬παß«αá
- ---------------------------------------
-
- öπ¡¬µ¿∩ 3 ó«ºóαáΘáÑΓ ßΓáΓπß ¬½áó¿Φ¿ ó arg2, ó¿αΓπá½∞¡πε
- ú«α¿º«¡Γá½∞¡πε »«º¿µ¿ε ¬παß«αá ó arg3, á ó¿αΓπá½∞¡πε óÑαΓ¿¬á½∞¡πε
- »«º¿µ¿ε ¬παß«αá ó arg4.
-
- æΓáΓπß ¬½áó¿Φ¿ ¬«ñ¿απÑΓß∩ ó í¿Γáσ 0 ¿ 1 íá⌐Γá arg2. àß½¿
- º¡áτÑ¡¿Ñ í¿Γá 0 πßΓá¡«ó½Ñ¡« (αáó¡« 1), Γ« íδ½á ¡áªáΓá ½Ñóá∩
- ¬½áó¿Φá "¼δΦ¿", Ñß½¿ º¡áτÑ¡¿Ñ í¿Γá 1 πßΓá¡«ó½Ñ¡« (αáó¡« 1), Γ«
- íδ½á ¡áªáΓá »αáóá∩ ¬½áó¿Φá. àß½¿ º¡áτÑ¡¿∩ «í«¿σ í¿Γ«ó ¡Ñ
- πßΓá¡«ó½Ñ¡δ (αáó¡δ 0), Γ« ¡¿¬á¬á∩ ¬½áó¿Φá ¡áªáΓá ¡Ñ íδ½á.
-
-
- ôßΓá¡«ó¿Γ∞ ¬««αñ¿¡áΓδ ¬παß«αá
- ------------------------------
-
- öπ¡¬µ¿∩ 4 πßΓá¡áó½¿óáÑΓ ¼ÑßΓ«αáß»«½«ªÑ¡¿Ñ ¬παß«αá "¼δΦ¿".
- ç¡áτÑ¡¿Ñ arg3 «»αÑñѽ∩ÑΓ ú«α¿º«¡Γá½∞¡πε »«º¿µ¿ε, á º¡áτÑ¡¿Ñ arg4
- - óÑαΓ¿¬á½∞¡πε »«º¿µ¿ε ¬παß«αá. óδ óßÑúñá ñ«½ª¡δ »«¼¡¿Γ∞, τΓ«
- º¡áτÑ¡¿∩ ¡Ñ ñ«½ª¡δ óδσ«ñ¿Γ∞ ºá »αÑñѽδ ó¿αΓπá½∞¡«ú« φ¬αá¡á,
- ¬«Γ«αδ⌐ óδ ¿ß»«½∞ºπÑΓÑ.
-
-
- ê¡ñ¿¬áµ¿∩ ñó¿ªÑ¡¿∩
- ------------------
-
- öπ¡¬µ¿∩ 11 ó«ºóαáΘáÑΓ τ¿ß½« óÑαΓ¿¬á½∞¡δσ ¿ ú«α¿º«¡Γá½∞¡δσ
- "¼δΦ¿¡δσ" Φáú«ó, ¬«Γ«α«Ñ "¼δΦ∞" »α«Φ½á ß« óαѼѡ¿ »«ß½Ññ¡Ñú«
- «íαáΘÑ¡¿∩ ¬ Σπ¡¬µ¿¿ 11, ñαπú¿¼¿ ß½«óἿ - φΓ« ¿º¼Ñ¡Ñ¡¿Ñ
- óÑαΓ¿¬á½∞¡δσ ¿ ú«α¿º«¡Γá½∞¡δσ ¬««αñ¿¡áΓ "¼δΦ¿". öπ¡¬µ¿∩ ΓᬪÑ
- ßíαáßδóáÑΓ ó¡πΓαÑ¡¡¿⌐ αÑú¿ßΓα-ßτÑΓτ¿¬ ó 0. ç¡áτÑ¡¿Ñ óÑαΓ¿¬á½∞¡«ú«
- ßτÑΓτ¿¬á ó«ºóαáΘáÑΓß∩ ó arg3, á ú«α¿º«¡Γá½∞¡«ú« - ó arg4. ¥Γ«
- »«ºó«½∩ÑΓ, Ñß½¿ "¼δΦ∞" »«ß½Ñ »«ß½Ññ¡Ñú« «íαáΘÑ¡¿∩ ¬ Σπ¡¬µ¿¿ ¡Ñ
- »ÑαѼÑΘá½áß∞ ¡á »½«ß¬«ßΓ¿, »«½πτ¿Γ∞ º¡áτÑ¡¿∩ ¬á¬ ú«α¿º«¡Γá½∞¡«ú«,
- Γᬠ¿ óÑαΓ¿¬á½∞¡«ú« ßτÑΓτ¿¬«ó αáó¡δ¼¿ 0. àß½¿ º¡áτÑ¡¿Ñ «ñ¡«ú« ¿º
- ßτÑΓτ¿¬«ó (¿½¿ «í«¿σ) «Γ½¿τ¡« «Γ 0, Γ« "¼δΦ∞" »ÑαѼÑΘá½áß∞ ¡á
- »½«ß¬«ßΓ¿.
-
- Å«½«ª¿Γѽ∞¡«Ñ º¡áτÑ¡¿Ñ ¿º¼Ñ¡Ñ¡¿∩ óÑαΓ¿¬á½∞¡δσ "¼δΦ¿¡δσ"
- Φáú«ó »«ºó«½∩ÑΓ ºá¬½ετ¿Γ∞, τΓ« "¼δΦ∞" ñó¿úá½áß∞ 󡿺.
- ÄΓα¿µáΓѽ∞¡«Ñ ªÑ º¡áτÑ¡¿Ñ ßó¿ñÑΓѽ∞ßΓóπÑΓ « ñó¿ªÑ¡¿¿ "¼δΦ¿"
- óóÑασ.
-
- Å«½«ª¿Γѽ∞¡«Ñ º¡áτÑ¡¿Ñ ¿º¼Ñ¡Ñ¡¿∩ τ¿ß½á ú«α¿º«¡Γá½∞¡δσ Φáú«ó
- ßó¿ñÑΓѽ∞ßΓóπÑΓ « Γ«¼, τΓ« "¼δΦ∞" »ÑαѼÑΘá½áß∞ ó»αáó«, á
- «Γα¿µáΓѽ∞¡«Ñ º¡áτÑ¡¿Ñ »«¬áºδóáÑΓ ¡á Γ«, τΓ« "¼δΦ∞" »ÑαѼÑΘá½áß∞
- ó½Ñó«.
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá IX -- 7 --
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá IX -- 8 --
-
-
- öôìèûêê ÅÄääàÉåèê "î¢ÿê" éàÉòìàâÄ ôÉÄéìƒ
- -----------------------------------------------------------------
-
- êß»«½∞ºπ∩ Σπ¡¬µ¿ε cmouses() óδ ¼«ªÑΓÑ ß«ºñáΓ∞ ¡áí«α Σπ¡¬µ¿⌐
- ∩ºδ¬á æ¿ óδß«¬«ú« πα«ó¡∩, ¬«Γ«αδÑ º¡áτ¿Γѽ∞¡« «í½ÑúτáΓ óá¼
- »α«úαá¼¼¿α«óá¡¿Ñ ¿¡ΓÑαΣÑ⌐ß«ó, «α¿Ñ¡Γ¿α«óá¡¡δσ ¡á ¿ß»«½∞º«ó᡿Ѽ
- "¼δΦ¿". ū߼«Γα¿ΓÑ, ¬á¬ φΓ« ñѽáÑΓß∩.
-
-
- ôßΓá¡«ó¬á "¼δΦ¿" ó ¿ßσ«ñ¡«Ñ ß«ßΓ«∩¡¿Ñ.
- --------------------------------------
-
- öπ¡¬µ¿∩, »αÑñßΓáó½Ñ¡¡á∩ ¡¿ªÑ, mouse_reset() ¿ß»«½∞ºπÑΓß∩ ñ½∩
- πßΓá¡«ó¬¿ "¼δΦ¿" ó ¿ßσ«ñ¡«Ñ ß«ßΓ«∩¡¿Ñ. çá¼ÑΓ¿¼, τΓ« Σπ¡¬µ¿∩
- ΓαÑíπÑΓ ¡á½¿τ¿∩ ß««ΓóÑΓßΓóπεΘÑú« »α«úαá¼¼¡«ú« «íÑß»ÑτÑ¡¿∩ ¿
- á»»áαáΓ¡«⌐ τáßΓ¿ ¬«¼»∞εΓÑαá, á Γá¬ªÑ ¿¡ßΓá½∩µ¿¿ ñóπσ¬½áó¿Φ¡«⌐
- "¼δΦ¿".
-
- /* ôßΓá¡«ó¬á "¼δΦ¿" ó ¿ßσ«ñ¡«Ñ ß«ßΓ«∩¡¿Ñ */
-
- void mouse_reset()
- {
- int fnum, arg2, arg3, arg4;
-
- fnum = 0; /* ôßΓá¡«ó¬á "¼δΦ¿" ó ¿ßσ«ñ¡«Ñ ß«ßΓ«∩¡¿Ñ */
- cmouses( &fnum, &arg2, &arg3, &arg4);
- if(fnum!=-1) {
- printf("Ç»»áαáΓ¡δÑ ¿½¿ »α«úαá¼¼¡δÑ ßαÑñßΓóá »«ññÑ᪬¿ ");
- printf("'¼δΦ¿' ¡Ñ ¿¡ßΓ὿α«óá¡δ");
- exit(1);
- }
- if(arg2!=2) {
- printf("ÉáºαÑΦÑ¡« ¿ß»«½∞º«óá¡¿Ñ Γ«½∞¬« ñóπσ¬½áó¿Φ¡«⌐ '¼δΦ¿'");
- exit(1);
- }
- }
-
-
- ÄΓ«íαáªÑ¡¿Ñ ¿ »ÑαѼÑΘÑ¡¿Ñ ¬παß«αá "¼δΦ¿".
- -----------------------------------------
-
- éºá¿¼«ñ«»«½¡∩εΘ¿Ñ ñαπú ñαπúá Σπ¡¬µ¿¿ cursor_on() ¿
- cursor_off(), »αÑñßΓáó½Ñ¡¡δÑ ¡¿ªÑ, »«ºó«½∩εΓ á¬Γ¿ó¿º¿α«óáΓ∞ ¿
- ñÑá¬Γ¿ó¿º¿α«óáΓ∞ ¿º«íαáªÑ¡¿Ñ ¬παß«αá ¡á φ¬αá¡Ñ ñ¿ß»½Ñ∩.
-
-
- /* 鬽ετÑ¡¿Ñ ¬παß«αá "¼δΦ¿" */
- void cursor_on()
- {
- int fnum;
-
- fnum = 1; /* «Γ«íαếΓ∞ ¬παß«α */
- cmouses( &fnum, &fnum, &fnum, &fnum);
- }
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá IX -- 9 --
-
-
-
- /* é䬽ετÑ¡¿Ñ ¬παß«αá "¼δΦ¿" */
- void cursor_off()
- {
- int fnum;
-
- fnum = 2; /* ßΓÑαÑΓ∞ ¬παß«α */
- cmouses( &fnum, &fnum, &fnum, &fnum);
- }
-
-
- èá¬á∩ ¿º ¬½áó¿Φ "¼δΦ¿" íδ½á ¡áªáΓá?
- -----------------------------------
-
- äαπú«⌐ »áα«⌐ óºá¿¼«ñ«»«½¡∩εΘ¿σ ñαπú ñαπúá Σπ¡¬µ¿⌐ ∩ó½∩εΓß∩
- Σπ¡¬µ¿¿ rightb_pressed() ¿ leftb_pressed(), »αÑñßΓáó½Ñ¡¡δÑ ¡¿ªÑ.
- ¥Γ¿ Σπ¡¬µ¿¿ ó«ºóαáΘáεΓ º¡áτÑ¡¿Ñ "¿ßΓ¿¡á", Ñß½¿ ¡áªáΓá »αáóá∩ ¿½¿
- ½Ñóá∩ ¬½áó¿Φ¿.
-
-
- /* 髺óαáΘáÑΓ º¡áτÑ¡¿Ñ "¿ßΓ¿¡á", Ñß½¿ ¡áªáΓá »αáóá∩ ¬½áó¿Φá,
- ¿ "½«ª∞" ó »α«Γ¿ó¡«¼ ß½πτáÑ */
-
- rightb_pressed()
- {
- int fnum, arg2, arg3, arg4;
-
- fnum = 3; /* ùΓÑ¡¿Ñ »«º¿µ¿¿ ¿ ßΓáΓπßá ¬½áó¿Φ¿ */
- cmouses( &fnum, &arg2, &arg3, &arg4);
- return arg2 & 2;
- }
-
-
-
- /* 髺óαáΘáÑΓ º¡áτÑ¡¿Ñ "¿ßΓ¿¡á", Ñß½¿ ¡áªáΓá ½Ñóá∩ ¬½áó¿Φá,
- ¿ "½«ª∞" ó »α«Γ¿ó¡«¼ ß½πτáÑ */
-
- leftb_pressed()
- {
- int fnum, arg2, arg3, arg4;
-
- fnum = 3; /* ùΓÑ¡¿Ñ »«º¿µ¿¿ ¿ ßΓáΓπßá ¬½áó¿Φ¿ */
- cmouses( &fnum, &arg2, &arg3, &arg4);
- return arg2 & 1;
- }
-
-
- èᬠ«í¡áαπª¿Γ∞ »ÑαѼÑΘÑ¡¿Ñ "¼δΦ¿"?
- ----------------------------------
-
- öπ¡¬µ¿∩ 11, ¬«Γ«αá∩ ó«ºóαáΘáÑΓ ¿º¼Ñ¡Ñ¡¿Ñ º¡áτÑ¡¿∩ ßτÑΓτ¿¬á
- "¼δΦ¿" (ó "¼δΦ¿¡δσ" Φáúáσ) »«ß½Ñ »«ß½Ññ¡Ñú« «íαáΘÑ¡¿∩ ¬ ¡Ñ⌐,
- »«ºó«½∩ÑΓ «»αÑñѽ¿Γ∞ Σá¬Γ »ÑαѼÑΘÑ¡¿∩ "¼δΦ¿". öπ¡¬µ¿∩
- mouse_motion(), »αÑñßΓáó½Ñ¡¡á∩ ¡¿ªÑ, ó«ºóαáΘáÑΓ ¿º¼Ñ¡Ñ¡¿Ñ
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá IX -- 10 --
-
-
- ¼ÑßΓ«»«½«ªÑ¡¿∩ "¼δΦ¿" ó ú«α¿º«¡Γá½∞¡«¼ ¿ óÑαΓ¿¬á½∞¡«¼
- ¡á»αáó½Ñ¡¿∩σ ó »ÑαѼѡ¡δσ, τ∞¿ π¬áºáΓѽ¿ ∩ó½∩εΓß∩ áαúπ¼Ñ¡ΓἿ
- Σπ¡¬µ¿¿. àß½¿ «íá º¡áτÑ¡¿∩ deltax ¿ deltay αáó¡δ 0, Γ« Σá¬Γ
- ñó¿ªÑ¡¿∩ "¼δΦ¿" ¡Ñ αÑú¿ßΓα¿απÑΓß∩.
-
- /* 髺óαáΘáÑΓ ¡á»αáó½Ñ¡¿Ñ ñó¿ªÑ¡¿∩ */
- void mouse_motion(deltax, deltay)
- char *deltax, *deltay;
- {
- int fnum, arg2, arg3, arg4;
-
- fnum = 11; /* »«½πτ¿Γ∞ ¡á»αáó½Ñ¡¿Ñ ñó¿ªÑ¡¿∩ */
- cmouses( &fnum, &arg2, &arg3, &arg4);
- if(arg3>0) *deltax = RIGHT;
- else if(arg3<0) *deltax = LEFT;
- else *deltax = NOT_MOVED;
-
- if(arg4>0) *deltay = DOWN;
- else if(arg4<0) *deltay = UP;
- else *deltay = NOT_MOVED;
- }
-
-
- îá¬α«ßδ RIGHT, LEFT, UP, DOWN ¿ NOT_MOVED «»αÑñѽѡδ
- ß½ÑñπεΘ¿¼ «íαẫ¼:
-
- #define NOT_MOVED 0
- #define RIGHT 1
- #define LEFT 2
- #define UP 3
- #define DOWN 4
-
-
-
- ùΓÑ¡¿Ñ ¿ πßΓá¡«ó¬á »«º¿µ¿¿ ¬παß«αá.
- -----------------------------------
-
- öπ¡¬µ¿¿ set_mouse_position() ¿ mouse_position(),
- »αÑñßΓáó½Ñ¡¡δÑ ¡¿ªÑ, ¿ß»«½∞ºπεΓß∩ ñ½∩ πßΓá¡«ó¬¿ τΓÑ¡¿∩ ΓѬπΘÑ⌐
- »«º¿µ¿¿ ¬παß«αá "¼δΦ¿".
-
-
- /* ôßΓá¡«ó¿Γ∞ ¬««αñ¿¡áΓδ ¬παß«αá "¼δΦ¿" */
- void set_mouse_position(x, y)
- int x, y;
- {
-
- int fnum, arg2;
-
- fnum = 4; /* πßΓá¡«ó¬á »«º¿µ¿¿ */
- cmouses(&fnum, &arg2, &x, &y);
- }
-
- /* 髺óαáΘáÑΓ ¬««αñ¿¡áΓδ ¬παß«αá "¼δΦ¿" */
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá IX -- 11 --
-
-
- void mouse_position(x, y)
- int *x, *y;
- {
- int fnum, arg2, arg3, arg4;
-
- fnum = 3; /* »«½πτ¿Γ∞ »«º¿µ¿ε ¿ ßΓáΓπß ¬½áó¿Φ¿ */
- cmouses( &fnum, &arg2, &arg3, &arg4);
- *x = arg3;
- *y = arg4;
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá IX -- 12 --
-
-
- ÅÉÄæÆàëÿǃ äàîÄìæÆÉÇûêÄììǃ ÅÉÄâÉÇîîÇ
- -----------------------------------------------------------------
-
- Åα«úαá¼¼á, »αÑñßΓáó½Ñ¡¡á∩ ¡¿ªÑ, ñѼ«¡ßΓα¿απÑΓ »α¿¼Ñ¡Ñ¡¿Ñ
- Σπ¡¬µ¿⌐ »«ññÑ᪬¿ "¼δΦ¿" óδß«¬«ú« πα«ó¡∩. óδ ¼«ªÑΓÑ ßαáºπ óóÑßΓ¿
- ÑÑ ó óáΦ ¬«¼»∞εΓÑα ¿ »«»α«í«óáΓ∞ ÑÑ ó ñѽÑ.
-
- /* ê¡ΓÑαΣÑ⌐ß ß "¼δΦ∞ε" Microsoft/IBM */
-
- #include "dos.h"
- #define NOT_MOVED 0
- #define RIGHT 1
- #define LEFT 2
- #define UP 3
- #define DOWN 4
- void mouse_position(), mode(), goto_xy(), mouse_motion();
- void cursor_on(), cursor_off(), mouse_reset();
-
- main(argc, argv)
- int argc;
- char *argv[];
- {
- char deltax, deltay, x, y;
-
- if(argc!=2) {
- printf(" êß»«½∞ºπ⌐ΓÑ Σ«α¼áΓ: mouser <ó¿ñÑ«αѪ¿¼> ");
- exit(1);
- }
-
- mode(atoi(argv[1]));
-
- mouse_reset(); /* ¿¡¿µ¿á½¿ºáµ¿∩ "¼δΦ¿" */
- cursor_on(); /* "ó¬½ετÑ¡¿Ñ" ¬παß«αá */
-
- do {
- goto_xy(0, 0);
- if(leftb_presed()) printf("ïÑóá∩ ¬½áó¿Φá");
- if(rightb_pressed()) {
- printf("Åαáóá∩ ¬½áó¿Φá");
- mouse_position(&x, &y);
- printf("%d %d - ", x, y);
- }
-
- /* ÄΓ«íαáªÑ¡¿Ñ ¼ÑßΓ«»«½«ªÑ¡¿∩ "¼δΦ¿" */
- mouse_motion(&deltax, &deltay);
- if(deltax || deltay) {
- printf("ÅÑαѼÑΘÑ¡¿Ñ");
- switch(deltax) {
- case NOT_MOVED: break;
- case RIGHT: printf("é»αáó«");
- break;
- case LEFT: printf("é½Ñó«");
- break;
- }
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá IX -- 13 --
-
-
- switch(deltay) {
- case NOT_MOVED: break;
- case UP: printf("éóÑασ");
- break;
- case DOWN: printf("é¡¿º");
- break;
- }
- }
- /* û¿¬½ óδ»«½¡∩ÑΓß∩ »«¬á «íÑ ¬½áó¿Φ¿ ¡áªáΓδ «ñ¡«óαѼѡ¡« */
- } while(!(leftb_pressed() && rightb_pressed()));
- mode(3);
- }
-
- /* ôßΓá¡«ó¬á ó¿ñÑ«αѪ¿¼á */
- void mode(mode_code)
- int mode_code;
- {
- union REGS r;
-
- r.h.al = mode_code;
- r.h.ah = 0;
- int86(0x10, &r, &r);
- }
-
- /* ÅÑαÑßδ½¬á ¬παß«αá ó »«º¿µ¿ε, ߻ѵ¿Σ¿µ¿α«óá¡¡πε
- ¬««αñ¿¡áΓἿ σ ¿ π */
- void goto_xy(x, y)
- int x, y;
- {
- union REGS r;
-
- r.h.ah=2; /* Σπ¡¬µ¿∩ áñαÑßᵿ¿ ¬παß«αá */
- r.h.dl = y; /* ¬««αñ¿¡áΓδ ßΓ«½íµá */
- r.h.dh = x; /* ¬««αñ¿¡áΓδ ßΓ᫬¿ */
- r.h.bh = 0; /* ó¿ñÑ«ßΓαá¡¿µá */
- int86(0x10, &r, &r);
- }
-
- /**********************************************************/
- /* öπ¡¬µ¿¿, «íÑß»Ñτ¿óáεΘ¿Ñ ¿¡ΓÑαΣÑ⌐ß ß "¼δΦ∞ε" */
- /**********************************************************/
-
- /* 鬽ετÑ¡¿Ñ ¬παß«αá "¼δΦ¿" */
- void cursor_on()
- {
- int fnum;
-
- fnum = 1; /* «Γ«íαếΓ∞ ¬παß«α */
- cmouses( &fnum, &fnum, &fnum, &fnum);
- }
-
-
- /* é䬽ετÑ¡¿Ñ ¬παß«αá "¼δΦ¿" */
- void cursor_off()
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá IX -- 14 --
-
-
- {
- int fnum;
-
- fnum = 2; /* ßΓÑαÑΓ∞ ¬παß«α */
- cmouses( &fnum, &fnum, &fnum, &fnum);
- }
-
-
- /* 髺óαáΘáÑΓ º¡áτÑ¡¿Ñ "¿ßΓ¿¡á", Ñß½¿ ¡áªáΓá »αáóá∩ ¬½áó¿Φá,
- ¿ "½«ª∞" ó »α«Γ¿ó¡«¼ ß½πτáÑ */
-
- rightb_pressed()
- {
- int fnum, arg2, arg3, arg4;
-
- fnum = 3; /* ùΓÑ¡¿Ñ »«º¿µ¿¿ ¿ ßΓáΓπßá ¬½áó¿Φ¿ */
- cmouses( &fnum, &arg2, &arg3, &arg4);
- return arg2 & 2;
- }
-
-
- /* 髺óαáΘáÑΓ º¡áτÑ¡¿Ñ "¿ßΓ¿¡á", Ñß½¿ ¡áªáΓá ½Ñóá∩ ¬½áó¿Φá,
- ¿ "½«ª∞" ó »α«Γ¿ó¡«¼ ß½πτáÑ */
-
- leftb_pressed()
- {
- int fnum, arg2, arg3, arg4;
-
- fnum = 3; /* ùΓÑ¡¿Ñ »«º¿µ¿¿ ¿ ßΓáΓπßá ¬½áó¿Φ¿ */
- cmouses( &fnum, &arg2, &arg3, &arg4);
- return arg2 & 1;
- }
-
-
- /* 髺óαáΘáÑΓ ¡á»αáó½Ñ¡¿Ñ ñó¿ªÑ¡¿∩ */
- void mouse_motion(deltax, deltay)
- char *deltax, *deltay;
- {
- int fnum, arg2, arg3, arg4;
-
- fnum = 11; /* »«½πτ¿Γ∞ ¡á»αáó½Ñ¡¿Ñ ñó¿ªÑ¡¿∩ */
- cmouses( &fnum, &arg2, &arg3, &arg4);
- if(arg3>0) *deltax = RIGHT;
- else if(arg3<0) *deltax = LEFT;
- else *deltax = NOT_MOVED;
-
- if(arg4>0) *deltay = DOWN;
- else if(arg4<0) *deltay = UP;
- else *deltay = NOT_MOVED;
- }
-
-
-
- /* ôßΓá¡«ó¿Γ∞ ¬««αñ¿¡áΓδ ¬παß«αá "¼δΦ¿" */
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá IX -- 15 --
-
-
- void set_mouse_position(x, y)
- int x, y;
- {
- int fnum, arg2;
-
- fnum = 4; /* πßΓá¡«ó¬á »«º¿µ¿¿ */
- cmouses(&fnum, &arg2, &x, &y);
- }
-
- /* 髺óαáΘáÑΓ ¬««αñ¿¡áΓδ ¬παß«αá "¼δΦ¿" */
- void mouse_position(x, y)
- int *x, *y;
- {
- int fnum, arg2, arg3, arg4;
-
- fnum = 3; /* »«½πτ¿Γ∞ »«º¿µ¿ε ¿ ßΓáΓπß ¬½áó¿Φ¿ */
- cmouses( &fnum, &arg2, &arg3, &arg4);
- *x = arg3;
- *y = arg4;
- }
-
-
-
-
- /* ôßΓá¡«ó¬á "¼δΦ¿" ó ¿ßσ«ñ¡«Ñ ß«ßΓ«∩¡¿Ñ */
-
- void mouse_reset()
- {
- int fnum, arg2, arg3, arg4;
-
- fnum = 0; /* ôßΓá¡«ó¬á "¼δΦ¿" ó ¿ßσ«ñ¡«Ñ ß«ßΓ«∩¡¿Ñ */
- cmouses( &fnum, &arg2, &arg3, &arg4);
- if(fnum!=-1) {
- printf("Ç»»áαáΓ¡δÑ ¿½¿ »α«úαá¼¼¡δÑ ßαÑñßΓóá »«ññÑ᪬¿ ");
- printf("'¼δΦ¿' ¡Ñ ¿¡ßΓ὿α«óá¡δ");
- exit(1);
-
- }
- if(arg2!=2) {
- printf("ÉáºαÑΦÑ¡« ¿ß»«½∞º«óá¡¿Ñ Γ«½∞¬« ñóπσ¬½áó¿Φ¡«⌐ ");
- printf("'¼δΦ¿'");
- exit(1);
- }
- }
-
- ÅÑαÑñ ¿ß»«½∞º«ó᡿Ѽ φΓ«⌐ »α«úαá¼¼δ ó ¬«¼á¡ñ¡«⌐ ßΓα«¬Ñ DOS
- ߻ѵ¿Σ¿µ¿απ⌐ΓÑ ó¿ñÑ«αѪ¿¼, ó ¬«Γ«α«¼ óδ ªÑ½áÑΓÑ αáí«ΓáΓ∞.
- Åα«úαá¼¼á íπñÑΓ ß««íΘáΓ∞ óá¼ « ¡á»αáó½Ñ¡¿¿ »ÑαѼÑΘÑ¡¿∩ "¼δΦ¿",á
- Γá¬ªÑ « ¡áªáΓδσ ¬½áó¿Φáσ "¼δΦ¿". éñ«íáó«¬ ¬« óßѼπ, ¡áªáΓ¿Ñ
- »αáó«⌐ ¬½áó¿Φ¿ íπñÑΓ óδºδóáΓ∞ «Γ«íαáªÑ¡¿Ñ ΓѬπΘÑ⌐ »«º¿µ¿¿ ò, ô.
- ìáªáΓ¿Ñ «íÑ¿σ ¬½áó¿Φ ó맮óÑΓ ºáóÑαΦÑ¡¿Ñ »α«úαá¼¼δ. Å«»α«íπ⌐ΓÑ
- óδ»«½¡¿Γ∞ φΓπ »α«úαá¼¼π ó αẽ¿τ¡δσ ó¿ñÑ«αѪ¿áσ ¿ «íαáΓ¿ΓÑ
- ó¡¿¼á¡¿Ñ ¡á 󫺡¿¬áεΘ¿Ñ »α¿ φΓ«¼ φΣΣѬΓδ.
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá IX -- 16 --
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá IX -- 17 --
-
-
- ééÄä êìöÄÉîÇûêê æ ÅÄîÄÖ£₧ "î¢ÿê" é ÅÉÄâÉÇîîà ÉêæÄéÇìêƒ
- -----------------------------------------------------------------
- êΓá¬, óδ ΓÑ»Ñα∞ ú«Γ«óδ ¬ Γ«¼π, τΓ«íδ αáºαáí«ΓáΓ∞
- »«ñ»α«úαá¼¼δ, »«ºó«½∩εΘ¿Ñ ß »«¼«Θ∞ε "¼δΦ¿" π»αáó½∩Γ∞ »α«úαá¼¼«⌐
- α¿ß«óá¡¿∩. ê¡ΓÑαΣÑ⌐ß ß "¼δΦ∞ε" ¼«ªÑΓ íδΓ∞ ñ«íáó½Ñ¡ ó ßπΘÑßΓóπεΘ¿Ñ
- »«ñ»α«úαá¼¼δ π»αáó½Ñ¡¿∩, τΓ«, ÑßΓÑßΓóÑ¡¡«, íπñÑΓ í«½ÑÑ
- »αÑñ»«τΓ¿Γѽ∞¡«, τѼ αáºαáí«Γ¬á ¡«óδσ »«ñ»α«úαá¼¼ ¿½¿ ¼«ñ¿Σ¿¬áµ¿∩
- ßπΘÑßΓóπεΘ¿σ.
- Æá¬«⌐ »πΓ∞ óδú«ñÑ¡ »αѪñÑ óßÑú« ΓѼ, τΓ« Σπ¡¬µ¿«¡á½∞¡δ
- 󫺼«ª¡«ßΓ¿ ¬½áó¿Φ π»αáó½Ñ¡¿∩ ¬παß«α«¼ ß«σαá¡∩εΓß∩ ¡á óßÑ 100
- »α«µÑ¡Γ«ó, ¿ »«½∞º«óáΓѽ∞ ó ¬áªñ«⌐ ¬«¡¬αÑΓ¡«⌐ ß¿Γπᵿ¿ ¼«ªÑΓ
- óδíαáΓ∞ ¡á¿í«½ÑÑ »«ñσ«ñ∩ΘÑÑ πßΓα«⌐ßΓó« ñ½∩ óó«ñá ñá¡¡δσ
- (¬½áó¿áΓπαá ¿½¿ "¼δΦ∞").
- ÅαѪñÑ, τѼ "¼δΦ∞" íπñÑΓ ó¬½ετÑ¡á ¬á¬ πßΓα«⌐ßΓó« óó«ñá
- »α«úαá¼¼π α¿ß«óá¡¿∩, ¡Ñ«íσ«ñ¿¼« αáºαáí«ΓáΓ∞ ñóÑ »«ñ»α«úαá¼¼δ,
- πτ¿ΓδóáεΘ¿Ñ ß»Ñµ¿Σ¿¬π "¼δΦ¿". ÅÑαóá∩ »«ñ»α«úαá¼¼á - wait_on()
- »«ºó«½∩ÑΓ αÑ὿º«óáΓ∞ »α«µÑßß «ª¿ñá¡¿∩ «Γ»π߬᡿∩ («ßó«í«ªñÑ¡¿∩)
- ߻ѵ¿Σ¿µ¿α«óá¡¡«⌐ ¬½áó¿Φ¿ »«½∞º«óáΓѽѼ. ǡ὿º »«ñ«í¡«ú« α«ñá
- ¿¼ÑÑΓ óÑß∞¼á í«½∞Φ«Ñ º¡áτÑ¡¿Ñ, Γᬠ¬á¬ ß««ΓóÑΓßΓóπεΘ¿Ñ »αÑαδóá¡¿∩
- úÑ¡Ñα¿απεΓß∩ »«ßΓ«∩¡¡«, »«¬á ¬½áó¿Φá ¡Ñ ¡áªáΓá. (Äñ¡á¬«
- ¡Ñ󫺼«ª¡« «íÑß»Ñτ¿Γ∞ Γá¬«Ñ ¼ú¡«óÑ¡¡«Ñ ¡áªáΓ¿Ñ ¡á ¬½áó¿Φπ, ó
- αѺπ½∞ΓáΓÑ ¬«Γ«α«ú« ßΣ«α¼¿α«óὫß∞ íδ ½¿Φ∞ «ñ¡« »αÑαδóá¡¿Ñ). é«
- ¼¡«ú¿σ »«ñ»α«úαá¼¼áσ ¡á«í«α«Γ ó᪡« ¿ºíѪáΓ∞ Γᬫ⌐ ß¿Γπᵿ¿ ¿
- »«φΓ«¼π ó ¡¿σ ¬áªñ«Ñ ¡áªáΓ¿Ñ ¡á ¬½áó¿Φπ úÑ¡Ñα¿απÑΓ (Γ«τ¡ÑÑ íπñÑΓ
- ߬áºáΓ∞ ¬áªÑΓß∩, τΓ« úÑ¡Ñα¿απÑΓ) Γ«½∞¬« «ñ¡« »αÑαδóá¡¿Ñ ºá Γ«
- óαѼ∩, »«¬á ¬½áó¿Φá ¡áªáΓá. é ß««ΓóÑΓßΓó¿¿ ß φΓ¿¼, óáΦá »α«úαá¼¼á
- ñ«½ª¡á «íαáΘáΓ∞ß∩ ¬ Σπ¡µ¿¿ wait_on(), »αÑñßΓáó½Ñ¡¡«⌐ ¡¿ªÑ,
- ¡Ñ»«ßαÑñßΓóÑ¡¡« »ÑαÑñ óδ»«½¡Ñ¡¿Ñ¼ ¿ »«ß½Ñ Γ«ú«, ¬«úñá ¡áªáΓá
- ß««ΓóÑΓßΓóπεΘá∩ ¬½áó¿Φá.
-
-
- /* 髺óαáΘáÑΓ 1, Ñß½¿ ߻ѵ¿Σ¿µ¿α«óá¡¡á∩ ¬½áó¿Φá ¡Ñ ¡áªáΓá */
-
- void wait_on(button)
- int button;
- {
- if(button== LEFTB)
- while(leftb_pressed());
- else
- while(rightb_pressed());
- }
-
- îá¬α«ßδ LEFTB ¿ RIGHTB, »αÑñßΓáó½Ñ¡¡δÑ ¡¿ªÑ, ¿ß»«½∞ºπεΓß∩
- »α¿ «íαáΘÑ¡¿¿ ¬ wait_on().
-
-
- #define LEFTB 1
- #define RIGHTB 2
-
- éΓ«α«⌐ ¡Ñ«íσ«ñ¿¼«⌐ óá¼ Σπ¡¬µ¿Ñ⌐ ∩ó½∩ÑΓß∩ mouse_menu(). ¥Γá
- Σπ¡¬µ¿∩ «Γ«íαáªáÑΓ «ñ¡«ßΓα«τ¡«Ñ ¼Ñ¡ε ¿ »«ºó«½∩ÑΓ »«½∞º«óáΓѽε
- «ßπΘÑßΓó½∩Γ∞ óδí«α ¿º ¡Ñú« φ½Ñ¼Ñ¡Γ«ó »πΓѼ »ÑαѼÑΘÑ¡¿∩ "¼δΦ¿" ¡á
- »½«ß¬«ßΓ¿ (¿, ß««ΓóÑΓßΓóÑ¡¡«, ¬παß«αá "¼δΦ¿" »« φ¬αá¡π) ¿ ¡áªáΓ¿∩
- ½εí«⌐ ¬½áó¿Φ¿ "¼δΦ¿". ¥Γá Σπ¡¬µ¿∩ ¼«ªÑΓ αáí«ΓáΓ∞ Γ«½∞¬« ó 4
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá IX -- 18 --
-
-
- úαáΣ¿τÑ߬«¼ αѪ¿¼Ñ. öπ¡¬µ¿¿ »ÑαÑñáÑΓß∩ ñóπ¼Ñα¡δ⌐ ¼áßß¿ó ß¿¼ó«½«ó,
- ¬«Γ«αδ⌐ ß«ñÑαª¿Γ φ½Ñ¼Ñ¡Γδ ¼Ñ¡ε (¬«Γ«αδÑ ¼«ªÑΓ óδíαáΓ∞
- »«½∞º«óáΓѽ∞), º¡áτÑ¡¿Ñ ¬áªñ«ú« φ½Ñ¼Ñ¡Γá ¼Ñ¡ε (Ñú« ¬«ñ),á ΓᬪÑ
- ¬««αñ¿¡áΓδ ò ¿ ô «Γ«íαáªÑ¡¿∩ ¼Ñ¡ε ¡á φ¬αá¡Ñ. îáßß¿ó ß¿¼ó«½«ó
- «»αÑñѽ∩ÑΓ ¼á¬ß¿¼á½∞¡πε ñ½¿¡π ¬áªñ«ú« φ½Ñ¼Ñ¡Γá ¼Ñ¡ε ó 19
- ß¿¼ó«½«ó. öπ¡¬µ¿∩ ó«ºóαáΘáÑΓ ó ¬áτÑßΓóÑ αѺπ½∞ΓáΓá ¡«¼Ñα
- óδíαá¡¡«ú« »«½∞º«óáΓѽѼ φ½Ñ¼Ñ¡Γá ¼Ñ¡ε, ¡áτ¿¡á∩ ß 0, ¿½¿ -1, Ñß½¿
- »«½∞º«óáΓѽ∞ ¡Ñ óδíαá½ ¡¿ «ñ¿¡ ¿º φ½Ñ¼Ñ¡Γ«ó ¼Ñ¡ε. è«úñá Σπ¡¬µ¿∩
- ¡áτ¿¡áÑΓ ßó«ε αáí«Γπ, Γ« «¡á ó¡áτá½Ñ óδτ¿ß½∩ÑΓ ñ½¿¡π ó »¿¬ßѽáσ
- (φ½Ñ¼Ñ¡Γáσ αáßΓαá) ¬áªñ«ú« φ½Ñ¼Ñ¡Γá ¼Ñ¡ε, »«ß½Ñ τÑú« αѺÑαó¿απÑΓ
- »α«ßΓαá¡ßΓó« »« ¡áτá½∞¡«⌐ ¿ ¬«¡Ñτ¡«⌐ Γ«τ¬Ñ αáßΓαá ñ½∩ ¬áªñ«ú«
- φ½Ñ¼Ñ¡Γá ¼Ñ¡ε, «ñ¡«óαѼѡ¡« ºá»«¼¿¡á∩ φΓπ ¿¡Σ«α¼áµ¿ε ó ¼áßß¿óÑ
- len. (é τÑΓóÑαΓ«¼ úαáΣ¿τÑ߬«¼ αѪ¿¼Ñ ¬áªñδ⌐ ß¿¼ó«½ ¿¼ÑÑΓ óδß«Γπ ó
- 8 Γ«τѬ αáßΓαá ¿ Φ¿α¿¡π ó 16 Γ«τѬ αáßΓαá.) Å«ß½Ñ φΓ¿σ
- óδτ¿ß½Ñ¡¿⌐, Σπ¡¬µ¿∩ »ÑαÑσ«ñ¿Γ ó ß«ßΓ«∩¡¿Ñ «ª¿ñáÑ¡¿∩ »αÑαδóá¡¿∩ «Γ
- ¬½áó¿Φ "¼δΦ¿". Åα¿ φΓ«¼ «ßπΘÑßΓó½∩ÑΓß∩ á¡á½¿º ¡áªáΓá ¿½¿ ¡ÑΓ
- ¬½áó¿Φá "¼δΦ¿" ó ¼«¼Ñ¡Γ ¡áσ«ªñÑ¡¿∩ ÑÑ ¬παß«αá ó «í½áßΓ¿ ¼Ñ¡ε, ¿,
- Ñß½¿ ñá, Γ« ó ¼ÑßΓÑ αáß»«½«ªÑ¡¿∩ ¬á¬«ú« φ½Ñ¼Ñ¡Γá ¼Ñ¡ε. öπ¡¬µ¿∩
- mouse_menu() »α¿óÑñÑ¡á ¡¿ªÑ.
-
-
- /* ÄΓ«íαáªáÑΓ «ñ¡«ßΓα«τ¡«Ñ ¼Ñ¡ε ñ½∩ "¼δΦ¿" ¿ ó«ºóαáΘáÑΓ
- ¬«ñ óδíαá¡¡«ú« »«½∞º«óáΓѽѼ φ½Ñ¼Ñ¡Γá ¼Ñ¡ε */
-
- mouse_menu(count, item, x, y)
- int count; /* ¬«½¿τÑßΓó« φ½Ñ¼Ñ¡Γ«ó ¼Ñ¡ε */
- char item[][20]; /* φ½Ñ¼Ñ¡Γδ ¼Ñ¡ε */
- int x, y; /* »«º¿µ¿¿ «Γ«íαáªÑ¡¿∩ */
- {
- int i, len[MENU_MAX][2], t;
- int mousex, mousey;
-
- goto_xy(x, y);
- t = 0;
- for(i=0; i<count; i++) {
- printf("%s ", item[i]);
- len[i][0] = t;
- /* ¬áªñδ⌐ ß¿¼ó«½ ¿¼ÑÑΓ Φ¿α¿¡π ó 16 Γ«τѬ αáßΓαá */
- len[i][1] = t + strlen(item[i])*16;
- t = len[i][1] + 32; /* ñ«íáó½∩ÑΓß∩ ñóá »α«íÑ½á ¼Ñªñπ
- φ½Ñ¼Ñ¡ΓἿ ¼Ñ¡ε */
- }
-
- /* «ª¿ñá¡¿Ñ óδí«αá »«½∞º«óáΓѽѼ φ½Ñ¼Ñ¡Γá ¼Ñ¡ε */
- do {
- if(rightb_pressed() || leftb_pressed()) break;
- } while(!kbhit());
- /* «ª¿ñá¡¿Ñ ¡áªáΓ¿∩ ¬½áó¿Φ¿ */
- while(rightb_pressed() || leftb_pressed());
-
- /* »«½πτ¿Γ∞ ΓѬπΘπε »«º¿µ¿ε ¬παß«αá "¼δΦ¿" */
- mouse_position(&mousex, &mousey);
-
- /* á¡á½¿º¿απÑΓß∩, ¡áσ«ñ¿Γß∩ ½¿ ¬παß«α ó »αÑñѽáσ ¼Ñ¡ε */
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá IX -- 19 --
-
-
- if(mousey>=0 && mousey<8) /* ß¿¼ó«½ ¿¼ÑÑΓ óδß«Γπ
- 8 Γ«τѬ αáßΓαá */
- for(i=0; i<count; i++) {
- if(mousex>len[i][0] && mousex<len[i][1])
- return i;
- }
- return i;
- }
- returtn -1; /* óδí«α ¿º ¼Ñ¡ε ¡Ñ «ßπΘÑßΓó½∩½ß∩ */
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá IX -- 20 --
-
-
- ÄæìÄéìÄë ûêèï ÉÇüÄÆ¢ ÅÉÄâÉÇîî¢
- -----------------------------------------------------------------
-
- é «Γ½¿τ¿Ñ «Γ óßÑ⌐ «ßΓá½∞¡«⌐ τáßΓ¿ »α«úαá¼¼δ α¿ß«óá¡¿∩,
- Σαáú¼Ñ¡Γ Σπ¡¬µ¿¿ main() »αÑΓÑα»Ñ½ ¡á¿í«½ÑÑ ºÑ¡áτ¿Γѽ∞¡δÑ
- ¿º¼Ñ¡Ñ¡¿∩. é Σπ¡¬µ¿ε main() ñ«íáó½Ñ¡δ, ó τáßΓ¡«ßΓ¿, Σπ¡¬µ¿¿,
- «íÑß»Ñτ¿óáεΘ¿Ñ ¿¡ΓÑαΣÑ⌐óß ß ¼δΦ∞ε. ÆÑ¬ßΓ Σπ¡¬µ¿¿ main »α¿óÑñÑ¡
- ¡¿ªÑ.
-
- main()
- {
- char done=0;
-
- mode(4); /* »ÑαѬ½ετáΓѽ∞ ó 4 úαáΣ¿τÑ߬¿⌐ αѪ¿¼ ñ½∩
- áñá»ΓÑα«ó CGA/EGA */
- palette(0); /* »á½¿Γαá 0 */
- mouse_reset(); /* ¿¡ßΓá½∩µ¿∩ "¼δΦ¿" */
-
- xhairs(x, y); /* πßΓá¡«ó¿Γ∞ úαáΣ¿τÑ߬¿⌐ ¬παß«α */
- set_mouse_position(y*2, x); /* πßΓá¡«ó¿Γ∞ ¡áτá½∞¡πε »«º¿µ¿ε
- ¬παß«αá "¼δΦ¿" */
- do {
- /* »α«ß¼áΓα¿óáÑΓß∩, »ÑαѼÑΘá½áß∞ ½¿ "¼δΦ∞" */
- mouse_motion(&deltax, &deltay);
- if(deltax || deltay) read_mouse();
- /* »α«óÑα¬á ¡áªáΓ¿∩ ¬½áó¿Φ¿ */
- if(leftb_pressed() || rightb_pressed())
- read_mouse();
- if(kbhit()) {
- done = read_kb();
- /* »ÑαѼÑΘÑ¡¿Ñ "¼δΦ¿" ó ß««ΓóÑΓßΓó¿Ñ¼ ß αẼÑΘÑ¡¿Ñ¼
- úαáΣ¿τÑ߬«ú« ¬παß«αá */
- set_mouse_position(y*2, x);
- }
- } while (!done);
- mode(2);
- }
-
-
-
- èᬠóδ ¼«ªÑΓÑ ó¿ñÑΓ∞, Σπ¡¬µ¿¿ main(), ºá ¿ß¬½ετÑ¡¿Ñ¼ Σπ¡¬µ¿¿
- done(), ¡Ñ «»Ñα¿απεΓ ½«¬á½∞¡δ¼¿ »ÑαѼѡ¡δ¼¿. é¼ÑßΓ« φΓ«ú« óßÑ
- π»αáó½∩εΘ¿Ñ ¿ óδτ¿ß½∩ѼδÑ »ÑαѼѡ¡δÑ, ¡Ñ«íσ«ñ¿¼δÑ ñ½∩ αáí«Γδ
- »α«úαá¼¼δ, ∩ó½∩εΓß∩ ú½«íá½∞¡δ¼¿, τΓ« »«ºó«½∩ÑΓ ¬á¬ Σπ¡¬µ¿∩¼
- αáí«Γδ ß ¬½áó¿áΓπα«⌐, Γᬠ¿ Σπ¡¬µ¿∩¼ αáí«Γδ ß "¼δΦ∞ε", ¿ºíáó¿Γß∩
- «Γ ñ½¿¡¡«ú« ß»¿ß¬á áαúπ¼Ñ¡Γ«ó »α¿ «íαáΘÑ¡¿¿ ¬ ¡¿¼, á ΓᬪÑ
- π»α«ßΓ¿Γ∞ ¿σ ¿ß»«½∞º«óá¡¿Ñ ó »α«úαá¼¼Ñ. èᬠóδ ó¿ñ¿ΓÑ, á¡á½¿º
- Γ¿»á »αÑαδóá¡¿∩ («Γ ¬½áó¿áΓπαδ ¿½¿ «Γ "¼δΦ¿") «ßπΘÑßΓó½∩ÑΓß∩
- ó¡πΓα¿ µ¿¬½á. Åα¿ »«ßΓπ»½Ñ¡¿¿ »αÑαδóá¡¿∩ «Γ φΓ¿σ πßΓα«⌐ßΓó
- óδºδóáεΓß∩ ß««ΓóÑΓßΓóπεΘ¿Ñ Σπ¡¬µ¿¿. çá¼ÑΓ∞ΓÑ, τΓ« ¬παß«α "¼δΦ¿"
- »α¿ φΓ«¼ ¡Ñ ó䬽ετáÑΓß∩. éºá¼Ñ¡ φΓ«ú« ó« óαѼ∩ óδ»«½¡Ñ¡¿∩
- α¿ßπεΘÑ⌐ τáßΓ¿ »α«úαá¼¼δ úαáΣ¿τÑ߬¿⌐ ¬παß«α ¿ß»«½∞ºπÑΓß∩ ñ½∩
- ¿¡ñ¿¬áµ¿¿ ΓѬπΘÑ⌐ »«º¿µ¿¿ ¡á φ¬αá¡Ñ. èπαß«α "¼δΦ¿" á¬Γ¿ó¿º¿απÑΓß∩
- ½¿Φ∞ »α¿ αáí«ΓÑ ß «ñ¡«ßΓα«τ¡δ¼ ¼Ñ¡ε.
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá IX -- 21 --
-
-
-
- öπ¡¬µ¿∩ read_kb(), ¬«Γ«αá∩ «íÑß»Ñτ¿óáÑΓ »α«µÑßß óó«ñá ß
- ¬½áó¿áΓπαδ, »αÑñßΓáó½Ñ¡á ¡¿ªÑ. é «ß¡«ó¡«¼ «¡á ¡¿τѼ ¡Ñ «Γ½¿τáÑΓß∩
- «Γ «α¿ú¿¡á½∞¡«⌐ óÑαß¿¿ ¿ óδ»«½¡∩ÑΓ ñ«ó«½∞¡« º¡áτ¿Γѽ∞¡δÑ »« ßó«Ñ⌐
- α«½¿ Σπ¡¬µ¿¿.
-
- /* ùΓÑ¡¿Ñ ¿ «íαáí«Γ¬á ¬«¼á¡ñ, óó«ñ¿¼δσ ß ¬½áó¿áΓπαδ */
-
- read_kb()
- {
- union k{
- char c[2];
- int i;
- } key;
-
- key.i = bioskey(0);
- xhairs(x, y); /* ßΓÑαÑΓ∞ úαáΣ¿τÑ߬¿⌐ ¬παß«α */
- if(!key.c[0]) switch(key.c[1]){
- case 75: /* ó½Ñó« */
- if(on_flag) line(x, y, x, y-inc, cc);
- y -= inc;
- break;
- case 77: /* ó»αáó« */
- if(on_flag) line(x, y, x, y+inc, cc);
- y += inc;
- break;
- case 72: /* óóÑασ */
- if(on_flag) line(x, y, x-inc, y, cc);
- x -= inc;
- break;
- case 80: /* 󡿺 */
- if(on_flag) line(x, y, x+inc, y, cc);
- x += inc;
- break;
- case 71: /* ó½Ñó« óóÑασ */
- if(on_flag) line(x, y, x-inc, y-inc, cc);
- y -= inc; x -= inc;
- break;
- case 73: /* ó»αáó« óóÑασ */
- if(on_flag) line(x, y, x-inc, y+inc, cc);
- y += inc; x -= inc;
- break;
- case 79: /* ó½Ñó« 󡿺 */
- if(on_flag) line(x, y, x+inc, y-inc, cc);
- y -= inc; x += inc;
- break;
- case 81: /* ó»αáó« 󡿺 */
- if(on_flag) line(x, y, x+inc, y+inc, cc);
- y += inc; x += inc;
- break;
- case 59: inc = 1; /* F1 - π¼Ñ¡∞Φ¿Γ∞ ߬«α«ßΓ∞ */
- break;
- case 60: inc = 5; /* F2 - πóѽ¿τ¿Γ∞ ߬«α«ßΓ∞ */
- break;
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá IX -- 22 --
-
-
- }
- else switch(tolower(key.c[0])) {
- case 'o': on_flag = !on_flag; /* »ÑαѬ½ετáΓÑ«½∞
- Φáí½«¡á µóÑΓá */
- break;
- case '1': cc = 1; /* µóÑΓ 1 */
- break;
- case '2': cc = 2; /* µóÑΓ 2 */
- break;
- case '3': cc = 3; /* µóÑΓ 3 */
- break;
- case '0': cc = 0; /* µóÑΓ 0 */
- break;
- case 'b': box(startx, starty, endx, endy, cc);
- break;
- case 'f': fill_box(startx, starty, endx, endy, cc);
- break;
- case 'l': line(startx, starty, endx, endy, cc);
- break;
- case 'c': circle(startx, starty, endy-starty, cc);
- break;
- case 'h': fill_circle(startx, starty, endy-starty, cc);
- break;
- case 's': save_pic();
- break;
- case 'r': load_pic();
- break;
- case 'm': /* »ÑαѼÑßΓ¿Γ∞ «í½áßΓ∞ */
- move(startx, starty, endx, endy, x, y);
- break;
- case 'x': /* ¬«»¿α«óáΓ∞ «í½áßΓ∞ */
- copy(startx, starty, endx, endy, x, y);
- break;
- case 'd': /* «»αÑñѽ¿Γ∞ «íΩÑ¬Γ ñ½∩ óαáΘÑ¡¿∩ */
- sides = define_object(object, x, y);
- break;
- case 'a': /* óαáΘáΓ∞ «íΩÑ¬Γ */
- rotate_object(object, 0.05, x, y, sides);
- break;
- case '\r': /* πßΓá¡«ó¿Γ∞ ¬«¡Ñτ¡πε Γ«τ¬π ñ½∩ ½¿¡¿¿,
- «¬απª¡«ßΓ¿ ¿½¿ »α∩¼«πú«½∞¡¿¬á */
- if(first_point) {
- startx = x; starty = y;
- }
- else {
- endx = x; endy = y;
- }
- first_point = !first_point;
- break;
- case 'p': pal_num = pal_num==1 ? 2:1;
- palette(pal_num);
- }
- /* ó«ßßΓá¡«ó¿Γ∞ ¿º«íαáªÑ¡¿Ñ úαáΣ¿τÑ߬«ú« ¬παß«αá */
- xhairs(x, y);
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá IX -- 23 --
-
-
- if(tolowel(key.c[0])=='q') return 1;
- return 0;
- }
-
- öπ¡¬µ¿∩ read_mouse(), ¬«Γ«αá∩ «íαáíáΓδóáÑΓ óó«ñ «Γ "¼δΦ¿",
- »αÑñßΓáó½Ñ¡á ¡¿ªÑ.
-
-
- /* ùΓÑ¡¿Ñ ¿ «íαáí«Γ¬á ¬«¼á¡ñ, óó«ñ¿¼δσ ß »«¼«Θ∞ε "¼δΦ¿" */
-
- read_mouse()
- {
- int oldx, oldy;
- int choice;
-
- oldx = x; oldy = y;
- xhairs(x, y); /* ßΓÑαÑΓ∞ ß ΓѬπΘÑ⌐ »«º¿µ¿¿ */
-
- /* ¡áªáΓδ «íÑ ¬½áó¿Φ¿ ñ½∩ á¬Γ¿ó¿ºáµ¿¿ ¼Ñ¡ε */
- if(rightb_pressed() && leftb_pressed()) {
- choice = menu(); /* »«½πτ¿Γ∞ αѺπ½∞ΓáΓ óδí«αá
- ¿º ¼Ñ¡ε */
- switch(choice) {
- case 0: box(startx, starty, endx, endy, cc);
- break;
- case 1: circle(startx, starty, endy-starty, cc);
- break;
- case 2: line(startx, starty, endx, endy, cc);
- break;
- case 3: fill_box(startx, starty, endx, endy, cc);
- break;
- case 4: fill_circle(startx, starty, endy-starty, cc);
- break;
- }
- }
-
- /* »αáóá∩ ¬½áó¿Φá «»αÑñѽ∩ÑΓ ¬«¡Ñτ¡πε Γ«τ¬π Σ¿úπαδ */
-
- else if(rightb_pressed()) {
- if(first_point) {
- startx = x; starty = y;
- }
- else {
- endx = x; endy = y;
- }
- first_point = !first_point;
- wait_on(RIGHTB); /* «ª¿ñá¡¿Ñ «ßó«í«ªñÑ¡¿∩ ¬½áó¿Φ¿ */
- }
-
- if(deltax || deltay) {
- mouse_position(&y, &x);
- y = y / 2; /* ¡«α¼á½¿ºáµ¿∩ ¬««αñ¿¡áΓ ó¿αΓπá½∞¡«ú«
- φ¬αá¡á */
- /* ¡áª¼¿ΓÑ ½Ñóπε ¬½áó¿Φπ ñ½∩ α¿ß«óá¡¿∩ */
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá IX -- 24 --
-
-
- if(leftb_pressed()) mouse_on_flag = 1;
- else mouse_on_flag = 0;
- if(mouse_on_flag) line(oldx, oldy, x, y, cc);
- }
- /* ó«ßßΓá¡«ó¿Γ∞ ¿º«íαáªÑ¡¿Ñ úαáΣ¿τÑ߬«ú« ¬παß«αá */
- xhairs(x, y);
- }
-
- öπ¡¬µ¿∩ read_mouse() αáí«ΓáÑΓ ß½ÑñπεΘ¿¼ «íαẫ¼. é«-»Ñαóδσ,
- á¡á½¿º¿απÑΓß∩ Σá¬Γ «ñ¡«óαѼѡ¡«ú« ¡áªáΓ¿∩ ñóπσ ¬½áó¿Φ. àß½¿ Σá¬Γ
- ¿¼ÑÑΓ ¼ÑßΓ«, Γ« »πΓѼ «íαáΘÑ¡¿∩ ¬ Σπ¡¬µ¿¿ menu() á¬Γ¿ó¿º¿απÑΓß∩
- ¼Ñ¡ε, ¬«Γ«α«Ñ πßΓá¡áó½¿óáÑΓß∩ ¿ π»αáó½∩ÑΓß∩ »πΓѼ «íαáΘÑ¡¿∩ ¬
- mouse_menu(). àß½¿ »«½∞º«óáΓѽ∞ «ßπΘÑßΓó¿½ óδí«α «ñ¡«ú« ¿º
- φ½Ñ¼Ñ¡Γ«ó ¼Ñ¡ε, Γ« ¿¡¿µ¿¿απÑΓß∩ ß««ΓóÑΓßΓóπεΘÑÑ ñÑ⌐ßΓó¿Ñ. Æá¬ ¬á¬
- ó ß«ßΓáó ΓѬπΘÑú« ¼Ñ¡ε óσ«ñ∩Γ αẽ¿τ¡δÑ Σ¿úπαδ, ¿º ¬«Γ«αδσ
- ߬½áñδóáÑΓß∩ ¿º«íαáªÑ¡¿Ñ, - »α∩¼«πú«½∞¡¿¬¿, «¬απª¡«ßΓ¿, ½¿¡¿¿ ¿
- ñÑ⌐ßΓó¿∩, »«ºó«½∩εΘ¿Ñ, ¡á»α¿¼Ñα, ºá¬αáΦ¿óáΓ∞ φΓ¿ Σ¿úπαδ, Γ« ß
- »«¼«Θ∞ε "¼δΦ¿" óδ ¼«ªÑΓÑ óδíαáΓ∞ «ñ¿¡ ¿º φΓ¿σ φ½Ñ¼Ñ¡Γ«ó íπñπΘÑú«
- α¿ßπ¡¬á ¿½¿ ñÑ⌐ßΓó¿Ñ. (óδ ¼«ªÑΓÑ Γá¬ªÑ ó¬½ετ¿Γ∞ ó ¼Ñ¡ε ßαÑñßΓóá,
- »«ºó«½∩εΘ¿Ñ »«½∞º«óáΓѽε óδí¿αáΓ∞ µóÑΓá ¿ πßΓá¡áó½¿óáΓ∞ »á½¿Γαπ).
-
- Åαáóá∩ ¬½áó¿Φá ¿ß»«½∞ºπÑΓß∩ ñ½∩ «»αÑñѽѡ¿∩ ¬«¡Ñτ¡«⌐ Γ«τ¬¿
- ½¿¡¿⌐, »α∩¼«πú«½∞¡¿¬«ó ¿ «¬απª¡«ßΓÑ⌐, Γ«τ¡« ΓᬠªÑ, ¬á¬ ¬½áó¿Φá
- <ééÄä> ¿ß»«½∞ºπÑΓß∩ ñ½∩ φΓ¿σ ªÑ µÑ½Ñ⌐ »α¿ αáí«ΓÑ ß ¬½áó¿áΓπα«⌐.
- ôßΓá¡«ó¿ΓÑ "¼δΦ∞" ó »Ñαó«⌐ ¬«¡Ñτ¡«⌐ Γ«τ¬Ñ «íΩѬΓá ¿ ¡áª¼¿ΓÑ
- »αáóπε ¬½áó¿Φπ. çáΓѼ »ÑαѼÑßΓ¿ΓÑ "¼δΦ∞" ó« óΓ«απε ¬«¡Ñτ¡πε Γ«τ¬π
- ¿ «»∩Γ∞ ¡áª¼¿ΓÑ ¬½áó¿Φπ. Æá¬ óδ »«½πτ¿ΓÑ ¿º«íαáªÑ¡¿Ñ ¿¡ΓÑαÑßπεΘÑ⌐
- óáß Σ¿úπαδ.
-
- è«úñá ½Ñóá∩ ¬½áó¿Φá ¡Ñ ¡áªáΓá, "¼δΦ∞" ¼«ªÑΓ »ÑαѼÑΘáΓ∞ß∩ »«
- φ¬αá¡π, ¡Ñ «ßΓáó½∩∩ ºá ß«í«⌐ ¡¿¬á¬«ú« ß½Ññá. ¥Γ« »α«¿ßσ«ñ¿Γ
- »«Γ«¼π, τΓ« »« π¼«½τá¡¿ε »Ñα« "¼δΦ¿" ßτ¿ΓáÑΓß∩ »«ñ¡∩Γδ¼. ä½∩
- Γ«ú«, τΓ«íδ »«½πτ¿Γ∞ 󫺼«ª¡«ßΓ∞ "»¿ßáΓ∞ ¼δΦ∞ε" («»πßΓ¿Γ∞ »Ñα«),
- ¡Ñ«íσ«ñ¿¼« ¡áªáΓ∞ ½Ñóπε ¬½áó¿Φπ. Å«¬á ¬½áó¿Φá ¡áªáΓá, »Ñα«
- ßτ¿ΓáÑΓß∩ «»πΘÑ¡¡δ¼.
-
- é ¬«¡µÑ ¬«¡µ«ó, Ñß½¿ "¼δΦ∞" ¿º¼Ñ¡¿½á ßó«¿ ¬««αñ¿¡áΓδ, íπñπΓ
- «í¡«ó½Ñ¡δ º¡áτÑ¡¿∩ ßτÑΓτ¿¬«ó X ¿ Y.
-
- öπ¡¬µ¿∩ menu(), »αÑñßΓáó½Ñ¡¡á∩ ¡¿ªÑ, ¿ß»«½∞ºπÑΓ ñ½∩
- πßΓá¡«ó¬¿ ¿ π»αáó½Ñ¡¿∩ ¼Ñ¡ε Σπ¡¬µ¿ε mouse_menu(), «»¿ßá¡¡πε
- αá¡ÑÑ.
-
- /* ÄΓ«íαáªÑ¡¿Ñ ¼Ñ¡ε */
- menu()
- {
- register int i, j;
- char far *ptr = (char far *) 0xB8000000; /* ô¬áºáΓѽ∞ ¡á
- CGA-»á¼∩Γ∞ */
- char far *temp;
- unsigned char buf[14][80]; /* ñ½∩ σαá¡Ñ¡¿∩ ß«ñÑন¼«ú«
- φ¬αá¡á */
- int x, y, choice;
- char items[][20] = {
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá IX -- 25 --
-
-
- "BOX",
- "CIRCLE",
- "LINE",
- "FILL BOX",
- "FILL CIRCLE"
- };
-
- temp = ptr;
- /* ß«σαá¡Ñ¡¿Ñ óÑασ¡Ñ⌐ τáßΓ¿ ΓѬπΘÑú« φ¬αá¡á */
- for(i=0; i<14; i++)
- for(j=0; j<80; j+=2) {
- buf[i][j] = *temp; /* τÑΓ¡δ⌐ íá⌐Γ */
- buf[i][j+1] = *(temp+8152); /* ¡ÑτÑΓ¡δ⌐ íá⌐Γ */
- *temp = 0; *(temp+8152) = 0; /* «τ¿ßΓ¬á óÑασ¡Ñ⌐
- τáßΓ¿ φ¬αá¡á */
- temp++;
- }
-
- goto_xy(0, 0);
- /* «ª¿ñá¡¿Ñ, ¬«Γ«α«Ñ íπñÑΓ »αÑαóá¡« ó αѺπ½∞ΓáΓÑ ¡áªáΓ¿∩ ¡á
- ¬½áó¿Φπ */
- while(rightb_pressed() || leftb_pressed());
-
- cursor_on();
-
- choice = mouse_menu(5, items, 0, 0);
-
- cursor_off();
- temp = ptr;
- /* ó«ßßΓá¡«ó½Ñ¡¿Ñ ¿º«íαáªÑ¡¿∩ óÑασ¡Ñ⌐ τáßΓ¿ φ¬αá¡á */
- for(i=0; i<14; i++)
- for(j=0; j<80; j+=2) {
- *temp = buf[i][j];
- *(temp+8152) = buf[i][j+1];
- temp++;
- }
- return choice;
- }
-
- é »α«µÑßßÑ αáí«Γδ Σπ¡¬µ¿∩ »αѪñÑ óßÑú« ß«σαá¡∩ÑΓ ¿º«íαáªÑ¡¿Ñ
- óÑασ¡Ñ⌐ τáßΓ¿ ΓѬπΘÑú« φ¬αá¡á, ¡Ñ «ª¿ñá∩ ¡áªáΓ¿∩ ¬á¬«⌐-½¿í«
- ¬½áó¿Φ¿. çáΓѼ ß½ÑñπÑΓ "ó¬½ετÑ¡¿Ñ" ¬παß«αá "¼δΦ¿" ¿ «íαáΘÑ¡¿Ñ ¬
- Σπ¡¬µ¿¿ mouse_menu(). Å«ß½Ñ »ÑαÑñáτ¿ π»αáó½Ñ¡¿∩ «Γ Σπ¡¬µ¿¿ mouse_
- menu() ¬παß«α ó¬½ετáÑΓß∩, ó«ßßΓá¡áó½¿óáÑΓß∩ »αÑñδñπΘÑÑ
- ¿º«íαáªÑ¡¿Ñ óÑασ¡Ñ⌐ τáßΓ¿ φ¬αá¡á, ¿ Σπ¡¬µ¿∩ ó«ºóαáΘáÑΓ
- ß««ΓóÑΓßΓóπεΘ¿⌐ ¬«ñ óδíαá¡¡«ú« φ½Ñ¼Ñ¡Γá ¼Ñ¡ε.
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá IX -- 26 --
-
-
- ÄÅÉàäàïàìêà ÄüÜàèÆÄé æ ÅÄîÄÖ£₧ "î¢ÿê"
- -----------------------------------------------------------------
-
- Äα¿ú¿¡á½∞¡á∩ óÑαß¿∩ »α«úαá¼¼δ α¿ß«óá¡¿∩ ñ«»π߬áÑΓ
- ¿ß»«½∞º«óá¡¿Ñ «íΩÑ¬Γ«ó, «»αÑñѽ∩Ѽδσ ß »«¼«Θ∞ε Σπ¡¬µ¿¿
- define_object(), »πΓѼ ߻ѵ¿Σ¿µ¿α«óá¡¿∩ ¬«¡Ñτ¡δσ Γ«τѬ ¬áªñ«ú«
- ßÑú¼Ñ¡Γá ½¿¡¿¿. èáªñδ⌐ «»αÑñѽѡ¡δ⌐ αá¡ÑÑ «íΩÑ¬Γ ¼«ªÑΓ íδΓ∞
- »«ñóÑαú¡πΓ óαáΘÑ¡¿ε. éÑαß¿∩ Σπ¡¬µ¿¿ define_object(),
- »αÑñßΓáó½Ñ¡¡á∩ ¡¿ªÑ, Γá¬ªÑ »«ºó«½∩ÑΓ ß »«¼«Θ∞ε "¼δΦ¿" π¬áºδóáΓ∞
- ¬«¡Ñτ¡δÑ Γ«τ¬¿ (úáíáα¿Γδ) «íΩÑ¬Γ«ó.
-
-
- /* Ä»αÑñѽѡ¿Ñ «íΩѬΓá »« Ñú« úáíáα¿Γ¡δ¼ Γ«τ¬á¼ ß »«¼«Θ∞ε
- ¬½áó¿áΓπαδ ¿½¿ "¼δΦ¿" */
- define_object(ob, x, y)
- double ob[][4];
- int x, y;
- {
- union k{
- char c[2];
- int i;
- } key;
- register int i, j;
- char far *ptr = (char far *) 0xB8000000; /* ô¬áºáΓѽ∞ ¡á
- CGA-»á¼∩Γ∞ */
- char far *temp;
- unsigned char buf[14][80];
- int sides=0;
- int deltax, deltay, oldx, oldy;
-
- temp = ptr;
- /* ß«σαá¡Ñ¡¿Ñ óÑασ¡Ñ⌐ τáßΓ¿ ΓѬπΘÑú« φ¬αá¡á */
- for(i=0; i<14; i++)
- for(j=0; j<80; j+=2) {
- buf[i][j] = *temp; /* τÑΓ¡δ⌐ íá⌐Γ */
- buf[i][j+1] = *(temp+8152); /* ¡ÑτÑΓ¡δ⌐ íá⌐Γ */
- *temp = 0; *(temp+8152) = 0; /* «τ¿ßΓ¬á óÑασ¡Ñ⌐
- τáßΓ¿ φ¬αá¡á */
- temp++;
- }
-
- i = 0;
- key.i = 0;
- xhairs(x, y);
- do {
- goto_xy(0, 0);
- printf("Ä»αÑñѽ¿ΓÑ ßΓ«α«¡π %d", sides+1);
- if(i==0) printf("ô¬áª¿ΓÑ »Ñαóπε úáíáα¿Γ¡πε Γ«τ¬π");
- else printf("ô¬áª¿ΓÑ óΓ«απε úáíáα¿Γ¡πε Γ«τ¬π");
-
- do {
- /************** ä«íáó«τ¡á∩ τáßΓ∞ ñ½∩ ¼δΦ¿. *******************/
- /* Åα«ß¼áΓα¿óáÑΓß∩, Ñß½¿ "¼δΦ∞" »ÑαѼÑΘáÑΓß∩ */
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá IX -- 27 --
-
-
- mouse_motion(&deltax, &deltay);
- /* êß»«½∞ºπ⌐ΓÑ ½Ñóπε ¬½áó¿Φπ ñ½∩ «»αÑñѽѡ¿∩ Γ«τ¬¿*/
- if(leftb_pressed()) {
- /* ßΓ¿αá¡¿Ñ úαáΣ¿τÑ߬«ú« ¬παß«αá */
- xhairs(x, y);
- /* ºá»«¼¿¡á¡¿Ñ ¬««αñ¿¡áΓ Γ«τ¬¿ */
- ob[sides][i++] = (double) x;
- ob[sides][i++] = (double) y;
- if(i==4) {
- i = 0;
- sides++;
- }
- break;
- }
- } while(!kbhit() && !deltax && ! deltay);
- if(leftb_pressed()) wait_on(LEFTB);
-
- if(deltax || deltay) {
- /* Ñß½¿ "¼δΦ∞" »ÑαѼÑßΓ¿½áß∞, Γ« »ÑαÑßτÑΓ ¬««αñ¿¡áΓ*/
- oldx = x; oldy = y;
- mouse_position(&y, &x);
- y = y / 2; /* ¡«α¼á½¿ºáµ¿∩ ¬««ñ¿¡áΓ ó¿αΓπá½∞¡«ú«
- φ¬αá¡á*/
- /* ßΓ¿αá¡¿Ñ úαáΣ¿τÑ߬«ú« ¬παß«αá */
- xhairs(oldx, oldy);
- }
- /********** 諡ѵ ñ«íáó«τ¡«⌐ τáßΓ¿ ñ½∩ "¼δΦ¿" *****************/
-
- else if(kbhit()) {
- key.i = bioskey(0);
- /* ¿º«íαáªÑ¡¿Ñ úαáΣ¿τÑ߬«ú« ¬παß«αá */
- xhairs(x, y);
- if(key.c[0]==13) {
- /* ¿ß»«½∞ºπ⌐ΓÑ <ééÄä> ñ½∩ «»αÑñѽѡ¿∩ Γ«τ¬¿*/
- ob[sides][i++] = (double) x;
- ob[sides][i++] = (double) y;
- if(i==4) {
- i = 0;
- sides++;
- }
- }
-
- /* Ñß½¿ ¬½áó¿Φ¿ π»αáó½Ñ¡¿∩ ¬παß«α«¼, Γ« »ÑαѼÑΘÑ¡¿Ñ
- úαáΣ¿τÑ߬«ú« ¬παß«αá */
- if(!key.c[0]) switch(key.c[1]) {
- case 75: /* ó½Ñó« */
- y-=1;
- break;
- case 77: /* ó»αáó« */
- y+=1;
- break;
- case 72: /* óóÑασ */
- x-=1;
- break;
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá IX -- 28 --
-
-
- case 80: /* 󡿺 */
- x+=1;
- break;
- case 71: /* ó½Ñó« óóÑασ */
- x-=1; y-=1;
- break;
- case 73: /* ó»αáó« óóÑασ */
- x-=1; y+=1;
- break;
- case 79: /* ó½Ñó« 󡿺 */
- x+=1; y-=1;
- break;
- case 81: /* ó»αáó« 󡿺 */
- x+=1; y+=1;
- break;
- }
- }
- if(key.c[1] != 59) xhairs(x, y);
- } while(key.c[1] != 59); /* ¡áª¼¿ΓÑ F1 ñ½∩ «ßΓá¡«ó¬¿ */
-
- temp = ptr;
- /* ó«ßΓá¡«ó½Ñ¡¿Ñ ¿º«íαáªÑ¡¿∩ ó óÑασ¡Ñ⌐ τáßΓ¿ φ¬αá¡á */
- for(i=0; i<14; i++)
- for(j=0; j<80; j+=2) {
-
- *temp = buf[i][j];
- *(temp+8152) = buf[i][j+1];
- temp++;
- }
- return sides;
- }
-
-
- èᬠóδ ¼«ªÑΓÑ ó¿ñÑΓ∞, ½Ñóá∩ ¬½áó¿Φá ¿ß»«½∞ºπÑΓß∩ ñ½∩
- π¬áºá¡¿∩ úáíáα¿Γ¡δσ Γ«τѬ. äó¿ªÑ¡¿Ñ "¼δΦ¿" ¬«ñ¿απÑΓß∩ Γ«τ¡« Γá¬
- ªÑ, ¬á¬ ¿ ó Σπ¡¬µ¿¿ read_mouse(). çá ¿ß¬½ετÑ¡¿Ñ¼ Γ«ú«, τΓ« ó
- Σπ¡¬µ¿ε ñ«íáó½Ñ¡ Σαáú¼Ñ¡Γ ¿ßσ«ñ¡«ú« ΓѬßΓá ñ½∩ »«ññÑ᪬¿ óó«ñá
- ¿¡Σ«α¼áµ¿¿ ß »«¼«Θ∞ε "¼δΦ¿", «α¿ú¿¡á½∞¡á∩ óÑαß¿∩ Σπ¡¬µ¿¿
- define_object() í«½∞ΦÑ ¡¿¬á¬¿σ ¿º¼Ñ¡Ñ¡¿⌐ ¡Ñ »αÑΓÑα»Ñ½á. ä½∩
- π¬áºá¡¿∩ «τÑαÑñ¡«⌐ úáíáα¿Γ¡«⌐ Γ«τ¬¿ »ÑαѼÑßΓ¿ΓÑ "¼δΦ∞" ó ¡πª¡πε
- »«º¿µ¿ε ¿ ¡áª¼¿ΓÑ ¬½áó¿Φπ.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá IX -- 29 --
-
-
- ÅÄïì¢ë ÆàèæÆ îÄäêöêûêÉÄéÇììÄë ÅÉÄâÉÇîî¢ ÉêæÄéÇìêƒ
- -----------------------------------------------------------------
-
- ì¿ªÑ »α¿óÑñÑ¡ ¿ßσ«ñ¡δ⌐ ΓѬßΓ »α«úαá¼¼δ α¿ß«óá¡¿∩ ß πτÑΓ«¼
- óßÑσ ¿º¼Ñ¡Ñ¡¿⌐ ¿ ñ«»«½¡Ñ¡¿⌐, «íßπªñÑ¡¡δσ óδΦÑ.
-
- /* ¥Γá óÑαß¿∩ »α«úαá¼¼δ α¿ß«óá¡¿∩ ñ½∩ áñá»ΓÑα«ó CGA/EGA
- »«ºó«½∩ÑΓ ¿ß»«½∞º«óáΓ∞ "¼δΦ∞" Σ¿α¼δ Microsoft/IBM,
- á Γá¬ªÑ á½∞ΓÑα¡áΓ¿ó¡«Ñ πßΓα«⌐ßΓó« óó«ñá (¬½áó¿áΓπαπ)
- */
- #define NUM_SIDES 20 /* îá¬ß¿¼á½∞¡«Ñ τ¿ß½« ßΓ«α«¡ Σ¿úπαδ.
- Å« ªÑ½á¡¿ε ¼«ª¡« πóѽ¿τ¿Γ∞ */
- #define NOT_MOVED 0
- #define RIGHT 1
- #define LEFT 2
- #define UP 3
- #define DOWN 4
- #define LEFTB 1
- #define RIGHTB 2
-
- #define MENU_MAX 20 /* îá¬ß¿¼á½∞¡«Ñ τ¿ß½« φ½Ñ¼Ñ¡Γ«ó ¼Ñ¡ε */
-
- #include "dos.h"
- #include "stdio.h"
- #include "math.h"
-
- void mode(), line(), box(), fill_box();
- void mempoint(), palette(), xhairs();
- void circle(), plot_circle(), fill_circle();
- void rotate_point(), rotate_object(), goto_xy();
- void display_object(), copy(), move();
- void save_pic(), load_pic();
- void set_mouse_position(), mouse_position(), mouse_motion();
- void cursor_on(), cursor_off(), wait_on(), mouse_reset();
-
- unsigned char read_point();
-
- /* ¥Γ« ¼áßß¿ó »αÑñ¡áº¡áτÑ¡ ñ½∩ σαá¡Ñ¡¿∩ ¬««αñ¿¡áΓ ñ¿¡á¼¿τÑ߬¿
- «»αÑñѽ∩Ѽ«⌐ Σ¿úπαδ */
-
- double object[NUM_SIDES][4];
-
- double asp_ratio; /* ¬«φΣΣ¿µ¿Ñ¡Γ ߪáΓ¿∩ «¬απª¡«ßΓÑ⌐ */
-
- int x=10, y=10; /* ΓѬπΘá∩ »«º¿µ¿∩ φ¬αá¡á */
- int cc=2; /* ΓѬπΘ¿⌐ µóÑΓ */
- int on_flag=1, mouse_on_flag=0; /* »Ñα« «»πΘÑ¡« ¿½¿
- »«ñ¡∩Γ« */
- int pal_num=1; /* ¡«¼Ñα »á½¿Γαδ */
-
- /* âáíáα¿Γ¡δÑ Γ«τ¬¿, «»αÑñѽ∩εΘ¿Ñ ½¿¡¿ε, «¬απª¡«ßΓ∞
- ¿½¿ »α∩¼«πú«½∞¡¿¬ */
- int startx=0, starty=0, endx=0, endy=0, first_point=1;
- int inc=1; /* »α¿αáΘÑ¡¿Ñ ñó¿ªÑ¡¿∩ */
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá IX -- 30 --
-
-
- int sides=0; /* ¡«¼Ñα ßΓ«α«¡δ «»αÑñѽ∩Ѽ«⌐ Σ¿úπαδ */
- int deltax, deltay; /* "¼δΦ∞" ¿º¼Ñ¡∩ÑΓ ñá¡¡δÑ ó
- ¿¡ñ¿µ¿α«óá¡¡«⌐ »«º¿µ¿¿ */
-
-
- main()
- {
- char done=0;
-
- mode(4); /* »ÑαѬ½ετáΓѽ∞ ó 4 úαáΣ¿τÑ߬¿⌐ αѪ¿¼ ñ½∩
- áñá»ΓÑα«ó CGA/EGA */
- palette(0); /* »á½¿Γαá 0 */
- mouse_reset(); /* ¿¡ßΓá½∩µ¿∩ "¼δΦ¿" */
-
- xhairs(x, y); /* πßΓá¡«ó¿Γ∞ úαáΣ¿τÑ߬¿⌐ ¬παß«α */
- set_mouse_position(y*2, x); /* πßΓá¡«ó¿Γ∞ ¡áτá½∞¡πε »«º¿µ¿ε
- ¬παß«αá "¼δΦ¿" */
- do {
- /* »α«ß¼áΓα¿óáÑΓß∩, »ÑαѼÑΘá½áß∞ ½¿ "¼δΦ∞" */
- mouse_motion(&deltax, &deltay);
- if(deltax || deltay) read_mouse();
- /* »α«óÑα¬á ¡áªáΓ¿∩ ¬½áó¿Φ¿ */
- if(leftb_pressed() || rightb_pressed())
- read_mouse();
- if(kbhit()) {
- done = read_kb();
- /* »ÑαѼÑΘÑ¡¿Ñ "¼δΦ¿" ó ß««ΓóÑΓßΓó¿¿ ß αẼÑΘÑ¡¿Ñ¼
- úαáΣ¿τÑ߬«ú« ¬παß«αá */
- set_mouse_position(y*2, x);
- }
- } while (!done);
- mode(2);
- }
-
-
- /* ùΓÑ¡¿Ñ ¿ «íαáí«Γ¬á ¬«¼á¡ñ, óó«ñ¿¼δσ ß »«¼«Θ∞ε "¼δΦ¿" */
- read_mouse()
- {
- int oldx, oldy;
- int choice;
-
- oldx = x; oldy = y;
- xhairs(x, y); /* ßΓÑαÑΓ∞ ß ΓѬπΘÑ⌐ »«º¿µ¿¿ */
-
- /* ¡áªáΓδ «íÑ ¬½áó¿Φ¿ ñ½∩ á¬Γ¿ó¿ºáµ¿¿ ¼Ñ¡ε */
- if(rightb_pressed() && leftb_pressed()) {
- choice = menu(); /* »«½πτ¿Γ∞ αѺπ½∞ΓáΓ óδí«αá
- ¿º ¼Ñ¡ε */
- switch(choice) {
- case 0: box(startx, starty, endx, endy, cc);
- break;
- case 1: circle(startx, starty, endy-starty, cc);
- break;
- case 2: line(startx, starty, endx, endy, cc);
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá IX -- 31 --
-
-
- break;
- case 3: fill_box(startx, starty, endx, endy, cc);
- break;
- case 4: fill_circle(startx, starty, endy-starty, cc);
- break;
- }
- }
-
- /* »αáóá∩ ¬½áó¿Φá «»αÑñѽ∩ÑΓ ¬«¡Ñτ¡πε Γ«τ¬π Σ¿úπαδ */
- else if(rightb_pressed()) {
- if(first_point) {
- startx = x; starty = y;
- }
- else {
- endx = x; endy = y;
- }
- first_point = !first_point;
- wait_on(RIGHTB); /* «ª¿ñá¡¿Ñ «ßó«í«ªñÑ¡¿∩ ¬½áó¿Φ¿ */
- }
-
- if(deltax || deltay) {
- mouse_position(&y, &x);
- y = y / 2; /* ¡«α¼á½¿ºáµ¿∩ ¬««αñ¿¡áΓ ó¿αΓπá½∞¡«ú«
- φ¬αá¡á */
- /* ¡áª¼¿ΓÑ ½Ñóπε ¬½áó¿Φπ ñ½∩ α¿ß«óá¡¿∩ */
- if(leftb_pressed()) mouse_on_flag = 1;
- else mouse_on_flag = 0;
- if(mouse_on_flag) line(oldx, oldy, x, y, cc);
- }
- /* ó«ßßΓá¡«ó¿Γ∞ ¿º«íαáªÑ¡¿Ñ úαáΣ¿τÑ߬«ú« ¬παß«αá */
- xhairs(x, y);
- }
-
- /* ùΓÑ¡¿Ñ ¿ «íαáí«Γ¬á ¬«¼á¡ñ, óó«ñ¿¼δσ ß ¬½áó¿áΓπαδ */
- read_kb()
- {
- union k{
- char c[2];
- int i;
- } key;
-
- key.i = bioskey(0);
- xhairs(x, y); /* ßΓÑαÑΓ∞ úαáΣ¿τÑ߬¿⌐ ¬παß«α */
- if(!key.c[0]) switch(key.c[1]){
- case 75: /* ó½Ñó« */
- if(on_flag) line(x, y, x, y-inc, cc);
- y -= inc;
- break;
- case 77: /* ó»αáó« */
- if(on_flag) line(x, y, x, y+inc, cc);
- y += inc;
- break;
- case 72: /* óóÑασ */
- if(on_flag) line(x, y, x-inc, y, cc);
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá IX -- 32 --
-
-
- x -= inc;
- break;
- case 80: /* 󡿺 */
- if(on_flag) line(x, y, x+inc, y, cc);
- x += inc;
- break;
- case 71: /* ó½Ñó« óóÑασ */
- if(on_flag) line(x, y, x-inc, y-inc, cc);
- y -= inc; x -= inc;
- break;
- case 73: /* ó»αáó« óóÑασ */
- if(on_flag) line(x, y, x-inc, y+inc, cc);
- y += inc; x -= inc;
- break;
- case 79: /* ó½Ñó« 󡿺 */
- if(on_flag) line(x, y, x+inc, y-inc, cc);
- y -= inc; x += inc;
- break;
- case 81: /* ó»αáó« 󡿺 */
- if(on_flag) line(x, y, x+inc, y+inc, cc);
- y += inc; x += inc;
- break;
- case 59: inc = 1; /* F1 - π¼Ñ¡∞Φ¿Γ∞ ߬«α«ßΓ∞ */
- break;
- case 60: inc = 5; /* F2 - πóѽ¿τ¿Γ∞ ߬«α«ßΓ∞ */
- break;
- }
- else switch(tolower(key.c[0])) {
- case 'o': on_flag = !on_flag; /* »ÑαѬ½ετáΓѽ∞
- Φáí½«¡á µóÑΓá */
- break;
- case '1': cc = 1; /* µóÑΓ 1 */
- break;
- case '2': cc = 2; /* µóÑΓ 2 */
- break;
- case '3': cc = 3; /* µóÑΓ 3 */
- break;
- case '0': cc = 0; /* µóÑΓ 0 */
- break;
- case 'b': box(startx, starty, endx, endy, cc);
- break;
- case 'f': fill_box(startx, starty, endx, endy, cc);
- break;
- case 'l': line(startx, starty, endx, endy, cc);
- break;
- case 'c': circle(startx, starty, endy-starty, cc);
- break;
- case 'h': fill_circle(startx, starty, endy-starty, cc);
- break;
- case 's': save_pic();
- break;
- case 'r': load_pic();
- break;
- case 'm': /* »ÑαѼÑßΓ¿Γ∞ «í½áßΓ∞ */
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá IX -- 33 --
-
-
- move(startx, starty, endx, endy, x, y);
- break;
- case 'x': /* ¬«»¿α«óáΓ∞ «í½áßΓ∞ */
- copy(startx, starty, endx, endy, x, y);
- break;
- case 'd': /* «»αÑñѽ¿Γ∞ «íΩÑ¬Γ ñ½∩ óαáΘÑ¡¿∩ */
- sides = define_object(object, x, y);
- break;
- case 'a': /* óαáΘáΓ∞ «íΩÑ¬Γ */
- rotate_object(object, 0.05, x, y, sides);
- break;
- case '\r': /* πßΓá¡«ó¿Γ∞ ¬«¡Ñτ¡πε Γ«τ¬π ñ½∩ ½¿¡¿¿,
- «¬απª¡«ßΓ¿ ¿½¿ »α∩¼«πú«½∞¡¿¬á */
- if(first_point) {
- startx = x; starty = y;
- }
- else {
- endx = x; endy = y;
- }
- first_point = !first_point;
- break;
- case 'p': pal_num = pal_num==1 ? 2:1;
- palette(pal_num);
- }
- /* ó«ßßΓá¡«ó¿Γ∞ ¿º«íαáªÑ¡¿Ñ úαáΣ¿τÑ߬«ú« ¬παß«αá */
- xhairs(x, y);
- if(tolowel(key.c[0])=='q') return 1;
- return 0;
- }
-
- /* ôßΓá¡«ó¿Γ∞ »á½¿Γαπ */
- void palette(pnum)
- int pnum;
- {
- union REGS r;
-
- r.h.bh = 1; /* ¬«ñ¿α«óá¡¿Ñ 4 úαáΣ¿τÑ߬«ú« αѪ¿¼á */
- r.h.bl = pnum;
- r.h.ah = 11; /* Σπ¡¬µ¬¿∩ πßΓá¡«ó½Ñ¡¿∩ »á½¿Γαδ */
- int86(0x10, &r, &r);
- }
-
- /* ôßΓá¡«ó¿Γ∞ ó¿ñÑ«αѪ¿¼ */
- void mode(mode_code)
- int mode_code;
- {
- union REGS r;
-
- r.h.al = mode_code;
- r.h.ah = 0;
- int86(0x10, &r, &r);
- }
-
- /* ɿ߫óá¡¿Ñ »α∩¼«πú«½∞¡¿¬á */
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá IX -- 34 --
-
-
- void box(startx, starty, endx, endy, color_code)
- int startx, starty, endx, endy, color_code;
- {
- line(startx, starty, endx, starty, color_code);
- line(startx, starty, startx, endy, color_code);
- line(startx, endy, endx, endy, color_code);
- line(endx, starty, endx, endy, color_code);
- }
-
-
- /* ɿ߫óá¡¿Ñ ½¿¡¿¿ ó ߻ѵ¿Σ¿µ¿α«óá¡¡«¼ µóÑΓÑ ß ¿ß»«½∞º«ó᡿Ѽ
- «ß¡«ó¡«ú« á½ú«α¿Γ¼á üαѺѡσá¼á */
- void line(startx, starty, endx, endy, color)
- int startx, starty, endx, endy, color;
- {
- register int t, distance;
- int x=0, y=0, delta_x, delta_y;
- int incx, incy;
-
- /* «»αÑñѽѡ¿Ñ αáßßΓ«∩¡¿∩ ó «í«¿σ ¡á»αáó½Ñ¡¿∩σ */
- delta_x = endx-startx;
- delta_y = endy-starty;
-
- /* éδτ¿ß½Ñ¡¿Ñ ¡á»αáó½Ñ¡¿∩ »α¿αáΘÑ¡¿∩. Åα¿αáΘÑ¡¿Ñ
- óδτ¿ß½∩ÑΓß∩ «Γ¡«ß¿Γѽ∞¡« 0 ¬á¬ ñ½∩ ú«α¿º«¡Γá½∞¡«⌐,
- Γᬠ¿ ñ½∩ óÑαΓ¿¬á½∞¡«⌐ ½¿¡¿¿
- */
- if(delta_x>0) incx = 1;
- else if(delta_x==0) incx = 0;
- else incx=-1;
-
- if(delta_y>0) incy = 1;
- else if(delta_y==0) incy = 0;
- else incy=-1;
-
- /* Ä»αÑñѽ∩ÑΓß∩, ¬á¬«Ñ αáßßΓ«∩¡¿Ñ í«½∞ΦÑ */
- delta_x = abs(delta_x);
- delta_y = abs(delta_y);
- if(delta_x>delta_y) distance = delta_x;
- else distance = delta_y;
-
- /* éδτÑατ¿δó¡¿Ñ ½¿¡¿¿ */
- for(t=0; t<=distance+1; t++) {
- mempoint(startx, starty, color);
- x+=delta_x;
- y+=delta_y;
- if(x>distance) {
- x-=distance;
- startx+=incx;
- }
- if(y>distance) {
- y-=distance;
- starty+=incy;
- }
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá IX -- 35 --
-
-
- }
- }
-
- /* çá¬αáΦ¿óá¡¿Ñ »α∩¼«πú«½∞¡¿¬á ߻ѵ¿Σ¿µ¿α«óá¡¡δ¼ µóÑΓ«¼ */
- void fill_box(startx, starty, endx, endy, color_code)
- int startx, starty, endx, endy, color_code;
- {
- register int i, begin, end;
-
- begin = startx<endx ? startx : endx;
- end = startx>endx ? startx : endx;
-
- for(i=begin; i<=end; i++)
- line(i, starty, i, endy, color_code);
- }
-
- /* ɿ߫óá¡¿Ñ «¬απª¡«ßΓ¿ ß ¿ß»«½∞º«ó᡿Ѽ µÑ½«τ¿ß½Ñ¡¡«ú« á½ú«α¿Γ¼á
- üαѺѡσá¼á */
- void circle(x_center, y_center, radius, color_code)
- int x_center, y_center, radius, color_code;
- {
- register int x, y, delta;
-
- asp_ratio = 1.0; /* àß½¿ éáß ¡Ñ πñ«ó½ÑΓó«α∩εΓ »αÑñ½áúáѼδÑ
- »α«»«αµ¿¿ Σ¿úπαδ, ¿º¼Ñ¡¿ΓÑ º¡áτÑ¡¿Ñ φΓ«⌐
- »ÑαѼѡ¡«⌐ */
- y = radius;
- delta = 3 - 2 * radius;
-
- for(x=0; x<y; ) {
- plot_circle(x, y, x_center, y_center, color_code);
-
- if(delta < 0)
- delta += 4*x+6;
- else {
- delta += 4*(x-y)+10;
- y--;
- }
- x++;
- }
- x=y;
- if(y) plot_circle(x, y, x_center, y_center, color_code);
- }
-
-
- /* ìÑ»«ßαÑñßΓóÑ¡¡«Ñ óδτÑατ¿óá¡¿Ñ «¬απª¡«ßΓ¿ »« «»αÑñѽѡ¡δ¼
- »«½∞º«óáΓѽѼ Γ«τ¬á¼ */
- void plot_circle(x, y, x_center, y_center, color_code)
- int x, y, x_center, y_center, color_code;
- {
- int startx, endx, x1, starty, endy, y1;
-
- starty = y*asp_ratio;
- endy = (y+1)*asp_ratio;
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá IX -- 36 --
-
-
- startx = x*asp_ratio;
- endx = (x+1)*asp_ratio;
-
- for(x1=startx; x1<endx; ++x1) {
- mempoint(x1+x_center, y+y_center, color_code);
- mempoint(x1+x_center, y_center-y, color_code);
- mempoint(x_center-x1, y_center-y, color_code);
- mempoint(x_center-x1, y+y_center, color_code);
- }
-
- for(y1=starty; y1<endy; ++y1) {
- mempoint(y1+x_center, x+y_center, color_code);
- mempoint(y1+x_center, y_center-x, color_code);
- mempoint(x_center-y1, y_center-x, color_code);
- mempoint(x_center-y1, x+y_center, color_code);
- }
- }
-
-
- /* çá¬αáΦ¿óá¡¿Ñ «¬απª¡«ßΓ¿ »πΓѼ µ¿¬½¿τÑ߬«ú« «íαáΘÑ¡¿∩ ¬ Σπ¡¬µ¿¿
- circle() ß ¼Ñ¡∞Φ¿¼ αáñ¿πß«¼ */
- void fill_circle(x, y, r, c)
- int x, y, r, c;
- {
- while(r) {
- circle(x, y, r, c);
- r--;
- }
- }
-
-
- /* ÄΓ«íαáªÑ¡¿Ñ úαáΣ¿τÑ߬«ú« ¬παß«αá */
- void xhairs(x, y)
- int x, y;
- {
- line(x-4, y, x+3, y, 1 | 128);
- line(x, y+4, x, y-3, 1 | 128);
- }
-
-
- /* çỿß∞ Γ«τ¬¿ ¡Ñ»«ßαÑñßΓóÑ¡¡« ó CGA/EGA */
- void mempoint(x, y, color_code)
- int x, y, color_code;
- {
- union mask {
- char c[2];
- int i;
- } bit_mask;
- int i, index, bit_position;
- unsigned char t;
- char xor; /* xor - µóÑΓ ¿º«íαáªÑ¡¿∩ ºá»¿ßδóáÑΓß∩ ¿½¿
- »ÑαѺỿßδóáÑΓß∩ */
- char far *ptr = (char far *) 0xB8000000; /* ô¬áºáΓѽ∞
- CGA »á¼∩Γ¿ */
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá IX -- 37 --
-
-
- bit_mask.i=0xFF3F; /* 11111111 00111111 ó ñó«¿τ¡«¼
- ¬«ñÑ */
-
- /* »α«óÑα¬á º¡áτÑ¡¿⌐ ñ½∩ 4 αѪ¿¼á */
- if(x<0 || x>199 || y<0 || y>319) return;
-
- xor= color_code & 128; /* »α«ß¼áΓα¿óáÑΓß∩, Ñß½¿ αѪ¿¼
- πßΓá¡«ó½Ñ¡ */
- color_code = color_code & 127; /* ¼á߬á ßΓáαΦÑú« í¿Γá */
-
- /* πßΓá¡«ó¬á ¼á߬¿ í¿Γá ¿ ¬«ñá µóÑΓá ñ½∩ »αáó«⌐ ∩τÑ⌐¬¿
- »á¼∩Γ¿ */
- bit_position = y%4;
- color_code<<=2*(3-bit_position);
- bit_mask.i>>=2*bit_position;
-
- /* »«¿ß¬ íá⌐Γá ñ½∩ ¬«ααÑ¬Γ¿α«ó¬¿ ó ó¿ñÑ«»á¼∩Γ¿ */
- index = x*40 +(y >> 2);
- if(x % 2) index += 8152; /* Ñß½¿ ñ«»«½¡¿Γѽ∞¡«
- ¿ß»«½∞º«óá½ß∩ 2-⌐ ßÑú¼Ñ¡Γ
- »á¼∩Γ¿ */
-
- /* ºá»¿ß∞ µóÑΓá */
- if(!xor) { /* αѪ¿¼ »ÑαѺỿ߿ */
- t = *(ptr+index) & bit_mask.c[0];
- *(ptr+index) = t | color_code;
- }
- else { /* αѪ¿¼ ºá»¿ß¿ µóÑΓá */
- t = *(ptr+index) | (char)0;
- *(ptr+index) = t ^ color_code;
- }
- }
-
-
- /* ìÑ»«ßαÑñßΓóÑ¡¡«Ñ τΓÑ¡¿Ñ íá⌐Γá ¿º ó¿ñÑ«»á¼∩Γ¿ CGA/EGA
- ó αѪ¿¼Ñ 4 */
- unsigned char read_point(x, y)
- int x, y;
- {
- union mask {
- char c[2];
- int i;
- } bit_mask;
- int i, index, bit_position;
- unsigned char t;
- char xor; /* xor - µóÑΓ ¿º«íαáªÑ¡¿∩ ºá»¿ßδóáÑΓß∩ ¿½¿
- »ÑαѺỿßδóáÑΓß∩ */
- char far *ptr = (char far *) 0xB8000000; /* ô¬áºáΓѽ∞
- CGA »á¼∩Γ¿ */
- bit_mask.i=0xFF3F; /* 11111111 00111111 ó ñó«¿τ¡«¼ ¬«ñÑ */
-
- /* »α«óÑα¬á º¡áτÑ¡¿⌐ ñ½∩ 4 αѪ¿¼á */
- if(x<0 || x>199 || y<0 || y>319) return;
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá IX -- 38 --
-
-
- /* πßΓá¡«ó¬á ¼á߬¿ í¿Γá ¿ ¬«ñá µóÑΓá ñ½∩ »αáó«⌐ ∩τÑ⌐¬¿
- »á¼∩Γ¿ */
- bit_position = y%4;
- bit_mask.i<<=2*(3-bit_position);
-
- /* »«¿ß¬ ¡πª¡«ú« íá⌐Γá ó ó¿ñÑ«»á¼∩Γ¿ */
- index = x*40 +(y >> 2);
- if(x % 2) index += 8152; /* Ñß½¿ ñ«»«½¡¿Γѽ∞¡«
- ¿ß»«½∞º«óá½ß∩ 2-⌐ í½«¬
- »á¼∩Γ¿ */
-
- /* τΓÑ¡¿Ñ µóÑΓá */
- t = *(ptr+index) & bit_mask.c[0];
- t >>=2*(3-bit_position);
- return t;
- }
-
-
-
- /* ß«σαá¡Ñ¡¿Ñ ó¿ñÑ« ¿º«íαáªÑ¡¿∩ ¡á φ¬αá¡Ñ */
- void save_pic()
- {
- char fname[80];
- FILE *fp;
- register int i, j;
- char far *ptr = (char far *) 0xB8000000; /* ô¬áºáΓѽ∞
- CGA »á¼∩Γ¿ */
- char far *temp;
- unsigned char buf[14][80]; /* íπΣÑα ß«ñÑন¼«ú« φ¬αá¡á */
-
-
- temp = ptr;
- /* ß«σαá¡Ñ¡¿Ñ óÑασ¡Ñ⌐ τáßΓ¿ ΓѬπΘÑú« φ¬αá¡á */
- for(i=0; i<14; i++)
- for(j=0; j<80; j+=2) {
- buf[i][j] = *temp; /* τÑΓ¡δ⌐ íá⌐Γ */
- buf[i][j+1] = *(temp+8152); /* ¡ÑτÑΓ¡δ⌐ íá⌐Γ */
- *temp = 0; *(temp+8152) = 0; /* «τ¿ßΓ¬á óÑασ¡Ñ⌐
- τáßΓ¿ φ¬αá¡á */
- temp++;
- }
-
- goto_xy(0, 0);
- printf("ê¼∩ Σá⌐½á : ");
- gets(fname);
- if(!(fp=fopen(fname, "wb"))) {
- printf("öá⌐½ ¡Ñ ¼«ªÑΓ íδΓ∞ «Γ¬αδΓ\n");
- return;
- }
-
- temp = ptr;
- /* ó«ßßΓá¡«ó½Ñ¡¿Ñ ¿º«íαáªÑ¡¿∩ óÑασ¡Ñ⌐ τáßΓ¿ φ¬αá¡á */
- for(i=0; i<14; i++)
- for(j=0; j<80; j+=2) {
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá IX -- 39 --
-
-
- *temp = buf[i][j];
- *(temp+8152) = buf[i][j+1];
- temp++;
- }
-
- /* ºá»¿ß∞ ¿º«íαáªÑ¡¿∩ ó Σá⌐½ */
- for(i=0; i<8152; i++) {
- putc(*ptr, fp); /* τÑΓ¡δ⌐ íá⌐Γ */
- putc(*(ptr+8152), fp); /* ¡ÑτÑΓ¡δ⌐ íá⌐Γ */
- ptr++;
- }
- fclose(fp);
- }
-
-
- /* ºáúαπº¬á ó »á¼∩Γ∞ ¿º«íαáªÑ¡¿∩ ¿º Σá⌐½á */
- void load_pic()
- {
- char fname[80];
- FILE *fp;
- register int i, j;
- char far *ptr = (char far *) 0xB8000000; /* ô¬áºáΓѽ∞
- CGA »á¼∩Γ¿ */
- char far *temp;
- unsigned char buf[14][80]; /* íπΣÑα ß«ñÑন¼«ú« φ¬αá¡á */
-
-
- temp = ptr;
- /* ß«σαá¡Ñ¡¿Ñ óÑασ¡Ñ⌐ τáßΓ¿ ΓѬπΘÑú« φ¬αá¡á */
- for(i=0; i<14; i++)
- for(j=0; j<80; j+=2) {
- buf[i][j] = *temp; /* τÑΓ¡δ⌐ íá⌐Γ */
- buf[i][j+1] = *(temp+8152); /* ¡ÑτÑΓ¡δ⌐ íá⌐Γ */
- *temp = 0; *(temp+8152) = 0; /* «τ¿ßΓ¬á óÑασ¡Ñ⌐
- τáßΓ¿ φ¬αá¡á */
- temp++;
- }
-
- goto_xy(0, 0);
- printf("ê¼∩ Σá⌐½á : ");
- gets(fname);
- if(!(fp=fopen(fname, "rb"))) {
- goto_xy(0, 0);
- printf("öá⌐½ ¡Ñ ¼«ªÑΓ íδΓ∞ «Γ¬αδΓ\n");
- temp = ptr;
- /* ó«ßßΓá¡«ó½Ñ¡¿Ñ ¿º«íαáªÑ¡¿∩ óÑασ¡Ñ⌐ τáßΓ¿ φ¬αá¡á */
- for(i=0; i<14; i++)
- for(j=0; j<80; j+=2) {
- *temp = buf[i][j];
- *(temp+8152) = buf[i][j+1];
- temp++;
- }
- return;
- }
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá IX -- 40 --
-
-
-
- /* çáúαπº¬á ¿º«íαáªÑ¡¿∩ ¿º Σá⌐½á */
- for(i=0; i<8152; i++) {
- *ptr = getc(fp); /* τÑΓ¡δ⌐ íá⌐Γ */
- *(ptr+8152) = getc(fp); /* ¡ÑτÑΓ¡δ⌐ íá⌐Γ */
- ptr++;
- }
- fclose(fp);
- }
-
-
- /* ÅÑαѼÑΘÑ¡¿Ñ ¬παß«αá ó ߻ѵ¿Σ¿µ¿α«óá¡¡πε »«º¿µ¿ε */
- void goto_xy(x, y)
- int x, y;
- {
- union REGS r;
-
- r.h.ah=2; /* Σπ¡¬µ¿∩ áñαÑßᵿ¿ ¬παß«αá */
- r.h.dl = y; /* ¬««αñ¿¡áΓδ ßΓ«½íµá */
- r.h.dh = x; /* ¬««αñ¿¡áΓδ ßΓ᫬¿ */
- r.h.bh = 0; /* ó¿ñÑ«ßΓαá¡¿µá */
- int86(0x10, &r, &r);
- }
-
-
-
- /* ÅÑαѼÑΘÑ¡¿Ñ «í½áßΓ¿ ó ñαπú«Ñ ¼ÑßΓ« */
- void move(startx, starty, endx, endy, x, y)
- int startx, starty; /* óÑασ¡∩∩ ½Ñóá∩ ¬««αñ¿¡áΓá */
- int endx, endy; /* ¡¿ª¡∩∩ »αáóá∩ ¬««αñ¿¡áΓá ¼ÑßΓá, ¬πñá íπñÑΓ
- »ÑαѼÑΘÑ¡á «í½áßΓ∞ */
- int x, y; /* óÑασ¡∩∩ ½Ñóá∩ ¬««αñ¿¡áΓá «í½áßΓ¿, «Γ¬πñá íπñÑΓ
- »ÑαѼÑΘÑ¡« ¿º«íαáªÑ¡¿Ñ*/
- {
- int i, j;
- unsigned char c;
-
- for(; startx<=endx; startx++, endx++)
- for(i=starty, j=y; i<=endy; i++, j++) {
- c = read_point(startx, i); /* τΓÑ¡¿Ñ Γ«τ¬¿ */
- mempoint(startx, i, 0); /* ßΓ¿αá¡¿Ñ »αÑñδñπΘÑú«
- ¿º«íαáªÑ¡¿∩ */
- mempoint(x, j, c); /* ºá»¿ß∞ Ñú« ó ¡«ó«Ñ ¼ÑßΓ« */
- }
- }
-
-
-
- /* è«»¿α«óáΓ∞ «í½áßΓ∞ ó ñαπú«Ñ ¼ÑßΓ« */
- void copy (startx, starty, endx, endy, x, y)
- int startx, starty; /* óÑασ¡∩∩ ½Ñóá∩ ¬««αñ¿¡áΓá */
- int endx, endy; /* ¡¿ª¡∩∩ »αáóá∩ ¬««αñ¿¡áΓá ¼ÑßΓá, ¬πñá íπñÑΓ
- ߬«»¿α«óá¡á «í½áßΓ∞ */
- int x, y; /* óÑασ¡∩∩ ½Ñóá∩ ¬««αñ¿¡áΓá «í½áßΓ¿, «Γ¬πñá íπñÑΓ
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá IX -- 41 --
-
-
- »ÑαѼÑΘÑ¡« ¿º«íαáªÑ¡¿Ñ */
- {
- int i, j;
- unsigned char c;
-
- for(; startx<=endx; startx++, endx++)
- for(i=starty, j=y; i<=endy; i++, j++) {
- c = read_point(startx, i); /* τΓÑ¡¿Ñ Γ«τ¬¿ */
- mempoint(x, j, c); /* ºá»¿ß∞ ÑÑ ó ¡«ó«Ñ ¼ÑßΓ« */
- }
- }
-
-
-
- /* éαáΘÑ¡¿Ñ Γ«τ¬¿ «Γ¡«ß¿Γѽ∞¡« ߻ѵ¿Σ¿µ¿α«óá¡¡«⌐ »«½∞º«óáΓѽѼ
- ¡áτá½∞¡«⌐ Γ«τ¬¿ x_org ¿ y_org ¡á πú«½ theta */
-
- void rotate_point(theta, x, y, x_org, y_org)
- double theta, *x, *y;
- int x_org, y_org;
- {
- double tx, ty;
-
- /* ¡«α¼á½¿ºáµ¿∩ ¬««αñ¿¡áΓ σ ¿ π ¿ßσ«ñ¡«⌐ Γ«τ¬¿ */
- tx = *x - x_org;
- ty = *y - y_org;
-
- /* óαáΘÑ¡¿Ñ */
- *x = tx * cos(theta) - ty * sin(theta);
- *y = tx * sin(theta) + ty * cos(theta);
-
- /* ó«ºóαáΓ º¡áτÑ¡¿⌐ ¬««αñ¿¡áΓ */
- *x += x_org;
- *y += y_org;
- }
-
- /* éαáΘÑ¡¿Ñ ߻ѵ¿Σ¿µ¿α«óá¡¡«ú« «íΩѬΓá */
- void rotate_object(ob, theta, x, y, sides)
- double ob[][4]; /* «»αÑñѽѡ¿Ñ «íΩѬΓá */
- double theta; /* πú«½ »«ó«α«Γá ó αáñ¿á¡áσ */
- int x, y; /* µÑ¡Γα óαáΘÑ¡¿∩ */
- int sides;
- {
- register int i, j;
- double tempx, tempy; /* φΓ« óß»«¼«úáΓѽ∞¡δÑ »ÑαѼѡ¡δÑ,
- ¿ß»«½∞ºπѼδÑ »α¿ »αÑ«íαẫóá¡¿¿ Γ¿»«ó */
- char ch;
-
- for(;;){
- ch = getch(); /* »α«ß¼áΓα¿óáÑΓß∩, Ñß½¿ π¬áºδóáÑΓß∩
- ¡á»αáó½Ñ¡¿Ñ óαáΦÑ¡¿∩ */
- switch(tolower(ch)) {
- case 'l': /* óαáΘÑ¡¿Ñ »α«Γ¿ó τáß«ó«⌐ ßΓαѽ¬¿ */
- theta = theta < 0 ? -theta : theta;
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá IX -- 42 --
-
-
- break;
- case 'r': /* óαáΘÑ¡¿Ñ »« τáß«ó«⌐ ßΓαѽ¬Ñ */
- theta = theta > 0 ? -theta : theta;
- break;
- default: return;
- }
-
- for(j=0; j<sides; j++) {
- /* ßΓ¿αá¡¿Ñ »αÑñδñπΘÑ⌐ ½¿¡¿¿ */
- line((int) ob[j][0], (int) ob[j][1],
- (int) ob[j][2], (int) ob[j][3], 0);
-
- rotate_point(theta, &ob[j][0], &ob[j][1], x, y);
-
- rotate_point(theta, &ob[j][2], &ob[j][3], x, y);
-
- line((int) ob[j][0], (int) ob[j][1],
- (int) ob[j][2], (int) ob[j][3], 2);
- }
- }
- }
-
-
- /* «Γ«íαáªÑ¡¿Ñ «íΩѬΓá */
- void display_object(ob, sides)
- double ob[][4];
- int sides;
- {
- register int i;
-
- for(i=0; i<sides; i++)
- line((int) ob[i][0], (int) ob[i][1],
- (int) ob[i][2], (int) ob[i][3], 2);
- }
-
- /* Ä»αÑñѽѡ¿Ñ «íΩѬΓá »« Ñú« úáíáα¿Γ¡δ¼ Γ«τ¬á¼ ß »«¼«Θ∞ε
- ¬½áó¿áΓπαδ ¿½¿ "¼δΦ¿" */
- define_object(ob, x, y)
- double ob[][4];
- int x, y;
- {
- union k{
- char c[2];
- int i;
- } key;
- register int i, j;
- char far *ptr = (char far *) 0xB8000000; /* ô¬áºáΓѽ∞ ¡á
- CGA-»á¼∩Γ∞ */
- char far *temp;
- unsigned char buf[14][80];
- int sides=0;
- int deltax, deltay, oldx, oldy;
-
- temp = ptr;
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá IX -- 43 --
-
-
- /* ß«σαá¡Ñ¡¿Ñ óÑασ¡Ñ⌐ τáßΓ¿ ΓѬπΘÑú« φ¬αá¡á */
- for(i=0; i<14; i++)
- for(j=0; j<80; j+=2) {
- buf[i][j] = *temp; /* τÑΓ¡δ⌐ íá⌐Γ */
- buf[i][j+1] = *(temp+8152); /* ¡ÑτÑΓ¡δ⌐ íá⌐Γ */
- *temp = 0; *(temp+8152) = 0; /* «τ¿ßΓ¬á óÑασ¡Ñ⌐
- τáßΓ¿ φ¬αá¡á */
- temp++;
- }
-
- i = 0;
- key.i = 0;
- xhairs(x, y);
- do {
- goto_xy(0, 0);
- printf("Ä»αÑñѽ¿ΓÑ ßΓ«α«¡π %d", sides+1);
- if(i==0) printf("ô¬áª¿ΓÑ »Ñαóπε úáíáα¿Γ¡πε Γ«τ¬π");
- else printf("ô¬áª¿ΓÑ óΓ«απε úáíáα¿Γ¡πε Γ«τ¬π");
-
- do {
- /**************** ä«íáó«τ¡á∩ τáßΓ∞ ñ½∩ ¼δΦ¿ *******************/
- /* Åα«ß¼áΓα¿óáÑΓß∩ Ñß½¿ "¼δΦ∞" »ÑαѼÑΘáÑΓß∩ */
- mouse_motion(&deltax, &deltay);
- /* ¿ß»«½∞ºπ⌐ΓÑ ½Ñóπε ¬½áó¿Φπ ñ½∩ «»αÑñѽѡ¿∩ Γ«τ¬¿*/
- if(leftb_pressed()) {
- xhairs(x, y); /* ßΓ¿αá¡¿Ñ úαáΣ¿τÑ߬«ú« ¬παß«αá */
- /* ºá»«¼¿¡á¡¿Ñ ¬««αñ¿¡áΓ Γ«τ¬¿ */
- ob[sides][i++] = (double) x;
- ob[sides][i++] = (double) y;
- if(i==4) {
- i = 0;
- sides++;
- }
- break;
- }
- } while(!kbhit() && !deltax && ! deltay);
- if(leftb_pressed()) wait_on(LEFTB);
-
- if(deltax || deltay) {
- /* Ñß½¿ "¼δΦ∞" »ÑαѼÑßΓ¿½áß∞, Γ« »ÑαÑßτÑΓ ¬««αñ¿¡áΓ*/
- oldx = x; oldy = y;
- mouse_position(&y, &x);
- y = y / 2; /* ¡«α¼á½¿ºáµ¿∩ ¬««αñ¿¡áΓ ó¿αΓπá½∞¡«ú«
- φ¬αá¡á*/
- /* ßΓ¿αá¡¿Ñ úαáΣ¿τÑ߬«ú« ¬παß«αá */
- xhairs(oldx, oldy);
- }
- /*********** 諡ѵ ñ«íáó«τ¡«⌐ τáßΓ¿ ñ½∩ "¼δΦ¿" *****************/
-
- else if(kbhit()) {
- key.i = bioskey(0);
- /* ¿º«íαáªÑ¡¿Ñ úαáΣ¿τÑ߬«ú« ¬παß«αá */
- xhairs(x, y);
- if(key.c[0]==13) {
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá IX -- 44 --
-
-
- /* ¿ß»«½∞ºπ⌐ΓÑ <ééÄä> ñ½∩ «»αÑñѽѡ¿∩ Γ«τ¬¿*/
- ob[sides][i++] = (double) x;
- ob[sides][i++] = (double) y;
- if(i==4) {
- i = 0;
- sides++;
- }
- }
-
- /* Ñß½¿ ¬½áó¿Φ¿ π»αáó½Ñ¡¿∩ ¬παß«α«¼, Γ«
- »ÑαѼÑΘÑ¡¿Ñ úαáΣ¿τÑ߬«ú« ¬παß«αá */
- if(!key.c[0]) switch(key.c[1]) {
- case 75: /* ó½Ñó« */
- y-=1;
- break;
- case 77: /* ó»αáó« */
- y+=1;
- break;
- case 72: /* óóÑασ */
- x-=1;
- break;
- case 80: /* 󡿺 */
- x+=1;
- break;
- case 71: /* ó½Ñó« óóÑασ */
- x-=1; y-=1;
- break;
- case 73: /* ó»αáó« óóÑασ */
- x-=1; y+=1;
- break;
- case 79: /* ó½Ñó« 󡿺 */
- x+=1; y-=1;
- break;
- case 81: /* ó»αáó« 󡿺 */
- x+=1; y+=1;
- break;
- }
- }
- if(key.c[1] != 59) xhairs(x, y);
- } while(key.c[1] != 59); /* ¡áª¼¿ΓÑ F1 ñ½∩ «ßΓá¡«ó¬¿ */
-
- temp = ptr;
- /* ó«ßßΓá¡«ó½Ñ¡¿Ñ ¿º«íαáªÑ¡¿∩ ó óÑασ¡Ñ⌐ τáßΓ¿ φ¬αá¡á */
- for(i=0; i<14; i++)
- for(j=0; j<80; j+=2) {
- *temp = buf[i][j];
- *(temp+8152) = buf[i][j+1];
- temp++;
- }
- return sides;
- }
-
- /* ÄΓ«íαáªÑ¡¿Ñ ¼Ñ¡ε */
- menu()
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá IX -- 45 --
-
-
- {
- register int i, j;
- char far *ptr = (char far *) 0xB8000000; /* ô¬áºáΓѽ∞ ¡á
- CGA-»á¼∩Γ∞ */
- char far *temp;
- unsigned char buf[14][80]; /* ñ½∩ σαá¡Ñ¡¿∩ ß«ñÑন¼«ú«
- φ¬αá¡á */
- int x, y, choice;
- char items[][20] = {
- "BOX",
- "CIRCLE",
- "LINE",
- "FILL BOX",
- "FILL CIRCLE"
- };
-
- temp = ptr;
- /* ß«σαá¡Ñ¡¿Ñ óÑασ¡Ñ⌐ τáßΓ¿ ΓѬπΘÑú« φ¬αá¡á */
- for(i=0; i<14; i++)
- for(j=0; j<80; j+=2) {
- buf[i][j] = *temp; /* τÑΓ¡δ⌐ íá⌐Γ */
- buf[i][j+1] = *(temp+8152); /* ¡ÑτÑΓ¡δ⌐ íá⌐Γ */
- *temp = 0; *(temp+8152) = 0; /* «τ¿ßΓ¬á óÑασ¡Ñ⌐
- τáßΓ¿ φ¬αá¡á */
- temp++;
- }
-
- goto_xy(0, 0);
- /* «ª¿ñá¡¿Ñ, ¬«Γ«α«Ñ íπñÑΓ »αÑαóá¡« ó αѺπ½∞ΓáΓÑ ¡áªáΓ¿∩ ¡á
- ¬½áó¿Φπ */
- while(rightb_pressed() || leftb_pressed());
-
- cursor_on();
-
- choice = mouse_menu(5, items, 0, 0);
-
- cursor_off();
- temp = ptr;
- /* ó«ßßΓá¡«ó½Ñ¡¿Ñ ¿º«íαáªÑ¡¿∩ óÑασ¡Ñ⌐ τáßΓ¿ φ¬αá¡á */
- for(i=0; i<14; i++)
- for(j=0; j<80; j+=2) {
- *temp = buf[i][j];
- *(temp+8152) = buf[i][j+1];
- temp++;
- }
- return choice;
- }
-
-
- /**********************************************************/
- /* öπ¡¬µ¿¿, «íÑß»Ñτ¿óáεΘ¿Ñ ¿¡ΓÑαΣÑ⌐ß ß "¼δΦ∞ε" */
- /**********************************************************/
-
- /* 鬽ετÑ¡¿Ñ ¬παß«αá "¼δΦ¿" */
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá IX -- 46 --
-
-
- void cursor_on()
- {
- int fnum;
-
- fnum = 1; /* «Γ«íαếΓ∞ ¬παß«α */
- cmouses( &fnum, &fnum, &fnum, &fnum);
- }
-
-
- /* é䬽ετÑ¡¿Ñ ¬παß«αá "¼δΦ¿" */
- void cursor_off()
- {
- int fnum;
-
- fnum = 2; /* ßΓÑαÑΓ∞ ¬παß«α */
- cmouses( &fnum, &fnum, &fnum, &fnum);
- }
-
-
-
- /* 髺óαáΘáÑΓ º¡áτÑ¡¿Ñ "¿ßΓ¿¡á", Ñß½¿ ¡áªáΓá »αáóá∩ ¬½áó¿Φá,
- ¿ "½«ª∞" ó »α«Γ¿ó¡«¼ ß½πτáÑ */
-
- rightb_pressed()
- {
- int fnum, arg2, arg3, arg4;
-
- fnum = 3; /* ùΓÑ¡¿Ñ »«º¿µ¿¿ ¿ ßΓáΓπßá ¬½áó¿Φ¿ */
- cmouses( &fnum, &arg2, &arg3, &arg4);
- return arg2 & 2;
- }
-
-
-
- /* 髺óαáΘáÑΓ º¡áτÑ¡¿Ñ "¿ßΓ¿¡á", Ñß½¿ ¡áªáΓá ½Ñóá∩ ¬½áó¿Φá,
- ¿ "½«ª∞" ó »α«Γ¿ó¡«¼ ß½πτáÑ */
-
- leftb_pressed()
- {
- int fnum, arg2, arg3, arg4;
-
- fnum = 3; /* ùΓÑ¡¿Ñ »«º¿µ¿¿ ¿ ßΓáΓπßá ¬½áó¿Φ¿ */
- cmouses( &fnum, &arg2, &arg3, &arg4);
- return arg2 & 1;
- }
-
-
- /* ôßΓá¡«ó¿Γ∞ ¬««αñ¿¡áΓδ ¬παß«αá "¼δΦ¿" */
- void set_mouse_position(x, y)
- int x, y;
- {
- int fnum, arg2;
-
- fnum = 4; /* πßΓá¡«ó¬á »«º¿µ¿¿ */
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá IX -- 47 --
-
-
- cmouses(&fnum, &arg2, &x, &y);
- }
-
- /* 髺óαáΘáÑΓ ¬««αñ¿¡áΓδ ¬παß«αá "¼δΦ¿" */
- void mouse_position(x, y)
- int *x, *y;
- {
- int fnum, arg2, arg3, arg4;
-
- fnum = 3; /* »«½πτ¿Γ∞ »«º¿µ¿ε ¿ ßΓáΓπß ¬½áó¿Φ¿ */
- cmouses( &fnum, &arg2, &arg3, &arg4);
- *x = arg3;
- *y = arg4;
- }
-
- /* 髺óαáΘáÑΓ ¡á»αáó½Ñ¡¿Ñ ñó¿ªÑ¡¿∩ */
- void mouse_motion(deltax, deltay)
- char *deltax, *deltay;
- {
- int fnum, arg2, arg3, arg4;
-
- fnum = 11; /* »«½πτ¿Γ∞ ¡á»αáó½Ñ¡¿Ñ ñó¿ªÑ¡¿∩ */
- cmouses( &fnum, &arg2, &arg3, &arg4);
- if(arg3>0) *deltax = RIGHT;
- else if(arg3<0) *deltax = LEFT;
- else *deltax = NOT_MOVED;
-
- if(arg4>0) *deltay = DOWN;
- else if(arg4<0) *deltay = UP;
- else *deltay = NOT_MOVED;
- }
-
- /* ÄΓ«íαáªáÑΓ «ñ¡«ßΓα«τ¡«Ñ ¼Ñ¡ε ñ½∩ "¼δΦ¿" ¿ ó«ºóαáΘáÑΓ
- ¬«ñ óδíαá¡¡«ú« »«½∞º«óáΓѽѼ φ½Ñ¼Ñ¡Γá ¼Ñ¡ε */
- mouse_menu(count, item, x, y)
- int count; /* ¬«½¿τÑßΓó« φ½Ñ¼Ñ¡Γ«ó ¼Ñ¡ε */
- char item[][20]; /* φ½Ñ¼Ñ¡Γδ ¼Ñ¡ε */
- int x, y; /* »«º¿µ¿¿ «Γ«íαáªÑ¡¿∩ */
- {
- int i, len[MENU_MAX][2], t;
- int mousex, mousey;
-
- goto_xy(x, y);
- t = 0;
- for(i=0; i<count; i++) {
- printf("%s ", item[i]);
- len[i][0] = t;
- /* ¬áªñδ⌐ ß¿¼ó«½ ¿¼ÑÑΓ Φ¿α¿¡π ó 16 Γ«τѬ αáßΓαá */
- len[i][1] = t + strlen(item[i])*16;
- t = len[i][1] + 32; /* ñ«íáó½∩ÑΓß∩ ñóá »α«íÑ½á ¼Ñªñπ
- φ½Ñ¼Ñ¡ΓἿ ¼Ñ¡ε */
- }
-
- /* «ª¿ñá¡¿Ñ óδí«αá »«½∞º«óáΓѽѼ φ½Ñ¼Ñ¡Γá ¼Ñ¡ε */
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá IX -- 48 --
-
-
- do {
- if(rightb_pressed() || leftb_pressed()) break;
- } while(!kbhit());
- /* «ª¿ñá¡¿Ñ ¡áªáΓ¿∩ ¬½áó¿Φ¿ */
- while(rightb_pressed() || leftb_pressed());
-
- /* »«½πτ¿Γ∞ ΓѬπΘπε »«º¿µ¿ε ¬παß«αá "¼δΦ¿" */
- mouse_position(&mousex, &mousey);
-
- /* á¡á½¿º¿απÑΓß∩, ¡áσ«ñ¿Γß∩ ½¿ ¬παß«α ó »αÑñѽáσ ¼Ñ¡ε */
- if(mousey>=0 && mousey<8) /* ß¿¼ó«½ ¿¼ÑÑΓ óδß«Γπ
- 8 Γ«τѬ αáßΓαá */
- for(i=0; i<count; i++) {
- if(mousex>len[i][0] && mousex<len[i][1])
- return i;
- }
- return i;
- }
-
-
- /* 髺óαáΘáÑΓ 1, Ñß½¿ ߻ѵ¿Σ¿µ¿α«óá¡¡á∩ ¬½áó¿Φá ¡Ñ ¡áªáΓá */
- void wait_on(button)
- int button;
- {
- if(button== LEFTB)
- while(leftb_pressed());
- else
- while(rightb_pressed());
- }
-
-
-
- /* ôßΓá¡«ó¬á "¼δΦ¿" ó ¿ßσ«ñ¡«Ñ ß«ßΓ«∩¡¿Ñ */
- void mouse_reset()
- {
- int fnum, arg2, arg3, arg4;
-
- fnum = 0; /* ôßΓá¡«ó¬á "¼δΦ¿" ó ¿ßσ«ñ¡«Ñ ß«ßΓ«∩¡¿Ñ */
- cmouses( &fnum, &arg2, &arg3, &arg4);
- if(fnum!=-1) {
- printf("Ç»»áαáΓ¡δÑ ¿½¿ »α«úαá¼¼¡δÑ ßαÑñßΓóá »«ññÑ᪬¿ ");
- printf("'¼δΦ¿' ¡Ñ ¿¡ßΓ὿α«óá¡δ");
- exit(1);
- }
- if(arg2!=2) {
- printf("ÉáºαÑΦÑ¡« ¿ß»«½∞º«óá¡¿Ñ Γ«½∞¬« ñóπσ¬½áó¿Φ¡«⌐ '¼δΦ¿'");
- exit(1);
- }
- }
-
-
- Åα«úαá¼¼á α¿ß«óá¡¿∩, »αÑñ½«ªÑ¡¡á∩ óá¼ ó φΓ«⌐ ú½áóÑ, ñ«ó«½∞¡«
- πñ«í¡á ó «íαáΘÑ¡¿¿, Γᬠ¬á¬ »«ºó«½∩ÑΓ óá¼ α¿ß«óáΓ∞ »α«¿ºó«½∞¡δÑ
- α¿ßπ¡¬¿ (ÑßΓÑßΓóÑ¡¡« ¿ß»«½∞ºπ∩ ßΓá¡ñáαΓ¡δÑ ½¿¡¿¿), ñó¿úá∩ß∞ »α¿
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá IX -- 49 --
-
-
- φΓ«¼ ó ½εíδσ »α«¿ºó«½∞¡δσ ¡á»αáó½Ñ¡¿∩σ »« φ¬αá¡π. ìá»α¿¼Ñα,
- α¿ßπ¡«¬ 9.1 íδ½ ¡áα¿ß«óá¡ ¡á φ¬αá¡Ñ ñ¿ß»½Ñ∩ íπ¬óá½∞¡« ºá
- ¡Ñ߬«½∞¬« ¼¿¡πΓ. É¿ß. 9.2 ¿½½εßΓα¿απÑΓ, τΓ« ¿º«íαáªáÑΓß∩ ¡á
- φ¬αá¡Ñ »α¿ ó맮óÑ ¼Ñ¡ε "¼δΦ¿" (Σ«α¼á ¬παß«αá - ßΓαѽ¬á »α¿¡∩Γá »«
- π¼«½τá¡¿ε).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó
- â½áóá IX -- 50 --
-
-
- ìàèÄÆÄÉ¢à éÄçîÄåìÄæÆê ÉÇæÿêÉàìêƒ é¢ÅÄïìƒàî¢ò
- öôìèûêë ÅÉÄâÉÇîî¢
- -----------------------------------------------------------------
-
- é«-»Ñαóδσ, óἠ󫺼«ª¡« »«¡áñ«í¿Γß∩ ¼«ñ¿Σ¿µ¿α«óáΓ∞ Σπ¡¬µ¿ε
- mouse_menu() ß ΓѼ, τΓ«íδ 󫺼«ª¡« í佫 «íαáíáΓδóáΓ∞ ¼Ñ¡ε,
- ºá¡¿¼áεΘÑÑ í«½ÑÑ «ñ¡«⌐ ßΓ᫬¿ φ¬αá¡á. öá¬Γ¿τÑ߬¿ ñ½∩ αÑ὿ºáµ¿¿
- φΓ«ú« ¡á¿í«½ÑÑ »α¿Ñ¼½Ñ¼δ¼ »πΓѼ íπñÑΓ «íΩÑñ¿¡Ñ¡¿Ñ Σπ¡¬µ¿¿
- «íαáí«Γ¬¿ ¼Ñ¡ε "¼δΦ¿" ß Σπ¡¬µ¿∩¼¿ «íαáí«Γ¬¿ "óß»½δóáεΘÑú«" ¼Ñ¡ε,
- αáßß¼«ΓαÑ¡¡δ¼¿ ó ú½áóÑ 1.
-
- àß½¿ óδ »α¿ó䬽¿ αáí«ΓáΓ∞ ß ¿¬«¡¡δ¼ ¿¡ΓÑαΣÑ⌐ß«¼, Γ« óδ, ó
- »α¿¡µ¿»Ñ, ¼«ªÑΓÑ ¼«ñ¿Σ¿µ¿α«óáΓ∞ Σπ¡¬µ¿¿ «íαáí«Γ¬¿ ¼Ñ¡ε "¼δΦ¿"
- Γᬿ¼ «íαẫ¼, τΓ«íδ ó¼ÑßΓ« ß½«ó ó ¼Ñ¡ε Σ¿úπα¿α«ó὿ ¡á
- ß««ΓóÑΓßΓóπεΘ¿σ ¼ÑßΓáσ »¿¬Γ«úαá¼¼δ, «í«º¡áτáεΘ¿Ñ Γ«Γ ¿½¿ ¿¡«⌐
- φ½Ñ¼Ñ¡Γ ¼Ñ¡ε. 髺¼«ª¡« Γá¬ªÑ ¼«ñ¿Σ¿µ¿α«óáΓ∞ Σπ¡¬µ¿¿ Γᬿ¼
- «íαẫ¼, τΓ«íδ «íÑß»Ñτ¿Γ∞ »«½¿φ¬αá¡δ⌐ αѪ¿¼ αáí«Γδ "¼δΦ¿", á
- Γá¬ªÑ ¬«»¿α«óá¡¿Ñ (á ¡Ñ »ÑαѼÑΘÑ¡¿Ñ) τáßΓ¿ φ¬αá¡á (¿½¿
- ¿º«íαáªÑ¡¿∩) ß «ñ¡«ú« ¼ÑßΓá ó ñαπú«Ñ.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "C" ñ½∩ »α«ΣÑßß¿«¡á½∞¡δσ »α«úαá¼¼¿ßΓ«ó