• ベストアンサー

猫でもわかる、がわかりません。

「Cの絵本」で基礎を勉強し、今日「猫でもわかるゲームプログラミング」を購入しましたが、ぜんぜんわかりません。 これでは話にならないと思いますが、せっかく購入したので活用したいです。 第一章の読み方だけ教えていただけないでしょうか? 「関数」と「構造体」が出てきてしばらく説明が続き(灰色背景の文)、 後に例が出ています(青色背景の文)が、 どういう関係になっているのかさっぱりわかりません。 具体的にどうする、といったことが書かれていないので、どう読み進めて勉強すればいいのかわかりません。 できるだけわかりやすく読み方の解説をお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.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 文字の事です。 ・以上。本屋でじっくり中身をリサーチしてから買いましょう。

参考URL:
http://www.amazon.co.jp/dp/4797331186/
twin_spica_310
質問者

お礼

詳しい解説ありがとうございます。 まずはC言語の文法を勉強しようと思います。 参考になります。 ありがとうございます。

その他の回答 (5)

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.5

★補足要求します。 ・前回の質問で >「Cの絵本」「C++の絵本」を読み、基本を理解しました。  となっていたのですが、基本とはどの程度のことでしたか?  C/C++ の基本とは文法をほぼ理解したものだと思っていました。  ポインタがまだならば『猫でもわかるゲームプログラミング』はとうぶん先ですね。 ・まず、C言語の何を基本と呼び理解しましたか。  あとまだ何が理解できていませんか。  教えて下さい。 ・その後にまたアドバイスします。

twin_spica_310
質問者

お礼

補足 文字セットをマルチバイトにしたところ、正常にコンパイルできました。 (↑の意味はよくわかりませんが・・・)

twin_spica_310
質問者

補足

基本を、理解したつもり、になっていました。 実際やってみるとまだまだでした。 初心者が入門書を眺めて、なんとなく全体のイメージが浮かんできたような気がする、という具合です。 つまりまだ基本が理解できていませんでした。 おっしゃるとおり「ゲームプログラミング」はとうぶん先だと痛感しました。 「まだ何が理解できていないか」がまずわからない、という感じです。 あやふやなイメージしか頭に入っていませんでした。 あとちなみに、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)
回答No.4

★修正。 ・リンクが間違っていましたね。  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』もどうぞ。

参考URL:
http://web.kyoto-inet.or.jp/people/ysskondo/index.html
twin_spica_310
質問者

お礼

回答ありがとうございます。 とても参考になります。

twin_spica_310
質問者

補足

やはり理解できませんでした・・・。 C言語の基礎についても不安なので、 まず「猫でもわかるC言語プログラミング」で勉強した後、 「猫でもわかるWindowsプログラミング」を読み、 今回購入した「猫でもわかるゲームプログラミング」を読もうと思うのですが、どうでしょうか? また、「猫でもわかるC言語プログラミング」は、ポインタの解説が不十分だと聞きました。 僕自身、まだポインタについて理解できていません。 ポインタに特化した書籍も必要でしょうか・・・?

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.3

★まずは青色の部分を打ち込んでソースをコンパイルしてみる。 ・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→『終了処理』

参考URL:
http://www.geocities.jp/ky_webid/win32c/index.html
  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.2

> 「Cの絵本」 > 「猫でもわかるゲームプログラミング」 これら2冊の本の中間を埋める勉強が必要だと思います。 基礎をマスターした、さあゲームだ、というのはギャップがありすぎるかも。 「猫でもわかるゲームプログラミング」はWindowsベースの ゲームプログラム作成をテーマにしていると思いますが、 そもそも、Windowsプログラム作成についてどのくらいの 知識をお持ちですか?

twin_spica_310
質問者

お礼

回答ありがとうございます。 おそらく知識はほとんど持ってません・・・。

  • fuchihiro
  • ベストアンサー率25% (35/140)
回答No.1

猫でもわかる。は私でもわかりにくかった(立ち読み)ので、柴田望洋氏の入門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

twin_spica_310
質問者

お礼

回答ありがとうございます

関連するQ&A