- ベストアンサー
猫でもわかる、がわかりません。
「Cの絵本」で基礎を勉強し、今日「猫でもわかるゲームプログラミング」を購入しましたが、ぜんぜんわかりません。 これでは話にならないと思いますが、せっかく購入したので活用したいです。 第一章の読み方だけ教えていただけないでしょうか? 「関数」と「構造体」が出てきてしばらく説明が続き(灰色背景の文)、 後に例が出ています(青色背景の文)が、 どういう関係になっているのかさっぱりわかりません。 具体的にどうする、といったことが書かれていないので、どう読み進めて勉強すればいいのかわかりません。 できるだけわかりやすく読み方の解説をお願いします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
★原因 ・Visual Studio 2005 では、初期設定が Unicode 文字になっています。 この文字コードは文字列の指定が LPWSTR、LPCWSTR という型になります。 今までの文字列は、シフトJISコードを使ってきましたが、このシフトJISコードが 『マルチバイト文字』です。よって、オプション設定で文字セットをマルチバイトに することで、正常にコンパイルできたのです。 ・これからは文字列に TEXT() マクロを使って記述して下さい。 今まで⇒"あいうえお" これから⇒TEXT("あいうえお") TEXT() マクロを使って記述された文字列は、コンパイラの文字セットによって、 マルチバイト文字(シフトJIS)や、国際化文字(Unicode)の型に自動的に切り替わります。 ・動作的には、コンパイラの設定で Unicode 文字の場合、UNICODE という記号定数が定義 されます。すると L"あいうえお" と記述したのと同じになります。文字列の先頭の『L』が LPWSTR、LPCWSTR の型にするための指示です。この『L』がないと文字列はマルチバイトの 文字列 LPSTR、LPCSTR で宣言されるようになります。TEXT() マクロの役割は、オプション 設定で簡単にマルチバイトと Unicode 文字を切り替えられるようにするためのものです。 ・次の2つの記事を今後の参考にどうぞ。 http://www.ruche-home.net/program/tips/tchar.php→『Unicode対応プログラミング - ルーチェ's Homepage』 http://wisdom.sakura.ne.jp/system/winapi/win32/win4.html→『Windowsと文字コード』 ●今後は ・最低限 C言語の文法だけは完全にマスターして下さい。 C言語の算術関数や文字列関数よりも、データ型、列挙型(enum)、構造体、共用体、配列、ポインタや フロー制御(if、switch、for、while、do-while、break、continue、gotoなど)を確実に理解していきます。 また理解するとは、頭で『覚えた』ではなく、実際にたくさんのサンプルやちょっとしたツールを 作成して『習うより、慣れろ!』という感覚で学習していきます。そうしないと C 言語でさえも 使えこなせません。 ・文字列、配列、ポインタなどはメモリ・イメージを図解して学習するのが一番分かりやすいと思います。 メモリ・イメージを『頭』の中で描き、それを元に文字列、配列、ポインタのアドレス操作を行います。 紹介: ・実際、買ってはいませんが『目次』と『中身検索システム』より次の本を紹介します。 http://www.amazon.co.jp/dp/4797331186/→『図解C言語 ポインタの極意』2,520円 上記のリンクより本の画像の下にある『この本の中身を閲覧する』をクリックすると中身が覗けます。 この本は、文字列、配列、ポインタを中心にデータ型、構造体、共用体なども解説されています。 あとちょっとしたアルゴリズムや C++ 言語のことも載っています。かなりお勧めです。 その他、ワイド文字についても P104、P108 に載っています。このワイド文字が Unicode 文字の事です。 ・以上。本屋でじっくり中身をリサーチしてから買いましょう。
その他の回答 (5)
- Oh-Orange
- ベストアンサー率63% (854/1345)
★補足要求します。 ・前回の質問で >「Cの絵本」「C++の絵本」を読み、基本を理解しました。 となっていたのですが、基本とはどの程度のことでしたか? C/C++ の基本とは文法をほぼ理解したものだと思っていました。 ポインタがまだならば『猫でもわかるゲームプログラミング』はとうぶん先ですね。 ・まず、C言語の何を基本と呼び理解しましたか。 あとまだ何が理解できていませんか。 教えて下さい。 ・その後にまたアドバイスします。
お礼
補足 文字セットをマルチバイトにしたところ、正常にコンパイルできました。 (↑の意味はよくわかりませんが・・・)
補足
基本を、理解したつもり、になっていました。 実際やってみるとまだまだでした。 初心者が入門書を眺めて、なんとなく全体のイメージが浮かんできたような気がする、という具合です。 つまりまだ基本が理解できていませんでした。 おっしゃるとおり「ゲームプログラミング」はとうぶん先だと痛感しました。 「まだ何が理解できていないか」がまずわからない、という感じです。 あやふやなイメージしか頭に入っていませんでした。 あとちなみに、win01.cppを実行してみたのですが、コンパイルエラーになってしまいました。 error C2440: '=' : 'LPCSTR' から 'LPCWSTR' に変換できません。 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。 error C2664: 'CreateWindowExW' : 2 番目の引数を 'char [6]' から 'LPCWSTR' に変換できません。(新しい機能 ; ヘルプを参照) 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。 なぜでしょう・・・。 Visual Studio 2005 を使っています。
- Oh-Orange
- ベストアンサー率63% (854/1345)
★修正。 ・リンクが間違っていましたね。 http://wisdom.sakura.ne.jp/system/winapi/win32/win7.html→『ウィンドウを作る』 http://wisdom.sakura.ne.jp/system/winapi/win32/win8.html→『ウィンドウクラスの登録』 http://wisdom.sakura.ne.jp/system/winapi/win32/win9.html→『メッセージ』 http://wisdom.sakura.ne.jp/system/winapi/win32/win10.html→『ウィンドウプロシージャ』 http://wisdom.sakura.ne.jp/system/winapi/win32/win11.html→『終了処理』 下の『参考URL』もどうぞ。
お礼
回答ありがとうございます。 とても参考になります。
補足
やはり理解できませんでした・・・。 C言語の基礎についても不安なので、 まず「猫でもわかるC言語プログラミング」で勉強した後、 「猫でもわかるWindowsプログラミング」を読み、 今回購入した「猫でもわかるゲームプログラミング」を読もうと思うのですが、どうでしょうか? また、「猫でもわかるC言語プログラミング」は、ポインタの解説が不十分だと聞きました。 僕自身、まだポインタについて理解できていません。 ポインタに特化した書籍も必要でしょうか・・・?
- Oh-Orange
- ベストアンサー率63% (854/1345)
★まずは青色の部分を打ち込んでソースをコンパイルしてみる。 ・Windows のプログラミングでは、ウインドウを出すだけで面倒なステップがあります。 具体的には、WinMain() 関数が C言語でいう main() 関数に相当する部分です。 その後に、 (1)InitApp() 関数で『ウインドウ・クラス』を登録しています。 (2)InitInstance() 関数では『ウインドウ』を作成して表示するようにしています。 (3)while 文中でメッセージ・ループを構成しています。 (4)while 文中でメッセージ・ループから抜けるとプログラムが終了します。 という動作ステップになります。 ・それでメッセージ・ループで GetMessage() 関数でウインドウ・メッセージが取得できたら TranslateMessage() で仮想キーを文字キーに変換して、DispatchMessage() 関数で WndProc 関数(プロシージャ関数)を実行しています。 その他: ・Windows GUI のプログラミングは基本的に (1)ウインドウ・クラスを登録 (2)ウインドウを作成 (3)メッセージ・ループで処理 の3ステップを WinMain() で構成します。 ・『メッセージ・ループ』とは、作成されたウインドウにマウスがクリックされるとその動作 信号をプロシージャ関数に送り、プロシージャ関数でクリック動作を記述するという方法を 行います。C/C++言語のコンソール画面とは全く異なるイメージを持たないといけないのです。 なにせ、マルチタスクですので単純なループも組めません。唯一、メッセージ・ループだけが while 文などで普通にループを組めます。それ以外では、いろいろと工夫をしないとループ中 『応答なし』とタイトルバーに表示されてフリーズ状態になります。注意! 最後に: ・とにかく、最初は青色の部分を打ち込んでソースファイルをコンパイルしてみて下さい。 なお、Win32 アプリケーションとして作成して下さい。コンパイラのオプションを確認して 設定して下さい。 ・正常にコンパイルできたら実行して下さい。 実行すると真っ白なウインドウが現れます。→最小化、最大化、閉じる、サイズ変更、移動など 基本操作が行えます。打ち込んだソースファイルの部分的な解説は、買った本に解説されている はずです。最初は単純なウインドウを出すだけで WinMain、InitApp、InitInstance、WndProc が 必要なのだと思って下さい。そのうちにウインドウ・プログラミングの概念が分かってきます。 あせらず、とりあえず動くウインドウを作ってから、なぜ、これで動くのか本やサイト、質問など をしてプログラムを理解していきましょう。 ・買った『本』だけでは説明不十分です。 下に参考文献1、参考文献2を紹介します。 これをよく読んでみれば、少し本を理解しやすくなると思います。 ・以上。 参考文献1: ・http://www.geocities.jp/ky_webid/win32c/index.html→『Win32API(C言語)編 トップページ』 第0章 はじめに 第1章 Windowsプログラミング版Hello World 第2章 ウィンドウを表示する も読んでみましょう。特に第2章を。 参考文献2: ・http://wisdom.sakura.ne.jp/system/winapi/frame.html→『ウィンドウを作る』 ・http://wisdom.sakura.ne.jp/system/winapi/frame.html→『ウィンドウクラスの登録』 ・http://wisdom.sakura.ne.jp/system/winapi/frame.html→『メッセージ』 ・http://wisdom.sakura.ne.jp/system/winapi/frame.html→『ウィンドウプロシージャ』 ・http://wisdom.sakura.ne.jp/system/winapi/frame.html→『終了処理』
- asuncion
- ベストアンサー率33% (2127/6289)
> 「Cの絵本」 > 「猫でもわかるゲームプログラミング」 これら2冊の本の中間を埋める勉強が必要だと思います。 基礎をマスターした、さあゲームだ、というのはギャップがありすぎるかも。 「猫でもわかるゲームプログラミング」はWindowsベースの ゲームプログラム作成をテーマにしていると思いますが、 そもそも、Windowsプログラム作成についてどのくらいの 知識をお持ちですか?
お礼
回答ありがとうございます。 おそらく知識はほとんど持ってません・・・。
- fuchihiro
- ベストアンサー率25% (35/140)
猫でもわかる。は私でもわかりにくかった(立ち読み)ので、柴田望洋氏の入門C言語を買い、勉強しました。これはかなりわかりやすいですよ。 http://www.amazon.co.jp/%E6%96%B0%E7%89%88-%E6%98%8E%E8%A7%A3C%E8%A8%80%E8%AA%9E-%E5%85%A5%E9%96%80%E7%B7%A8-%E6%9F%B4%E7%94%B0%E6%9C%9B%E6%B4%8B/dp/4797327928/ref=pd_bbs_sr_1/249-3605932-2821129?ie=UTF8&s=books&qid=1177764132&sr=8-1
お礼
回答ありがとうございます
お礼
詳しい解説ありがとうございます。 まずはC言語の文法を勉強しようと思います。 参考になります。 ありがとうございます。