ã¢ã©ã³ã»ã±ã¤ã®âã¡ãã»ã¼ã¸ã³ã°ã«ããããã°ã©ãã³ã°âã¨ããçæ³ã«åºã¥ãï¼éåæå¦çãªã©ããããè¶³ãã¦ããªããªãããââï¼æ¯è¼çå¿ å®ã«å®è£ ããã1970年代ã®é常ã«å¤ãSmalltalk-72ã«å®éã«è§¦ãã¦ã¿ãã·ãªã¼ãº 第2å¼¾ã§ãï¼ãªãææ°ã®Smalltalkã«ã¤ãã¦ã¯ Pharo ãªã©ã§ã楽ãã¿ãã ããï¼ï¼ã
ä»åã¯è¬è¨èªãSmalltalk-71ãã§æ¸ãããã¹ãã¼ã¹ã¦ã©ã¼ã»ã²ã¼ã ã Smalltalk-72ã«ç§»æ¤ãã¦åãããã¨ãç®æãã¾ããåå(2019å¹´)ãå«ãä»ã®è¨äºã¯ãã¡ãããâSmalltalk-72ã§éã¶OOPã®åç¹ | Advent Calendar 2023 - Qiita
ãã¼ã®æ¼ä¸ãæ¤ç¥ãã kbck ã®éè¦æ§
moveship ã®ã¨ãã«ãæ¸ãã¾ããããspaceship ã®ä»®å¼æ°ã®å®£è¨ã¨ start ã§ã®ãã®å¼åºããè¦ãã¨ããã® Smalltalk-71 ã®ã³ã¼ãã§ã¯ã¸ã§ã¤ã¹ãã£ãã¯ã® 横ï¼yè»¸ï¼æ¹åã®åãã :steer ã¨ãã¦ã縦ï¼xè»¸ï¼æ¹åã®åãã :thrust ã¨ãã¦ï¼ããã¦ãã¸ã§ã¤ã¹ãã£ãã¯ã«ä»å±ãããã¿ã³ã®æ¼ä¸ã :trigger ã¨ãã¦ï¼å¾ã¦ãããã¨ããããã¾ãã
![]()

Smalltalk-72ã¸ã®ç§»æ¤ã«éããå®å®è¹ä¸é»ã ããªããã¦ã¹ã®åã and/or ãã¤ã³ã¿ã®ä½ç½®ï¼ããªã¬ã¼ã«ã¤ãã¦ã¯ãã¿ã³ã®æ¼ä¸ï¼ã§ãããã¨ãã¥ã¬ã¼ãããã¨ããæ¹æ³ãããããã§ãããå°ãªãã¨ãäºé»ã«ãã対æ¦ãå¯è½ã«ãããã®ã§ããã®æ¹æ³ã¯ç¨ãããç¹å®ã®ãã¼ã®é£æã§å¯¾å¿ããã¹ãã£ãã¯ã®å¾ãã墿¸ã表ç¾ãããããªå¶å¾¡æ¹æ³ãèãã¾ãã
Smalltalk-72 ã§ã¯æ¼ä¸ããããã¼ã¯ãã¥ã¼ã¤ã³ã°ãããããã㯠kbd ã§ä¸ã¤ãã¤åãåºãã¾ãããããã¥ã¼ã¤ã³ã°ããããã¼ãç¡ãç¶æ
ã§ kbd ãå¼ã¶ã¨ããã¼ãæ¼ãããã¾ã§å¾
ã¡ç¶æ
ã«ãªãã¾ãã
å¦çå¾
ã¡ãã¼ããã¥ã¼ã«æããã©ãã㯠kbck ã§èª¿ã¹ãããã®ã§ãkbd ãå¼ã¶åã«ãã®ãã§ãã¯ãããã°ããã¼å¾
ã¡ã§å¦çãããã¯ããããé²ããã¨ãã§ãã¾ãã
ãã¨ãã°ãããªæãâ¦

î"prev _ mem 280.
repeat (
repeat ((mem 280) > prev + 166 ? ("prev _ mem 280. done)).
"key _ 0.
prev print. sp. repeat (kbck ? ("key _ kbd print. sp) done)
32 = key ? (done) cr.)î
âprev â mem 280.
'prev ã«ã·ã¹ãã ã¯ããã¯å¤ã代å
¥'
repeat (
'ã«ã¼ãå¦çâ '
repeat ((mem 280) > prev + 166 â (âprev â mem 280. done)).
'ã«ã¼ãå¦çâ¡'
'ã·ã¹ãã ã¯ããã¯å¤ã prev + 166 ãã大ãããã° prev ãæ´æ°ãã¦ã«ã¼ãå¦çâ¡ãæãã'
âkey â 0.
'key ã« 0 ã代å
¥'
prev print. sp. repeat (kbck â (âkey â kbd print. sp) done)
'prevåºåå¾ãã¹ãã¼ã¹ãåºåãã«ã¼ãå¦çâ¢'
'ãã¥ã¼ã«ãã¼ãããã° kbd ã§ã²ã¨ã¤åãåºã key ã«ä»£å
¥ãã¦åºåãç¡ããã°ã«ã¼ãâ¢ãæãã'
32 = key â (done) cr.)
'key ã 32ï¼ã¹ãã¼ã¹ãã¼ï¼ãªãã«ã¼ãå¦çâ ãæãã'
ãã kbck ã«ãããã§ãã¯ãããã«ãã¤ã¬ã¯ãã« kbd ãããã¼ããããããã ãã§ãã®å¦çãæ¸ããã¨ããã¨ããã®ä¾ã®ããã«ãã·ã¹ãã ã¯ããã¯å¤ï¼prevï¼ã®çééã§ã®åºåãã®ãããªä»ã®ä¸¦è¡ããå¦çãæ»ããªãè¡ããã¨ãã§ããªããªã£ã¦ãã¾ãã¾ãã
ãããè¸ã¾ãã¦ãå®å®è¹ï¼spaceshipã®ã¤ã³ã¹ã¿ã³ã¹ï¼ãè¤æ°å¶å¾¡ããããã®ã¹ãã¼ã ã¨ãã¦ã¯ãããããæ¬¡ã®ãããªã¹ããããèãããããã§ãã
- ããå®å®è¹ã®
thrustãsteerããããã墿¸ããããã¼ã®ãã¢ï¼triggerã¯ãã®ã¾ã¾ãããã¨ã¯å¥ã®ãã¼ã¨ ï¼ã®å¯¾å¿è¡¨ãã©ããã«ä¿æãã¦ãã - ãã¼æ¤åºãæ å½ããã¢ã¯ã·ã§ã³ãèªåã®ã¿ã¼ã³ã§ãã®è¡¨ãåç §ããªãã
- æ¼ä¸ããããã¼ã«å¯¾å¿ããå®å®è¹ã®
thrustãsteerï¼ããã¦triggerï¼ã®ç¶æ ãå¤åããã
ã¤ã¾ããå®å®è¹ãéé·ã®ã¤ã³ã¹ã¿ã³ã¹ãã¡ã¨ååã«ããã®ãã¼æ¤åºãæ å½ããã¢ã¯ã·ã§ã³ã«ãï¼çä¼¼ï¼ä¸¦åçã«å¶å¾¡ã渡ãã¦ããã°ãããã¨ããããã¾ãã
åæã«ãããããSmalltalk-71çã® spaceship ã® pause until clock = :time + :movelag ããdisplay ã® pause until clock = :time + :framelag ã Smalltalk-72 ã§ã©ã®ããã«å¦çããã°ãããããªãã¨ãªãè¦ãã¦ããæ°ããã¾ã^^;
ï¼ç似乱æ°çºçå¨ãå®è£ ãã ã«ç¶ãï¼