J3Wのエンジンの使用法 投稿者:NH3 投稿日:2003/11/30(Sun) 19:56 No.230 | <Home> |
|
初投稿です。 junさんにメールでいつも迷惑してる中学生です... junさんにJ3Wのエンジンの使用法について聞いたらこちらで回答してくださるそうなので来ました。 少しずつでいいので教えてください。
|
| Re: J3Wのエンジンの使用法 jun - 2003/12/01(Mon) 00:23 No.232 | |
|
| Re: J3Wのエンジンの使用法 NH3 - 2003/12/03(Wed) 19:41 No.234 | <Home> |
|
|
まずは、J3WとC++のINIT, RUN, EVENTの違いからお願いします。 |
| Re: J3Wのエンジンの使用法 jun - 2003/12/03(Wed) 23:16 No.235 | |
|
|
J3Wというか、J3C言語のクラスの特別なメソッドがINIT, RUN, EVENT です。INITはクラスインスタンスの生成時に自動的に起動されますから C++のコンストラクタに近いと思います。2001年9月号の1ページから 2ページにかけて(https://www.nk.rim.or.jp/~jun/lj_code/index.html) 解説しています。 J3Wは「3D命令を持つ仮想CPU」を「3Dエンジン」を使って作ってあります。 そのCPUの命令を生成するJ3C言語のコンパイラの文法にINIT, RUN, EVENT という自動的に動作するメソッドがあります。 C++とJ3Cの言語的な違いはJ3Cのクラス(のインスタンス)は自分で動作する 1つのプログラムに相当して基本的に別のクラスとは無関係であることです。 文法的には似ていますが、クラスが単に1つの部品であるC++とは動作がかなり 異なります。 |
| Re: J3Wのエンジンの使用法 NH3 - 2003/12/05(Fri) 19:46 No.240 | <Home> |
|
|
RUNはfor, whileで代用すればいいようですが、EVENTはどう書けばいいんですか? |
| Re: J3Wのエンジンの使用法 jun - 2003/12/05(Fri) 20:00 No.242 | |
|
|
代用するという問題ではないように思います。 j3c のプログラムをC++で書く(移植する)わけじゃないですよね。 |
| Re: J3Wのエンジンの使用法 NH3 - 2003/12/07(Sun) 19:48 No.246 | <Home> |
|
|
ええと... なんだか話が進まないのでズバッとウインドウの表示方法からお願いします。 |
| Re: J3Wのエンジンの使用法 jun - 2003/12/09(Tue) 23:46 No.248 | |
|
|
Xのウィンドウの表示方法ですね。 source/j3w/scrnx.cppで行っています。エラー処理などは省略。
初期化 OpenX() サーバとの接続 d = XOpenDisplay(NULL); スクリーンを取得 int scr = XDefaultScreen(d); ビジュアルタイプを取得 Visual *vis = XDefaultVisual(d, scr); ウィンドウの生成 w = XCreateSimpleWindow (d, RootWindow (d, 0), 0, 0, width, height, 1, black, white ); 受け取るイベントを指定 XSelectInput(d, w, KeymapStateMask | KeyPressMask); ウィンドウ名の指定 XStoreName(d, w, "J3W"); ウィンドウのマップ XMapWindow (d, w); バックバッファ(ピクスマップ)の生成 p = XCreatePixmap( d, w, width, height, DefaultDepth(d, 0) ); グラフィックコンテキストの設定 gc = XCreateGC (d, p, 0, 0); フォントの指定 f = XLoadFont(d, "-*-courier-bold-r-*-*-12-*-*-*-*-*-*-*"); XSetFont (d, gc, f); バックバッファのクリア XSetForeground (d, gc, white); XFillRectangle (d, p, gc, 0, 0, width, height); カラーマップ(パレット)の設定 SetColorMap(vis); XSetWindowColormap(d, w, cmap);
表示 update()+α バックバッファ(ピクスマップ)に描画してウィンドウにコピー 色を指定 XSetForeground (d, gc, color ); 何か描画 XDrawLine(d, p, gc, p1.x, p1.y, p2.x, p2.y); ウィンドウにコピー XCopyArea(d, p, w, gc, 0, 0, width, height, 0, 0); バックバッファ消去 XFillRectangle (d, p, gc, 0, 0, width, height);
Xlibの関数の機能は https://xjman.dsl.gr.jp/X11R6/X11/ のあたりで 調べてみてください。
|
| Re: J3Wのエンジンの使用法 NH3 - 2003/12/16(Tue) 19:50 No.249 | <Home> |
|
|
次は、少しずつ分けてでいいので、PDF版のサンプルプログラムの関数の解説とその仲間たち(?)の説明をお願いします。 |
| Re: J3Wのエンジンの使用法 jun - 2003/12/17(Wed) 23:55 No.250 | |
|
|
もう少し具体的な質問でお願いします。 どのサンプルの関数のことでしょうか? |
|