プロが教える店舗&オフィスのセキュリティ対策術

「Cの絵本」で基礎を勉強し、今日「猫でもわかるゲームプログラミング」を購入しましたが、ぜんぜんわかりません。
これでは話にならないと思いますが、せっかく購入したので活用したいです。

第一章の読み方だけ教えていただけないでしょうか?

「関数」と「構造体」が出てきてしばらく説明が続き(灰色背景の文)、
後に例が出ています(青色背景の文)が、
どういう関係になっているのかさっぱりわかりません。

具体的にどうする、といったことが書かれていないので、どう読み進めて勉強すればいいのかわかりません。

できるだけわかりやすく読み方の解説をお願いします。

A 回答 (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/w …→『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/
    • good
    • 0
この回答へのお礼

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

参考になります。
ありがとうございます。

お礼日時:2007/04/29 22:43

★補足要求します。


・前回の質問で
>「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 を使っています。

補足日時:2007/04/29 09:18
    • good
    • 0
この回答へのお礼

補足

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

お礼日時:2007/04/29 10:51

★修正。


・リンクが間違っていましたね。
 http://wisdom.sakura.ne.jp/system/winapi/win32/w …→『ウィンドウを作る』
 http://wisdom.sakura.ne.jp/system/winapi/win32/w …→『ウィンドウクラスの登録』
 http://wisdom.sakura.ne.jp/system/winapi/win32/w …→『メッセージ』
 http://wisdom.sakura.ne.jp/system/winapi/win32/w …→『ウィンドウプロシージャ』
 http://wisdom.sakura.ne.jp/system/winapi/win32/w …→『終了処理』
 下の『参考URL』もどうぞ。

参考URL:http://web.kyoto-inet.or.jp/people/ysskondo/inde …

この回答への補足

やはり理解できませんでした・・・。

C言語の基礎についても不安なので、
まず「猫でもわかるC言語プログラミング」で勉強した後、
「猫でもわかるWindowsプログラミング」を読み、
今回購入した「猫でもわかるゲームプログラミング」を読もうと思うのですが、どうでしょうか?

また、「猫でもわかるC言語プログラミング」は、ポインタの解説が不十分だと聞きました。
僕自身、まだポインタについて理解できていません。
ポインタに特化した書籍も必要でしょうか・・・?

補足日時:2007/04/29 08:37
    • good
    • 0
この回答へのお礼

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

とても参考になります。

お礼日時:2007/04/29 08:02

★まずは青色の部分を打ち込んでソースをコンパイルしてみる。


・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.h …→『ウィンドウを作る』
http://wisdom.sakura.ne.jp/system/winapi/frame.h …→『ウィンドウクラスの登録』
http://wisdom.sakura.ne.jp/system/winapi/frame.h …→『メッセージ』
http://wisdom.sakura.ne.jp/system/winapi/frame.h …→『ウィンドウプロシージャ』
http://wisdom.sakura.ne.jp/system/winapi/frame.h …→『終了処理』

参考URL:http://www.geocities.jp/ky_webid/win32c/index.html
    • good
    • 0

> 「Cの絵本」


> 「猫でもわかるゲームプログラミング」

これら2冊の本の中間を埋める勉強が必要だと思います。
基礎をマスターした、さあゲームだ、というのはギャップがありすぎるかも。

「猫でもわかるゲームプログラミング」はWindowsベースの
ゲームプログラム作成をテーマにしていると思いますが、
そもそも、Windowsプログラム作成についてどのくらいの
知識をお持ちですか?
    • good
    • 0
この回答へのお礼

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

おそらく知識はほとんど持ってません・・・。

お礼日時:2007/04/29 08:01

猫でもわかる。

は私でもわかりにくかった(立ち読み)ので、柴田望洋氏の入門C言語を買い、勉強しました。これはかなりわかりやすいですよ。

http://www.amazon.co.jp/%E6%96%B0%E7%89%88-%E6%9 …
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/04/29 07:34

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