a23_useSelfMade #5
2023.02.09 Thu #1
- このプロジェクトに今必要な開発: たぶんKeyValueStore的な仕組み(簡単なやつでいいから)。それがあればインタプリタ実行とコンパイラ実行で変数を共有できるようになるから。
- このプロジェクトに今必要な作業: ここまでの成果をわかりやすくまとめるべき。1月10日から数えて1か月になるから、時期的にも悪くない。
- この二つを比較したら、たぶん成果まとめのほうが対外的には価値がある。自分が使うことだけを考えたら、まとめとかは意味ないけど。
- まあまとめたら何か気づくこともあるかもしれないから、自分が使うためだとしてもまとめるべきかも。
2023.02.09 Thu #2
- 「$」で始まるシェルコマンドを用意したのは本当に良かった。これがあれば「ああー、ファイルをリネームするコマンドが欲しい」とか思っても「$ren ...」でできてしまう。ディレクトリを作りたくなったら「$mkdir ...」でできてしまう。
- 当たり前だけどシェルにできることなら何でもできる。それだけのことが本当に助かる。
- これも当たり前だけど、このシェルコマンドが実現できたのはsystem()関数があったから。こういう、文字列を与えるとそれを解釈して実行してくれるっていう機能はeval的なものだけど、これが大きな可能性を持っていると私は思う。
2023.02.10 Fri #1
- 今は「変数を使わない範囲でプログラミングを楽しむ」のはPLAYしかないけど、これをもっと拡充させたら、小学生がプログラミングで挫折しにくくなるのではないかと思っています。
- それで、PCG(Programmable Character Generator)でドット絵をかいてタイル状に並べて絵を描くやつをやったらいいのではないかと思いつきました。思いつきましたが、昨日は頑張りすぎて疲れたのと、今日はいろいろと他にやらなければいけないこともあるので、今日は少しだけの開発にとどめることにします。
2023.02.10 Fri #2
- PLAYで演奏中はCtrl-Cが利かなくなることを発見。これはできるだけ早く直さなくては!
2023.02.11 Sat #1
- 一度は実装したけど結局は廃止した機能
- [1]行末のセミコロンを省略できる仕様にしていたけど、for (...)とかif (...)の直後にセミコロンを勝手につけられると非常に困るので廃止に。でも今は{が必須なので、実は今は困らないのかもしれない。
- [2]かつてはeasy-Cのワンライナーモードは行頭にセミコロンがあるとREPLモードになって設定を記憶していたけど、結局はあまり役に立たなくて廃止になった。
2023.02.13 Mon #1
- 小学1年生(女児)にひきつづき、小学3年生(女児)もeasy-CでPLAY文を使った音楽演奏に興味を持ったので、やはりPLAY文の効果は絶大だなあと思っています。今まで何をやっても興味を持ってくれなかったので・・・(A~Zのキータイピングは興味を持ってくれていたけど)。
2023.02.13 Mon #2
- PCG命令をつけてみました。小学生が楽しむための機能です。
- mario.c[31行]
WINDOW 512,512;
PCG0 0,0,0x7799FF;
PCG0 5,4,4;
PCG1 "DD6622 FFBBAA 0x7799FF FFBB33";
PCG2 "A777777770A7777A BBBBBBBBBBBBBBBB CAAAAAAAAAAAAAAC"; // A,C,E
PCG2 "7AAAAAAAA07AAAA0 AAAAAAA0AAAAAAA0 ADDDDDDDDDDDDDD0";
PCG2 "7AAAAAAAA07AAAA0 AAAAAAA0AAAAAAA0 AD0DDDDDDDDDD0D0";
PCG2 "7AAAAAAAA07AAAA0 0000000000000000 ADDDDAAAAADDDDD0";
PCG2 "7AAAAAAAA070AAA0 AAA0AAAAAAA0AAAA ADDDAA000AADDDD0";
PCG2 "7AAAAAAAA0A0000A AAA0AAAAAAA0AAAA ADDDAA0DDAA0DDD0";
PCG2 "7AAAAAAAA0777770 AAA0AAAAAAA0AAAA ADDDAA0DDAA0DDD0";
PCG2 "7AAAAAAAA07AAAA0 0000000000000000 ADDDD00DAAA0DDD0";
PCG2 "7AAAAAAAA07AAAA0 AAAAAAA0AAAAAAA0 ADDDDDDAA000DDD0";
PCG2 "7AAAAAAAA07AAAA0 AAAAAAA0AAAAAAA0 ADDDDDDAA0DDDDD0";
PCG2 "00AAAAAA07AAAAA0 AAAAAAA0AAAAAAA0 ADDDDDDD00DDDDD0";
PCG2 "7700AAAA07AAAAA0 0000000000000000 ADDDDDDAADDDDDD0";
PCG2 "7A7700007AAAAAA0 AAA0AAAAAAA0AAAA ADDDDDDAA0DDDDD0";
PCG2 "7AAA77707AAAAAA0 AAA0AAAAAAA0AAAA AD0DDDDD00DDD0D0";
PCG2 "7AAAAAA07AAAAA00 AAA0AAAAAAA0AAAA ADDDDDDDDDDDDDD0";
PCG2 "A000000A7000000A 0000000000000000 0000000000000000";
PCG3 " ";
PCG3 " ";
PCG3 " CECEC ";
PCG3 " ";
PCG3 " ";
PCG3 " ";
PCG3 "AAAAAAAA";
PCG3 "AAAAAAAA";

- PCG命令を作ることと、このサンプルを作ることで、疲れ果ててしまいました・・・。
- インターネットでゲーム画面を検索して拡大して真似してみたのですが、たぶん細部は間違っています・・・。でもこれで、PCG命令でどんなことができるのか大体わかりますよね?
2023.02.14 Tue #1
- PCG2命令で工夫キャラクタを同時定義するとき:
// 今まで.
PCG2 "A777777770A7777A BBBBBBBBBBBBBBBB CAAAAAAAAAAAAAAC"; // A,C,E
PCG2 "7AAAAAAAA07AAAA0 AAAAAAA0AAAAAAA0 ADDDDDDDDDDDDDD0";
PCG2 "7AAAAAAAA07AAAA0 AAAAAAA0AAAAAAA0 AD0DDDDDDDDDD0D0";
PCG2 "7AAAAAAAA07AAAA0 0000000000000000 ADDDDAAAAADDDDD0";
(後略)
// こっちのほうがいいんじゃないか?
PCG2 "A777777770A7777A" "BBBBBBBBBBBBBBBB" "CAAAAAAAAAAAAAAC"; // A,B,C
PCG2 "7AAAAAAAA07AAAA0" "AAAAAAA0AAAAAAA0" "ADDDDDDDDDDDDDD0";
PCG2 "7AAAAAAAA07AAAA0" "AAAAAAA0AAAAAAA0" "AD0DDDDDDDDDD0D0";
PCG2 "7AAAAAAAA07AAAA0" "0000000000000000" "ADDDDAAAAADDDDD0";
(後略)
- これを実現するには・・・手っ取り早いのは(これ重要!)lexerを改造すればよさそうだな・・・。
こめんと欄