サイトトップへ
OSASK.NET
  サイトトップへ       新掲示板(閉鎖済)   Wiki(凍結済)   旧掲示板(廃止済)   ニュース(廃止済)  
3: 2011-03-08 (火) 22:12:05 名無しさん[C1tKa0P8FJM] ソース 現: 2024-01-08 (月) 12:58:54 lina ソース
Line 2: Line 2:
* 上級者向けのblikeマニュアル(2) [#cd17d333] * 上級者向けのblikeマニュアル(2) [#cd17d333]
-(by [[K]], 2011.03.08) -(by [[K]], 2011.03.08)
--C言語の文法が分からないという人を対象にはしていません。そういう人は[[blike/intro]]へ。+-このページはC言語の文法が分からないという人を対象にはしていません。そういう人は[[blike/intro]]へ。
-ドライバ開発者向けの情報は[[blike/drv]]にあります。 -ドライバ開発者向けの情報は[[blike/drv]]にあります。
Line 12: Line 12:
--線を引く。色は事前に color() か setCol() で指定しておくこと。 --線を引く。色は事前に color() か setCol() で指定しておくこと。
--アルゴリズムの関係で、drawLine(x0, y0, x1, y1) と drawLine(x1, y1, x0, y0) が厳密には重ならない場合もある。とはいえ、ズレは1ピクセル程度である。 --アルゴリズムの関係で、drawLine(x0, y0, x1, y1) と drawLine(x1, y1, x0, y0) が厳密には重ならない場合もある。とはいえ、ズレは1ピクセル程度である。
----これがいやなら bball00a のようにすればいいだろう。+---これがいやなら bball00a.c のようにすればいいだろう。
 if (x0 <= t[j].x)  if (x0 <= t[j].x)
     drawLine(x0, y0, t[j].x, t[j].y);      drawLine(x0, y0, t[j].x, t[j].y);
Line 58: Line 58:
---これはフラッシュ忘れを分かりやすくする。リリースモードにするとフラッシュ忘れが分かりにくくなる代わりに(忘れていても結構それなりに画面に反映されてしまうことがある)、メモリが節約され、速度も向上する。 ---これはフラッシュ忘れを分かりやすくする。リリースモードにするとフラッシュ忘れが分かりにくくなる代わりに(忘れていても結構それなりに画面に反映されてしまうことがある)、メモリが節約され、速度も向上する。
---リリースモードにしたいときは、一番最初に setMode(BL_RELEASE); と書くのが良いだろう。 ---リリースモードにしたいときは、一番最初に setMode(BL_RELEASE); と書くのが良いだろう。
 +---デバッグが終わる前にリリースモードにするべきではない。
-[01f以降] openVWin(int n, int sx, int sy) -[01f以降] openVWin(int n, int sx, int sy)
Line 73: Line 74:
-[01f以降] copyRct1(int sx, int sy, int n0, int x0, int y0, int n1, int x1, int y1, int ic) -[01f以降] copyRct1(int sx, int sy, int n0, int x0, int y0, int n1, int x1, int y1, int ic)
--ウィンドウのある領域の画像を、別のウィンドウの同じ大きさの領域にコピーする。その際、 ic で指定した色が透明色として扱われる。 --ウィンドウのある領域の画像を、別のウィンドウの同じ大きさの領域にコピーする。その際、 ic で指定した色が透明色として扱われる。
 +
 +-[01f以降] drawPtrn(int sx, int sy, int x, int y, char *c, char *p)
 +--ドット絵を描く。sxとsyは絵の大きさ。xとyは絵を描く座標。cは配色や絵の名前を指定するための文字列で、pは絵の内容を表す文字列である。以下に例を示す。
 + drawPtrn(8, 8, 100, 100, "%name=sample ○=#000000 ●=#FFFFFF",
 +     "●●●●●●●●"
 +     "●○○○○○○●"
 +     "●○●●●●○●"
 +     "●○●○○●○●"
 +     "●○●○○●○●"
 +     "●○●●●●○●"
 +     "●○○○○○○●"
 +     "●●●●●●●●"
 + );
 +--この例では全角文字を使ったが、 test021a.c のように半角でもよい。
 +--絵の名前はエラー時にのみ使われるので、エラーが起きないのなら指定しなくてもよい。
 +--この関数は文字列をちまちまと解釈するのであまり高速ではない。もし何度も表示するのなら、裏画面に一度これで描いておいて、あとはそこからcopyRct0するのがいいだろう。
 +--色指定は、 #hhhhhh の形式の代わりに 0xhhhhhh を使うこともできる。多分そうしたほうが初心者には教えやすい(getPixして色比較するときに、if文中に #FFFFFF とは書けないから)。
 +--ちなみに色 #80000000 は透明色として扱われ、描画されない。
*** そのほかの関数群 [#g0dd6fe4] *** そのほかの関数群 [#g0dd6fe4]
Line 81: Line 100:
--乱数のパターンを指定する。 --乱数のパターンを指定する。
-* ドライバ関数群 [#r913b417+*** 基本的なゲームの作り方 [#t4b0b065
--[01f以降] 各OSのmain関数 +-実はゲームに限らず、この構造は頻出する。 
---この関数は、ドライバに必要な初期化を行って、さらに bl_init(); で blike の内部を初期化したのち、 blMain(); を呼び出す。 + ;準備の処理 
---もし blMain(); から帰ってきた場合は、アプリの終了が期待されているので、速やかにドライバの終了処理や bl_exit(); で blike の内部の終了処理を完了させたのち、アプリそのものをそのOSのやり方で終了する。現状では終了コードは渡されないので、常に正常終了でかまわない。 + ;for (;;) { 
- +     画面に描画など(動かないものは再描画しないようにすると動作が軽くなる) 
--[01f以降] void *bld_malloc(unsigned int bytes+     必要ならflshWinをやる(下でwaitを使うのならこれはやらなくていい) 
---この関数は、そのOSにおけるメモリ確保を期待している。確保に失敗した場合は NULL (0) を返してほしい。 +     終了判定が成立すればbreak 
- +     waitかwaitNF 
--[01f以降] void bld_free(void *p, unsigned int bytes) +     inkey 
---この関数は、そのOSにおけるメモリ開放を期待している。bytesは確保時と同じ値を渡すので、必要であれば利用してよい。 +     キー入力によっていろいろやる 
- +     キー入力によらない時間経過処理など(敵が動くとか) 
--[01f以降] void bld_openWin(int sx, int sy) + } 
---この関数は、そのOSにおけるウィンドウオープンを期待している。sxは160以上、syは1以上を blike 側で保障する。 + 終了処理 
---ウィンドウに表示してほしいグラフィックのイメージバッファは、 bl_work.win[BL_SYSWIN].buf で参照できる(これは int * 型)。したがって、 int の配列で不都合がないのなら、ドライバ側でウィンドウのイメージを確保する必要はないだろう。 +-inkeyの後にも描画やflshWinをする場合がある。 
---sxやsyについても、 bl_work.win[BL_SYSWIN].xsiz, bl_work.win[BL_SYSWIN].ysiz を参照すればいつでも得られるので、ドライバ側で保存する必要はないだろう。 +-ポイントは、画面を作り終わったらwaitして、waitの直後にinkeyするということである。
- +
--[01f以降] void bld_flshWin(int sx, int sy, int x0, int y0) +
---この関数は、イメージバッファ内の指定された範囲のフラッシュを期待している。sxやsyが0以下になるとか、画面外のピクセルが含まれてしまうなど、そういうやっかいなパラメータを渡すことはないので、その辺はドライバ関数が心配する必要はない。 +
---setMode(BL_DBGFLSH); では、不正なカラーコード(0x000000未満とか0xffffffより大きいとか)を渡さないようになっている。リリースモードの場合は、チェックを省略しているので、もしかしたら渡してしまうかもしれないが、しかしとりあえず常に不正なカラーコードが来ることはないと仮定していいと思われる。 +
----デバッグが完了しないうちにリリースモードを指定するほうがおかしいので。+

トップ   差分 バックアップ 複製 名前変更 リロード印刷に適した表示   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ
新着

目次
メンバー一覧


最新の20件
2016-10-01 2016-09-08
  • @MenuBar.
2016-09-07 2016-09-04 2016-08-15 2015-09-23 2014-07-30 2014-07-04 2014-02-04 2013-10-26 2013-06-21 2013-06-17 2013-06-15 2013-04-02 2013-02-09 2013-02-04 2012-12-25 2012-12-01 2012-05-28 2012-03-31

トピック一覧
一般用コメント最新
新掲示板lina
2016/9/5 20:58
SandBoxゲスト
2016/9/4 12:01
RecentDeletedlina
2015/6/2 19:29
Old-OSASK-MLlina
2014/6/29 9:14
hideyosi/メールhideyosi
2014/1/6 20:17
hideyosi/募集中lina
2013/11/8 19:56

このサイトは川合秀実から委託を受けて、OSASKコミュニティによって管理・運営されています。