easy-C の使い方#1

  • (by K, 2023.05.29)

まずは easy-C の説明が読みたい!

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

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-06-08 (木) 12:59:11 (1104d)