* easy-C の使い方#1
-(by [[K]], 2023.05.29)
** まずは easy-C の説明が読みたい!
-2023.05.28(日)にOSC名古屋で無料配布していた資料はこちらです。
--https://essen.osask.jp/files/pic20230529a.png
--https://essen.osask.jp/files/intro-ec-01.pdf
** easy-C をダウンロードしたけど使い方がわからない!
-いろんな使い方があってややこしいのですが、まずはシンプルに使ってみます。
-[1] [[a23_ec001]] へ行って最新版の easyc????.zip をダウンロードします。
-[2] zipファイルを展開すると、 hl9.exe という実行ファイルがあると思います。とりあえず、それさえあればまあまあ遊べるので、それだけを残して他は全部捨ててしまいましょう(また必要になったら、その時にダウンロードしてくればいいだけのことです)。
-[3] hl9.exe をダブルクリックして起動します。このhl9というのは、easy-Cの開発コードネームみたいなものです。なんなら、easyc.exeにリネームしてくれてもいいですよ。
-[4]まずはちゃんと動くかどうか調べましょう。画面に HL9> と出ていると思いますので、「pr 1+2*3」と入力してEnterを押してください。
HL9>pr 1+2*3
7
HL9>
こうなれば成功です。
-[5]次はグラフィックがちゃんと出るか確認してみましょう。以下のように入力してEnterを押してください。コピペでもいいです。
HL9>AWin *w = aOpenWin(256, 256, "xor"); for (j = 0; j < 256; j++) { for (i = 0; i < 256; i++) { aSetPix(w, i, j, 0x010101 * (i ^ j)); }}
https://essen.osask.jp/files/pic20230116f.png ~
こうなれば成功です。
-[6]なんかワンライナーが楽しくなってきたら、他にもこんなのがあります。実行結果はやってみてのお楽しみです。
HL9>AWin *w = aOpenWin(256, 256, "graphics"); for (j = 0; j < 256; j++) { for (i = 0; i < 256; i++) { aSetPix(w, i, j, aRgb8(j, i, 0)); }}
HL9>AWin *w = aOpenWin(256, 256, "graphics"); for (j = 0; j < 8; j++) { for (i = 0; i < 8; i++) { aFillRect(w, 32, 32, i * 32, j * 32, ((i ^ j) & 1) * 0xffff00); }}
HL9>AWin *w = aOpenWin(256, 256, "graphics"); aSetMode(w, AWinMode_Xor); for (i = 0; i < 256; i++) { aDrawLine(w, 0, 0, i, 255, 0x00ffff); aDrawLine(w, i, 0, 255, 255, 0x00ffff); }
HL9>AWin *w = aOpenWin(256, 256, "graphics"); for (i = 24; i < 128; i++) { j = 127 - i; aFillOvalCent(w, 128, 128, j, j, 0x020202 * i); }
HL9>AWin *w = aOpenWin(384, 256, "hinomaru"); aFillRect(w, 384, 256, 0, 0, 0xf8f8f8); aFillOvalCent(w, 192, 128, 77, 77, 0xff0000);
** 2行以上のプログラムも作ってみたい!
-次はプログラムを作るやり方を紹介します。
-[7]3Dの波が出るやつをやってみましょう。まず以下のように入力します。
HL9>new 3dwave.txt
-[8]さらに次のように入力します。
HL9>$$ 3dwave.txt
そうするとテキストエディタの画面になるはずです。デフォルトではメモ帳かな。とりあえず何でもよいので好きなものを使ってください。
-[9]以下の内容をコピペするか入力してください。
AWin *w = aOpenWin(640, 480, "3dwave");
int t, x, y, gx[42 * 42], gy[42 * 42];
for (t = 0; AWin_isClose(w) == 0; t++) {
aWait(8); aFillRect(w, 640, 480, 0, 0, 0x000000);
for (y = -20; y <= 21; y++) {
for (x = -20; x <= 21; x++) {
int d = aFf16Sqrt((x * x + y * y) * 65536);
int z = aFf16Sin(((d * 652) >> 12) - 1043 * t) * 50 / (d + 327680);
int x0 = x + 19, y0 = y + 19, x1 = x + 20, y1 = y + 20;
int y1x1 = y1 * 42 + x1, y0x0 = y0 * 42 + x0, y0x1 = y0 * 42 + x1, y1x0 = y1 * 42 + x0;
gx[y1x1] = (x * 2 - y * 2 + z * 0) * 4 + 320;
gy[y1x1] = (x * 2 + y * 2 + z * 1) * 2 + 240;
if (x0 >= 0 && y0 >= 0) {
aDrawLine(w, gx[y0x0], gy[y0x0], gx[y0x1], gy[y0x1], 0x00ffff);
aDrawLine(w, gx[y0x0], gy[y0x0], gx[y1x0], gy[y1x0], 0x00ffff); }}}}
-[10]入力できたら上書き保存してください。
-[11]以下のように入力すればプログラムが実行されます。
HL9>run 3dwave.txt
https://essen.osask.jp/files/pic20230117a.png
** OSCで見たブロック崩しがやりたい!
-[12]ブロック崩しは、ダウンロードの.zipファイルの中の、「blocks.c」です。これをhl9.exeと同じところにコピーしておいて、
HL9>run blocks.c
-とすればゲームが始まります。
-これと同様の方法で invader.c kcubei.c mandel.c maze.c を実行することができます。
** PLAY文で演奏してみたい!
-[13]まずはワンライナーで音が出ることを確認してみましょう。
HL9>PLAY "CDEFGAB>C"
-[14]もし音が小さければ、音を大きくしてみましょう。
HL9>PLAY "V120CDEFGAB>C"
-[15]音を重ねることもできます。
HL9>PLAY "CDEFEDCREFGAGFERCRCRCRCRC8C8D8D8E8E8F8F8EDCR"; PLAY1 "R1R1CDEFEDCREFGAGFERCRCRCRCRC8C8D8D8E8E8F8F8EDCR";
** できないこと
-10行の拡大鏡プログラムを使いたい!・・・それはgcc実行モードでやらないと動かないので、まずはgccをインストールしなければ・・・。
-レイトレーシングみたいなやつを自分のうちでもやってみたい!・・・それはgcc実行モードでやらないと動かないので、まずはgccをインストールしなければ・・・。
-分数計算をやってみたい!・・・それはgcc実行モードでやらないと動かないので、まずはgccをインストールしなければ・・・。
-やってみたい人がいるようなら、gcc実行モードについての紹介ページも書きますね。
** これは本当に教育用なの?
-教育のために使っているのは本当ですが、利用時間比でみると、子供が使った時間の100倍以上の時間で私が利用しています。だから「私が使うために作っている」という説明のほうが、100倍は正確です。・・・でもその説明を入れると、OSCでは不評で「説明に一貫性がなくなって、???になる」という現象が頻発するのです。だからひとまずは、「子供の教育のために作った」で押し通しています。
* こめんと欄
-掲示板をご利用ください。→[[a23_bbs]]