.. title:: Pythonã§å¿ƒç†å®Ÿé¨“ - 例題8-1 例題8-1:覗ã窓をã‚ã‘ã‚‹ ========================== **B:** … **A:** ã©ã†ã—ãŸã€Bå›ã€‚難ã—ã„顔をã—ã¦ã€‚ **B:** ã„ã‚„ã€ç´°ã‹ã„作æ¥ã‚’ã—ã¦ã„ãŸã‚‰è‚©ãŒã“ã£ã¡ã‚ƒã£ã¦â€¦ã€‚ **A:** ç´°ã‹ã„作æ¥ï¼Ÿ **B:** ã„ã‚„ã€æœ¬ã§èªã‚“ã 「窓å•題ã€ã£ã¦ã„ã†ã®ã‚’見ã¦ã¿ãŸã„ã¨æ€ã£ã¦ã€ã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³ã‚’作æˆã—ã¦ã„ã‚‹ã‚“ã§ã™ãŒã€ä¸€ã‚³ãƒžãšã¤ç·šã‚’ãšã‚‰ã—ã¦ã„ãã®ãŒå¤§å¤‰ã§ã€‚ .. figure:: img/08-1-01.png **A:** ãˆãƒ¼ã€‚ãã‚“ãªé¢å€’ãã•ã„ã“ã¨ã‚„ã£ã¦ã‚“ã®ã‹ã€‚pythonã§ã‚„りゃã„ã„ã˜ã‚ƒã‚“。 **B:** ã§ã‚‚ã€ä¸¸ã„ç©´ãŒç©ºã„ãŸåˆºæ¿€ã£ã¦VisionEgg.MoreStimuliã«ã¯ã‚りã¾ã›ã‚“よã。四角ã„ç©´ãªã‚‰é•·æ–¹å½¢ã‚’組ã¿åˆã‚ã›ã¦ä½œã‚Œã¾ã™ã‘ã©ã€ä¸¸ã„ç©´ã£ã¦ä½œã‚Œãªã„ã‚“ã˜ã‚ƒãªã„ã§ã™ã‹ã€‚ **A:** 例題6ã§è¨€ã£ãŸã ã‚。複雑ãªåˆºæ¿€ã‚’作るã¨ãã«ã¯Textureを使ãˆã°ã„ã„ã‚“ã よ。穴ã®éƒ¨åˆ†ãŒé€æ˜Žãªãƒ†ã‚¯ã‚¹ãƒãƒ£ã‚’作れã°ã„ã„。 **B:** 逿˜Žãªãƒ†ã‚¯ã‚¹ãƒãƒ£ï¼Ÿ **A:** ん? Bå›ã¯HTMLを使ã£ãŸwebページã®ä½œæˆã¯ã‚る程度知ã£ã¦ã‚‹ã¿ãŸã„ã ã‹ã‚‰ã€GIFã‚„PNGç”»åƒã«é€æ˜Žåº¦ã‚’指定ã§ãã‚‹ã®ã¯çŸ¥ã£ã¦ã‚‹ã¨æ€ã£ã¦ã„ãŸã®ã ãŒã€‚ **B:** ã‚ã‚ã€é€éŽGIFã¨ã‹é€éŽPNGã§ã™ã。ã“ã†ã„ã†å¥´ã€‚ .. figure:: img/08-1-02.png **A:** ãã†ãã†ã€ãれã¨åŒã˜ã“ã¨ã§ã€é€æ˜Žåº¦ã‚’指定ã—ãŸãƒ†ã‚¯ã‚¹ãƒãƒ£ã‚’作ã£ã¦ã‚„れã°ã€ä¸¸ã§ã‚‚ãªã‚“ã§ã‚‚自由ã«ç©´ã‚’ã‚ã‘ã‚‹ã“ã¨ãŒã§ãる。 **B:** ã¸ã‡ã€‚ã˜ã‚ƒã‚今作ã£ã¦ãŸã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³ã®ç”»åƒã‚’ãã®ã¾ã¾èƒŒæ™¯ã‚’逿˜Žã«ã—ã¦ä¿å˜ã™ã‚Œã°å‡ºæ¥ãã†ã§ã™ã。ã˜ã‚ƒã‚早速。 .. figure:: img/08-1-03.png **A:** ãˆãˆã¨ã€ã“ã®ã‚µãƒ³ãƒ—ル画é¢ã«å‡ºã¦ã„ã‚‹ã®ã¯Windowsã®CorelDraw X3ã§ã®ä¿å˜ä¾‹ã§ã€ã‚ªãƒ–ジェクトã‹ã‚‰ãƒžã‚¹ã‚¯ã‚’作æˆã—ã¦ãƒžã‚¹ã‚¯ã‚’逿˜Žè‰²ã«æŒ‡å®šã—ã¦ã„ã¾ã™ã€‚ PNGã§ä¿å˜ã™ã‚‹å ´åˆã¯å¾Œã§å›°ã‚‹ã®ã§ã‚¤ãƒ³ã‚¿ãƒ¬ãƒ¼ã‚¹ã«ã¯ã—ãªã„ã§ãã ã•ã„ã。 **B:** Aã•ã‚“ã€èª°ã«è©±ã—ã¦ã‚‹ã‚“ã§ã™ã‹ã€‚ **A:** ã„ã‚„ã€ã¡ã‚‡ã£ã¨ãªã€‚ãã†ãã†ã€ä¸–é–“ã¯PhotoShopæ´¾ã®äººãŒå¤šã„ã‹ã‚‚知れã¾ã›ã‚“ãŒPhotoShopã¯å¤šåˆ†è†¨å¤§ãªè§£èª¬ãƒšãƒ¼ã‚¸ãŒã‚ã‚‹ã¨æ€ã†ã®ã§æ¤œç´¢ã—ã¦ãã ã•ã„ã。 GIMPã¨ã‹ä½¿ã£ã¦ã‚‹äººã¯è¨€ã‚れãªãã¦ã‚‚è‡ªåˆ†ã§æ¤œç´¢ã—ã¡ã‚ƒã†ã ã‚ã†ã‹ã‚‰ã“れã¾ãŸçœç•¥ã€‚ **B:** ã¾ãŸã„ã„ã‹ã’ã‚“ãªâ€¦ã€‚ **A:** ã„ã„ã‚“ã よ。もã£ã¨ãã¡ã‚“ã¨ã—ãŸäººãŒæ›¸ã„ãŸè§£èª¬ã‚’èªã‚“ã§ã‚‚らã£ãŸæ–¹ãŒã€‚ã•ã¦ã€ç”»åƒã¯ä¿å˜ã§ããŸã‹ã„? **B:** Aã•ã‚“ãŒã¶ã¤ã¶ã¤è¨€ã£ã¦ã‚‹é–“ã«ã¨ã£ãã«å‡ºæ¥ã¦ã„ã¾ã™ãŒã€‚ **A:** よã—。ã˜ã‚ƒã‚ãã„ã¤ã‚’èªã¿è¾¼ã‚“ã§èƒŒå¾Œã§æ£’ã‚’å‹•ã‹ã™ãƒ—ãƒã‚°ãƒ©ãƒ を書ãã‹ã€‚例題6-1ã®ãƒ—ãƒã‚°ãƒ©ãƒ をベースã«ã—ãŸã‚‰ã™ã書ã‘ã‚‹ã¨æ€ã†ã‚ˆã€‚よã„ã—ょ。 + 行番å·ãªã—ã®ã‚½ãƒ¼ã‚¹ãƒ•ァイルをダウンãƒãƒ¼ãƒ‰â†’ `08-1.py <source/08-1.py>`_ + ç”»åƒãƒ•ァイルをダウンãƒãƒ¼ãƒ‰â†’ `08-1.png <source/08-1.png>`_ .. literalinclude:: source/08-1.py :language: python :encoding: shift-jis :linenos: :lineno-match: **B:** ãšã„ã¶ã‚“ã‚ã£ã•り出æ¥ã¾ã—ãŸã。 **A:** ã ã‚。ãƒã‚¤ãƒ³ãƒˆã¯ãŸã£ãŸã²ã¨ã¤ã€‚24行目ã®VisionEgg.Textrues.TextureStimulusã«ä¸Žãˆã¦ã„ã‚‹internal_formatパラメータã 。 ã“ã“ã«Î±ãƒãƒ£ãƒ³ãƒãƒ«ã‚‚ã¡ã‚ƒã‚“ã¨è€ƒæ…®ã—ã¦ãã¨æŒ‡å®šã™ã‚Œã°ãれã ã‘ã§OK。 **B:** αãƒãƒ£ãƒ³ãƒãƒ«ï¼Ÿ ãれã«OpenGL.GLã£ã¦ã„ã†ã®ã¯â€¦ **A:** αãƒãƒ£ãƒ³ãƒãƒ«ã¨ã„ã†ã®ã¯RGBãŒèµ¤ã€ç·‘ã€é’ã®æˆåˆ†ã‚’ã‚らã‚ã™ã‚ˆã†ã«ã€å„ピクセルã®é€æ˜Žåº¦ã‚’ã‚らã‚ã™æˆåˆ†ã 。0ãªã‚‰ã°å®Œå…¨ãªé€æ˜Žã€ 最大値ãªã‚‰ã°å®Œå…¨ãªä¸é€æ˜Žã¨ãªã‚‹ã€‚ **B:** 最大値? 1.0ã§ã™ã‹ï¼Ÿ **A:** ã‚ー。VisionEggã®ä¸ã§ã¯1.0ã ãŒã€255を使ã†å ´åˆã¨ã‹ã€ã„ã‚ã„ã‚ã‚る。ãã‚Œã¯æ¬¡å›žã®ãƒã‚¿ã«ã¨ã£ã¦ãŠã“ã†ã¨æ€ã£ã¦ã„ãŸã®ã ãŒã€‚ **B:** ã‚ã€ãã†ã§ã™ã‹ã€‚ã˜ã‚ƒã‚ãã®æ™‚ã«æ”¹ã‚ã¦èžãã¾ã™ã€‚ **A:** ãã†ã—ã¦ãれ。ãれã¨ã‚ã¨OpenGL.GLã‹ã€‚ã“れã¯ã€VisionEggã®å†…部ã§ã¯OpenGLã¨ã„ã†ãƒ©ã‚¤ãƒ–ラリを使ã£ã¦ã„ã¦ã€OpenGLã®å½¢å¼ã§ç”»åƒã®ãƒ•ォーマットを 指定ã—ã¦ã‚„らã«ã‚ƒã„ã‹ã‚“ã®ã 。ã§ã€OpenGL.GLã¨ã„ã†ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã«ãã®å½¢å¼ãŒå®šç¾©ã•れã¦ã„ã‚‹ã®ã§ã€14行目ã§OpenGL.GLã‚’importã—ã¦24行目ã§GL_RGBAã¨ã„ã†å½¢å¼ã‚’指定ã—ã¦ã„る。 **B:** ä»–ã«ã©ã†ã„ã†å½¢å¼ãŒã‚ã‚‹ã‚“ã§ã™ã‹ï¼Ÿ **A:** αãƒãƒ£ãƒ³ãƒãƒ«ã‚’指定ã—ãªã„GL_RGBã¨ã‹ã ãªã€‚興味ãŒã‚れã°OpenGLã«ã¤ã„ã¦æ¤œç´¢ã—ãªã•ã„。多分心ç†å®Ÿé¨“ã§ã¯GL_RGBã¨GL_RGBAを知ã£ã¦ã„れã°å›°ã‚‹ã“ã¨ã¯ãªã„ã¯ãšã€‚ **B:** ãµã†ã‚“。 **A:** ã‚ã¨ã€æ³¨æ„ã™ã‚‹ã¹ãã¯34行目ã®ãƒªã‚¹ãƒˆã®é †ç•ªã‹ãªã€‚stimBarã‚’stimWindowã®å‰ã«æ›¸ã„ã¦ãŠã‹ãªã„ã¨ã€ä¸¸ã„窓ã®èƒŒå¾Œã‚’通ã£ã¦ãれãªã„。 ã•ã¦ã€å®Ÿè¡Œã—ã¦ã¿ã‚‹ã‹ã€‚ .. figure:: img/08-1-04.png **B:** ãŠãŠãŠã€‚一コマãšã¤ä½œã£ã¦ã„ãŸåƒ•ã®è‹¦åŠ´ã¯ä¸€ä½“…。 **A:** ã¡ãªã¿ã«24è¡Œç›®ã®æŒ‡å®šã‚’çœç•¥ã™ã‚‹ã¨ã€Î±ãƒãƒ£ãƒ³ãƒãƒ«ãŒè€ƒæ…®ã•れãªããªã£ã¦ã—ã¾ã†ã€‚ãã†ã™ã‚‹ã¨ã“ã‚“ãªé¢¨ã«ãªã£ã¦ã—ã¾ã†ã€‚ .. figure:: img/08-1-05.png **B:** ã†ã‚。ãˆãˆã£ã¨ã€ã“れã£ã¦èƒŒå¾Œã§ç·‘è‰²ã®æ£’ãŒå‹•ã„ã¦ã„ã‚‹ã‚“ã§ã™ã‚ˆã? **A:** ã¡ã‚ƒã‚“ã¨å‹•ã„ã¦ã‚‹ãžã€‚見ãˆãªã„ã‘ã©ãªã€‚ç–‘ã†ãªã‚‰27è¡Œç›®ã‚’æ›¸ãæ›ãˆã¦æ£’ã®é•·ã•ã‚’ã†ã‚“ã¨é•·ãã—ã¦ã¿ãŸã¾ãˆã€‚ã™ã出æ¥ã‚‹ã‹ã‚‰ã€‚ **B:** ã©ã‚Œã©ã‚Œâ€¦ã€‚ãŠãŠã€ç¢ºã‹ã«ã€‚ .. figure:: img/08-1-06.png **A:** 逿˜Žåº¦ã‚’指定ã™ã‚‹å¿…è¦ãŒãªã„ã¨ãã¯ã€internal_formatã¯çœç•¥ã—ã¦ã—ã¾ã£ã¦ä½•ã‚‚å•題ãªã„。ã•ã¦ã€ã“れã§Î±ãƒãƒ£ãƒ³ãƒãƒ«ã‚’指定ã—ãŸãƒ†ã‚¯ã‚¹ãƒãƒ£ã®èªã¿è¾¼ã¿ã¯OKã‹ãªã€‚ 次回ã¯ãƒ†ã‚¯ã‚¹ãƒãƒ£ã‚’ファイルã‹ã‚‰èªã¿è¾¼ã‚€ã®ã§ã¯ãªãプãƒã‚°ãƒ©ãƒ 内ã§ç›´æŽ¥ã€Œæãã€æ–¹æ³•ã«ã‚’解説ã™ã‚‹ãžã€‚ **B:** ã¸ï¼Ÿ ãã‚“ãªã“ã¨å‡ºæ¥ã‚‹ã‚“ã§ã™ã‹ï¼Ÿ **A:** ã‚‚ã¡ã‚ん。今回çœç•¥ã—ãŸÎ±ãƒãƒ£ãƒ³ãƒãƒ«ã®å€¤ã«ã¤ã„ã¦ã‚‚解説ã™ã‚‹ãžã€‚