アプリ版:「スタンプのみでお礼する」機能のリリースについて

やっとC言語を少し使えるようになってきました。そこで質問なのですが、画面に絵(玉など)を表示するにはどうしたらいいのでしょうか。あと、それの動かしかたなどを教えていただけないでしょうか。インターネットで探してみると、
#include <graph.h>

main()
{
gl_openwin(-1, -1, 640, 480, 0);
getchar();
gl_closewin();
}
というソースがあったのですが、実行すると、ノーサーチファイルなどというエラーが出てきます。使っているコンパイラはLSI C-86 試食版です。コンパイラによって使えたり使えなかったりするヘッダファイルがあったりするのでしょうか。教えて下さい。

A 回答 (6件)

★mantis777 さんへ。


・C 言語は始めたばかりでしたよね。
 Windows 環境で画面(ウインドウ)に絵(図形)を描くには C 言語を熟知した上で
 Windows の GUI(グラフィカル・ユーザ・インターフェイス)によるプログラミングを
 行います。この GUI はコマンドライン(CUI)タイプとは全く別の概念が必要です。
 つまりはウインドウ・メッセージ(WM_XXXX)を元に各イベントに対応する処理を
 記述していきます。これがマルチタスク処理のプログラムです。
・以前に簡単なじゃんけんゲームを紹介しましたがその中でゲーム・ループしていますよね。
 Windows の GUI では単純なループを組むのは禁止です。唯一メッセージ・ループが
 組める程度です。とにかく GUI のウインドウに絵(図形)を描画するには C 言語を
 始めたばかりの人にとっては簡単にプログラミングできるものではありません。
 理由としてはポインタ、構造体、共用体などでデータを受け取ったり、渡したりを
 基本として Win32 API という関数が使われます。C 標準関数とはまた別の関数群です。

描画の仕組み:
・簡単に GUI での図形の描画方法を紹介します。
 (1)WM_PAINT メッセージに以下の処理を記述。
 (2)ウインドウハンドルから描画するデバイスコンテキストのハンドルを取得。
 (3)描画用の Win32 API 関数を使って図形(点、線、円、長方形など)を描画。
 (4)描画の終了を実行。
 (5)WM_PAINT メッセージを処理したので 0 をリターンする。
 上記の方法を C ソースで記述すると
 case WM_PAINT:
 {
  // 描画の開始処理
  HDC hDC = BeginPaint( hWnd, &ps );
  // 図形の描画処理(点、線、円、長方形)
  SetPixelV( hDC, 100, 100, RGB(255,0,0) ); // (100,100)地点に赤い点を描画
  // 描画の終了処理
  EndPaint( hWnd, &ps );
  return 0; // リターン
 }
 このような感じになります。
 ここで BeginPaint()、EndPaint() や SetPixelV() という関数が Win32 API の関数です。
 この関数群を利用してウインドウ(画面)に図形を描画するのが基本です。

その他:
・まずは C 言語のポインタ、構造体、共用体などを完璧に理解してから Windows の
 プログラミングを行って下さい。この基本がないと Win32 API の関数群を使えません。
 ちなみに Windows プログラミングのお勉強サイトを紹介します。
 (1)http://www.geocities.jp/ky_webid/win32c/index.html→『Win32API(C言語)編』
 (2)http://wisdom.sakura.ne.jp/system/winapi/→『Win32 API入門』
 (3)http://www.kumei.ne.jp/c_lang/→『猫でもわかるプログラミング』
 ※(3)は『Windows SDK編 第1部』~『Windows SDK編 第4部』を読みます。
 まずは上記のサイトを読みあさって下さい。
 (1)のサイトでは『第9章』~『第24章』までが描画に関わるページのようです。
 ここを読む前に『第0章』~『第8章』を読んだ方が良いでしょう。
 ここに書かれている内容がそこそこ理解できたならばまたアドバイスします。
・以上。(2)で紹介されている本は分かりやすいです。購入する際は本屋でチェック。

参考URL:http://www.geocities.jp/ky_webid/win32c/index.html
    • good
    • 0
この回答へのお礼

ありがとうございます。画像処理にはGUIが必要で、ポインタ、構造体、共用体をマスターしていることが条件なんですね。紹介してくださったサイトでマスターしてきます。

お礼日時:2007/09/10 20:45

高校の電気科ですか?


良いとこC言語の基本ぐらいだと思います。どちらかと言うと、WindowsアプリよりもマイコンでC言語を使ってハード制御って方向の勉強になりそうな気がします。情報処理科とかなら、まだアプリの方向を勉強するとは思いますが。
どちらにしろ高校の授業で行うレベルは実用で何かを作れるレベルには足らないレベルです。クラブ活動するか、独学で勉強しないと話になりません。
ゲーム業界で就職しているプログラマは独学でレベルを上げた人が多いですね。ゲーム専門学校で習うレベルでもゲーム会社にとっては話しにならないレベルですから。

ゲームプログラマまたは、Windowsアプリのプログラマを目指したいんでしょうか?
    • good
    • 0
この回答へのお礼

ありがとうございます。三年間でC言語の基本だけで専門学校でもゲーム会社にとって話にならないのですか。独学で勉強しなければいけないんですね。目標はゲームプログラマです。がんばります。

お礼日時:2007/09/11 18:25

グラフィックを利用するゲームとなるとハードルが突然高くなります。

覚悟は良いですか?
私としてのお勧めはいきなりDirectXに行ったほうが回り道しなくて良いんじゃないかと思います。その分、覚えることは沢山あります。
DirectXは、Windowsゲームの標準と言っても良いグラフィックAPIで多数の市販ゲームやXboxのゲームや個人で作るゲームまで幅広く使われています。WindowsAPIで描画するよりも高速な描画が可能で多機能です。

まず、コンパイラの環境を変更してください。DirectXを使うのに必要なコンパイラは無料で使える「Visual C++ 2005 Express Edition 日本語版」が一番導入が簡単です。まぁ、それでも大変なんですけどね。

で、DirectXを使うといいましたが敷居が高いと思うので少し敷居の低いDXライブラリから始めてみてはどうでしょうか?
DXライブラリというのを使うと直接DirectXを使うよりも簡単にゲームを作成することが可能です。実際にはDirectXを使っているのですがDXライブラリが面倒なところを隠してくれます。

DXライブラリ。
http://homepage2.nifty.com/natupaji/DxLib/
Visual C++ 2005 Express EditionでDXライブラリを使う準備。
http://homepage2.nifty.com/natupaji/DxLib/dxuse_ …
DXライブラリを使ったゲームの作り方。
http://l.huu.cc/g/
    • good
    • 0
この回答へのお礼

ありがとうございます。Visual C++ 2005 Express Edition 日本語版は持っているのであとはDXライブラリですね。あと、高校の電気科ではどこまで勉強するのでしょうか。

お礼日時:2007/09/10 20:54

> LSI C-86 試食版


DOSファンクションコールを使えばVGAにアクセスできますよ。
でも、
16ビットアプリでしか使えないし、
アセンブラとハードウェアの知識が要るし、
いまとなっては資料を入手するのも一苦労(というか入手不可?)だけど。
    • good
    • 0
この回答へのお礼

ありがとうございます。LSI C-86 試食版は資料がないほど古いコンパイラなのですか。新しいコンパイラに変えたほうがいいのでしょうか。

お礼日時:2007/09/10 20:50

Cにおいてグラフィック関数やライブラリは標準な物ではありません。


環境依存です。
グラフィック関数を持っているコンパイラもあればないコンパイラもありますし
コンパイラごとに誰かが作った標準ではない関数もある可能性があります。
    • good
    • 0
この回答へのお礼

ありがとうございます。グラフィック関数とライブラリを手に入れればいいんですね。

お礼日時:2007/09/10 20:28

グラフィック画面の操作はC言語の言語仕様には含まれていません。


グラフィックスを扱う為のAPI(WindowsであればWin32APIとかDirectXとかOpenGLとか)を使用する必要があります。

gl_openwin(-1, -1, 640, 480, 0);
はStudy C http://www.vector.co.jp/soft/win95/prog/se087583 …
が持っている独自のグラフィック操作関数のようです。
Study C以外では使えないと思います。

なお、LSI C-86 試食版ではWindowsリソースにアクセス出来ませんのでグラフィックスは扱えません。
    • good
    • 0
この回答へのお礼

ありがとうございます。C言語で画像は扱えないんですね。あと、Study C は使えないみたいです(使っているのはXPなので)。APIというものはどういうものなのでしょうか。

お礼日時:2007/09/10 20:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!