やっとC言語を少し使えるようになってきました。そこで質問なのですが、画面に絵(玉など)を表示するにはどうしたらいいのでしょうか。あと、それの動かしかたなどを教えていただけないでしょうか。インターネットで探してみると、
#include <graph.h>
main()
{
gl_openwin(-1, -1, 640, 480, 0);
getchar();
gl_closewin();
}
というソースがあったのですが、実行すると、ノーサーチファイルなどというエラーが出てきます。使っているコンパイラはLSI C-86 試食版です。コンパイラによって使えたり使えなかったりするヘッダファイルがあったりするのでしょうか。教えて下さい。
No.3ベストアンサー
- 回答日時:
★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
ありがとうございます。画像処理にはGUIが必要で、ポインタ、構造体、共用体をマスターしていることが条件なんですね。紹介してくださったサイトでマスターしてきます。
No.6
- 回答日時:
高校の電気科ですか?
良いとこC言語の基本ぐらいだと思います。どちらかと言うと、WindowsアプリよりもマイコンでC言語を使ってハード制御って方向の勉強になりそうな気がします。情報処理科とかなら、まだアプリの方向を勉強するとは思いますが。
どちらにしろ高校の授業で行うレベルは実用で何かを作れるレベルには足らないレベルです。クラブ活動するか、独学で勉強しないと話になりません。
ゲーム業界で就職しているプログラマは独学でレベルを上げた人が多いですね。ゲーム専門学校で習うレベルでもゲーム会社にとっては話しにならないレベルですから。
ゲームプログラマまたは、Windowsアプリのプログラマを目指したいんでしょうか?
ありがとうございます。三年間でC言語の基本だけで専門学校でもゲーム会社にとって話にならないのですか。独学で勉強しなければいけないんですね。目標はゲームプログラマです。がんばります。
No.5
- 回答日時:
グラフィックを利用するゲームとなるとハードルが突然高くなります。
覚悟は良いですか?私としてのお勧めはいきなり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/
ありがとうございます。Visual C++ 2005 Express Edition 日本語版は持っているのであとはDXライブラリですね。あと、高校の電気科ではどこまで勉強するのでしょうか。
No.1
- 回答日時:
グラフィック画面の操作は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リソースにアクセス出来ませんのでグラフィックスは扱えません。
ありがとうございます。C言語で画像は扱えないんですね。あと、Study C は使えないみたいです(使っているのはXPなので)。APIというものはどういうものなのでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) エクセルのマクロについて教えてください。 5 2023/01/21 09:39
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- Mac OS BOOK Air HDMI入力を表示するソフト 1 2023/01/21 18:06
- ドライブ・ストレージ デスクトップパソコンOSについて デスクトップパソコンスペック、Inteli54460 HD4600 3 2023/04/17 01:57
- Windows 10 パソコン初期化の件です 2 2022/06/05 11:05
- Ameba(アメーバブログ) アメブロは、HTMLのタグの入力を許さないブログ・サイトですか? 1 2023/06/18 18:48
- ホームページ作成・プログラミング アメーバ・ブログは"HTMLタグ"を許可してないのですか? 2 2023/06/17 21:08
- Microsoft ASP C#からvbsを実行したい 5 2022/11/24 17:31
- 食生活・栄養管理 英語が出来ないですが、chatGPTを使って絵を描かせたいのですがどうすれば・・・ 2 2023/06/11 17:47
- その他(動画サービス) VLCメディアプレーヤーについて 1 2022/11/29 14:19
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ListBoxで改行したい
-
for文の実行速度を遅くしたいの...
-
円の頂点の求め方を知りたいです。
-
ビットマップに描画をしてピク...
-
Excel VBA:コントロールボタン...
-
WindowsAPIの、ウインドウの表...
-
給紙トレイをダイアログを使わ...
-
C#を用いて描画する四角形の角...
-
ボタンの更新速度について
-
BCB5:Canvas->FrameRectで描画...
-
COLORREF color の反転色
-
PictureBoxのダブルバッファリ...
-
Pythonにおける物理のシミュレ...
-
ピクチャーボックスのサイズを...
-
エクセルのレーダーチャート 0...
-
コンボボックスのテキストを消...
-
.NETのPictureBoxでウインドウ...
-
win32api複数のタイマーを同時...
-
MySQLのデータをグラフ化して表...
-
worksheetFunctionクラスのVloo...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ListBoxで改行したい
-
for文の実行速度を遅くしたいの...
-
給紙トレイをダイアログを使わ...
-
Word 描画オブジェクトを削除...
-
VB.NETでグラフィックを描くと...
-
C#を用いて描画する四角形の角...
-
C# DrawImage 物理サイズでな...
-
ビットマップに描画をしてピク...
-
PowerPoint の VBA
-
画面に絵を出す方法
-
DrawLineで引いた線が消えてし...
-
VC++ ドラッグしながらの図の...
-
円の頂点の求め方を知りたいです。
-
MFCでのコンボボックスについて
-
画面の再描画について
-
Windows10のC#のピクチャーボッ...
-
フォームに描画して表示をスク...
-
VB PictureBoxの描画範囲
-
PictureBoxのダブルバッファリ...
-
C#で壁の当たり判定と自キャラ...
おすすめ情報