グラフィカルコンソールマニュアル

グラフィカルコンソールとは?

 グラフィカルコンソールは、『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関数を使ってグラフィカルコンソールで文字を入力している間はコピー&ペースト禁止です。   文字を入力するときに、グラフィカルコンソールからコマンドプロンプトへクリップボードを 使って入力文字列を送っています。クリップボードはすべてのプログラムが利用するので、 グラフィカルコンソールで入力待ちのときにテキストエディタで文字をコピーすると、 それがコマンドプロンプトに送られてしまいます。



マニュアル目次ページへ戻る