グラフィカルコンソールマニュアル
グラフィカルコンソールとは?
グラフィカルコンソールは、『13歳からはじめる ゼロからのC言語ゲームプログラミング教室 入門編』のために作成した
C言語の基礎文法の学習支援ツールです。
C言語の学習では簡単なコンソールアプリケーションの作り方から始めるのが王道。
でも、文字だけじゃ地味でモチベーションが上がらないという人も多いはず。
とはいえC言語の基本文法をマスターした後でなければ、
ウィンドウの作り方や画像の読み込み方は理解できません。
グラフィカルコンソールでは、g_printfやg_getsなどの標準ライブラリに似た関数を使って、
手軽に文字の表示や入力ができます。画像の表示もg_image関数でファイル名と表示する位置を指定するだけ。
コンソールアプリケーション並みの簡単さで、画像を使ったプログラムが作れます。
●グラフィカルコンソールの利用例

Win32 APIのSendMessage関数を使って、コンソールアプリケーションからグラフィカルコンソールの ウィンドウに指令を送って、画像や文字を表示させるしくみになっています。

グラフィカルコンソールのダウンロード
グラフィカルコンソールの利用について
グラフィカルコンソール、およびそれを改変したプログラムを 「自習室アップローダ」で 公開する場合、株式会社リブロワークスの許諾を取る必要はありません。 自習室以外で公開(再配布)する場合、または商用利用される場合は、株式会社リブロワークスの お問い合わせフォームより ご連絡ください。
アップローダの利用については「ゲーム公開のやりかた」を参考にしてください。
グラフィカルコンソールを利用したプログラムの作り方
gconsole_bin.zipを解凍し、適当なフォルダにコピーします。
このマニュアルではCドライブの直下に作成した〈GConsole追加ファイル〉フォルダの中にコピーしたものとして説明を進めます。
〈GConsole追加ファイル〉フォルダには、1つの実行ファイル(G_Console.exe)と2つのライブラリファイル(G_ConsoleLib.lib、G_ConsoleLib_d.lib)、
1つのヘッダファイル(G_ConsoleLib.h)、が入っています。
実行ファイルがグラフィカルコンソール本体で、ライブラリファイルとヘッダファイルは
あなたが作ったプログラムからグラフィカルコンソールを利用するために必要なものです。
●解凍ファイル
続いて、Visual C++ 2008 Express Edition(VC++2008)で、グラフィカルコンソールのヘッダファイルとライブラリファイルを参照するための
VC++ディレクトリの設定を行います。
〈ツール〉メニューから〈オプション〉を選択して〈オプション〉ダイアログボックスを表示し、〈プロジェクトおよびソリューション〉を展開して
〈VC++ディレクトリ〉を選択します。右上のリストボックスから〈インクルードファイル〉を選択し、
G_ConsoleLib.hが保存されているフォルダを指定します。
●インクルードファイルの指定
次に右上のリストボックスから〈ライブラリファイル〉を選択し、 G_ConsoleLib_d.libが保存されているフォルダを指定して、〈OK〉ボタンをクリックします。
●ライブラリファイルの指定
これで準備は完了です。以下はグラフィカルコンソールを利用したプログラムの例です。
(『13歳からはじめる ゼロからのC言語ゲームプログラミング教室 入門編』より抜粋)
#include <GConsoleLib.h>
#include <stdio.h>
#define PIE 3.14159265
int main(){
gimage("C:\\GConsole追加ファイル\\sampleimg\\chap3-0.png", 100, 100);
glocate(12, 5);
gprintf("わたしはアルキメデスだ。"); //質問の表示
glocate(12, 6);
gprintf("円の半径は何cmかな?"); //入力
double hankei;
char buf[128];
ggets(buf, 128);
sscanf_s(buf, "%lf", &hankei);
//答えの表示
glocate(12, 7);
gprintf("円周の長さは%.2fcmだね。", hankei * 2 * PIE);
}
|
●実行イメージ
グラフィカルコンソール利用関数一覧
| 関数名 | 働き |
| g_printf | グラフィカルコンソールに文字を表示する。使い方はprintfと同じ。 書式:void gprintf(const char* _Format, ...); 引数_Format:書式文字列。 |
| g_wprintf | グラフィカルコンソールに文字を表示する(ワイド文字版)。書式はwprintfと同じ。 書式:void gwprintf(const wchar_t* _Format, ...); 引数_Format:書式文字列。 |
| g_image | グラフィカルコンソールに画像を表示する。 書式:void gimage(const char* fname, int x, int y); 引数fname:画像のファイルパス。 引数x, y:画像を表示する座標。xは640未満、yは480未満まで。 |
| g_gets | グラフィカルコンソールから文字列を入力する。使い方はgets_sと同じ。 書式:char *ggets(char* _Buffer, size_t sizeInCharacters); 引数_Buffer:文字を記録するバッファ。 引数sizeInCharacters:読み込みバッファのサイズ。 返値:取得に成功した場合は_Bufferをそのまま返す。失敗した場合はNULLを返す。 |
| g_getws | グラフィカルコンソールから文字列を入力する(ワイド文字版)。使い方はgetws_sと同じ。 書式:wchar_t *ggetws(wchar_t* _Buffer, size_t sizeInCharacters); 引数_Buffer:文字を記録するバッファ。 引数sizeInCharacters:読み込みバッファのサイズ。 返値:取得に成功した場合は_Bufferをそのまま返す。失敗した場合はNULLを返す。 |
| g_getchar | グラフィカルコンソールから1文字入力する 書式:char ggetchar(); 返値:char型の文字コード。取得に失敗した場合はEOF(-1)を返す |
| g_getwchar | グラフィカルコンソールから1文字入力する(ワイド文字版) 書式:wchar_t ggetwchar(); 返値:wchar_t型の文字コード。取得に失敗した場合はWEOF(0xFFFF)を返す |
| g_locate | グラフィカルコンソールのカーソルを移動。 書式:void glocate(int x, int y); 引数x,y:カーソルの座標。xは63まで。yは19まで。xは半角単位。 |
| g_color | グラフィカルコンソールの文字色を設定。 書式:void gcolor(int red, int green, int blue); 引数red,green,blue:赤・緑・青の色。0~255 |
| g_front | グラフィカルコンソールを最前面に表示。 書式:void gfront(); |
| g_cls | グラフィカルコンソールの文字、画像、図形をすべて消去。 書式:void gcls(); |
| g_line | グラフィカルコンソールに線を描画。色はgcolor関数で指定。 書式:void gline(int x1, int y1, int x2, int y2); 引数x1,y1,x2,y2:始点と終点の座標。 |
| g_point | グラフィカルコンソールに点(円)を描画。色はgcolor関数で指定。 書式:void gpoint(int x, int y, int hankei); 引数x,y:中心位置の座標。 引数hankei:点のサイズ(半径)。 |
| g_box | グラフィカルコンソールに四角形を描画。色はgcolor関数で指定。 書式:void gbox(int x, int y, int width, int height); 引数x,y,width,height:左上座標と幅、高さ。 |
グラフィカルコンソールの注意点
●実行速度が遅い
コンソールアプリケーションからグラフィカルコンソールへの指示には
ウィンドウメッセージを利用しています。このやりとりに意外と時間がかかるため、
リアルタイムのゲームプログラムには向きません。
グラフィカルコンソール利用関数の呼び出しをなるべく減らすことが、速度向上のコツです。
●先に起動しておく
グラフィカルコンソールは、コンソールアプリケーションより先に起動しておく必要があります。
グラフィカルコンソールを起動せずにグラフィカルコンソール利用関数を呼び出すと、
「グラフィカルコンソールが見つかりません」というメッセージ
を表示してコンソールアプリケーションが終了してしまいます。
●画像のファイルパスに注意
画像を読み込むgimage 関数では、グラフィカルコンソールの実行ファイルが保存されている
場所を基準としたファイルパスを指定しなければいけません。
●実行中のコピー&ペースト禁止
ggets関数を使ってグラフィカルコンソールで文字を入力している間はコピー&ペースト禁止です。
文字を入力するときに、グラフィカルコンソールからコマンドプロンプトへクリップボードを
使って入力文字列を送っています。クリップボードはすべてのプログラムが利用するので、
グラフィカルコンソールで入力待ちのときにテキストエディタで文字をコピーすると、
それがコマンドプロンプトに送られてしまいます。


