* blaライブラリ
-(by [[K]], 2018.10.24)
** (0)
-blaライブラリとは、blikeライブラリを発展させたものです。
--blikeライブラリは、[[K]]が2010年07月ごろから作っていたライブラリで、初心者にやさしいグラフィックライブラリです。
-blikeライブラリの時から、これはちょっと初心者向け過ぎて使いにくいから何とかしてくれという声があり、まさに望まれていたのはblaライブラリのようなものでした。
--当時は私に余力がなくて、要望をかなえられませんでした。
** (1)
-WindowsやそのほかのOSでC言語からちょっとしたグラフィックを描画したい、なんてことはよくあります。
-しかしC言語の標準関数だけではグラフィックは扱えないし、<Windows.h>をインクルードして描画しようと思ったら、次々とやってくる「WM_なんたら」を処理するプログラムを書かされる羽目になり、いやまて私は画面にちょっとした絵を描きたかったのであって、こんなうっとうしいメッセージ処理を書きたかったわけじゃない!と思うこと間違いなしです。
-ということで、プログラマが本来の「どんな絵を描きたいのか」に集中できるように、ライブラリは構成されています。
-「ウインドウを出せ」「線を引け」「丸を描け」などシンプルな関数呼び出しで絵を描くことができます。
-キー入力やマウス入力にも対応できます。
-一時期、協力者の献身的な努力によりblaライブラリのMacOSXも存在しましたが、MacOSXがHigh Sierraになったら動かなくなってしまいました。がっかり・・・。
** (2)
-これだけのプログラムでグラデーションが出ます。
#include "bla_easy.h"
int main()
{
int x, y;
Window *win = openWin(256, 256, "Gradation(kp0003)");
for (y = 0; y < 256; y++) {
for (x = 0; x < 256; x++) {
setPix(win, x, y, rgb(x, y, 0));
}
}
end();
}
** (3)
-これだけのプログラムでbballが描けます。
#include "bla_easy.h"
int col[8] = { 0x000000, 0xff0000, 0x00ff00, 0xffff00, 0x0000ff, 0xff00ff, 0x00ffff, 0xffffff };
struct aPoint {
int x, y;
} p[16] = {
{ 196, 100 }, { 187, 61 }, { 164, 29 }, { 129, 9 }, { 90, 5 },
{ 53, 17 }, { 23, 44 }, { 7, 81 }, { 7, 119 }, { 23, 156 },
{ 53, 183 }, { 90, 195 }, { 129, 191 }, { 164, 171 }, { 187, 139 },
{ 196, 100 }
};
int main()
{
Window *win = openWin(200, 200, "bball");
setMode(win, MODE_OR);
int i, j, c;
for (i = 0; i < 15; i++) {
for (j = 0; j < 16; j++) {
c = i - j + 8;
if (c <= 0)
c = 1 - c;
if (c <= 7)
drawLineEx(win, p[i].x, p[i].y, p[j].x, p[j].y, col[c]);
}
}
end();
}
** サンプルプログラム集
-kp0003.c : グラデーション表示(上記)
-kp0004.c : kcube(3Dキューブ回転)
-kp0007.c : bball表示(上記)
-kp0009.c : マンデルブロー表示
-kp0012.c : インベーダーゲーム
-kp0014.c : 一人壁打ちテニスゲーム
-kp0015.c : ブロック崩しゲーム
-kp0021.c : オセロゲームlv1(ランダム打ち)
-kp0022.c : オセロゲームlv2(位置優先打ち)
-kp0024.c : オセロゲームlv4(lv2+終盤17手完全読み切り)
-kp0003.c ( 13行) : グラデーション表示(上記)
-kp0004.c (290行) : kcube(3Dキューブ回転)
-kp0007.c ( 29行) : bball表示(上記)
-kp0009.c ( 45行) : マンデルブロー表示
-kp0012.c (189行) : インベーダーゲーム
-kp0014.c ( 88行) : 一人壁打ちテニスゲーム
-kp0015.c (143行) : ブロック崩しゲーム
-kp0021.c (228行) : オセロゲームlv1(ランダム打ち)
-kp0022.c (259行) : オセロゲームlv2(位置優先打ち)
-kp0024.c (481行) : オセロゲームlv4(lv2+終盤17手完全読み切り)
** 他のwikiに書いた説明
-http://essen.osask.jp/?page0010