
「Cの絵本」で基礎を勉強し、今日「猫でもわかるゲームプログラミング」を購入しましたが、ぜんぜんわかりません。
これでは話にならないと思いますが、せっかく購入したので活用したいです。
第一章の読み方だけ教えていただけないでしょうか?
「関数」と「構造体」が出てきてしばらく説明が続き(灰色背景の文)、
後に例が出ています(青色背景の文)が、
どういう関係になっているのかさっぱりわかりません。
具体的にどうする、といったことが書かれていないので、どう読み進めて勉強すればいいのかわかりません。
できるだけわかりやすく読み方の解説をお願いします。
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/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/
No.5
- 回答日時:
★補足要求します。
・前回の質問で
>「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 を使っています。
No.4
- 回答日時:
★修正。
・リンクが間違っていましたね。
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言語プログラミング」は、ポインタの解説が不十分だと聞きました。
僕自身、まだポインタについて理解できていません。
ポインタに特化した書籍も必要でしょうか・・・?
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.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
No.1
- 回答日時:
猫でもわかる。
は私でもわかりにくかった(立ち読み)ので、柴田望洋氏の入門C言語を買い、勉強しました。これはかなりわかりやすいですよ。http://www.amazon.co.jp/%E6%96%B0%E7%89%88-%E6%9 …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 大学受験 大学受験の参考書について 高3の私文志望(今のところ中堅私立大)です。 基礎固めをしたいです。 持っ 3 2023/08/17 13:47
- その他(恋愛相談) 小説を読み終わった後、人物の心情の読み取りとか、文章から情景を想像するのが難しくて、結局何を伝えたか 2 2022/03/27 18:38
- 大学受験 3浪しようと思うので、アドバイスお願いします。 自分としては結構メンタルきつくて後期でいいから、東京 3 2023/02/13 21:47
- その他(コンピューター・テクノロジー) AIに関連する用語を理解したい、RNN、LMM、LSTMなど、書籍で理解したい 1 2023/07/06 22:18
- 大学受験 参考書の勉強法について質問なのですが、参考書を一通り終わらせて、二周目を行う際、問題だけ解けば良いで 2 2023/06/30 20:19
- 電子書籍 紙の本を購入するか、kindleなどの電子書籍を購入していくかで迷ってます皆さんはどうしてますか? 4 2022/10/03 23:45
- 中学校 中2、宿題の意味がわからないです。 4 2022/08/13 13:42
- 高校 読書が止められなくて困っています。 女子高生です。私は昔から本が大好きで、幼い頃は絵本、そして童話。 7 2022/06/05 22:16
- 宅地建物取引主任者(宅建) 未経験・知識ゼロからの宅建取引士勉強方法について 2 2022/06/10 14:38
- 国家公務員・地方公務員 公務員試験の数的処理で苦戦しています。 1 2023/01/30 08:56
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
-
大麻の使用罪がなかった理由や法改正での変更点、他国との違いを弁護士が解説
ドイツで2024年4月に大麻が合法化され、その2ヶ月後にサッカーEURO2024が行われた。その際、ドイツ警察は大会運営における治安維持の一つの方針として「アルコールを飲んでいるグループと、大麻を吸っているグループ...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
入力した数値を倍々するプログラム
-
For文の終了値を関数にしても問...
-
数字以外を排除するには
-
do-while文が禁止される理由
-
C言語に関する質問
-
特定の文字列が出てくるまでの...
-
ループが回らない
-
猫でもわかる、がわかりません。
-
プログラムで関数は使わない方...
-
C言語、whileループを抜け出す...
-
エクセルVBAで Do While (1)って?
-
Excel VBAで年度をまたぐ期間の...
-
strstr()関数の実装内容について。
-
C言語forループが完結した場合...
-
整定時間
-
プログラムの解説をお願いします。
-
入力した文字列から母音だけを...
-
Enterキーを押されたら次の処理...
-
エクセルで可視セルにのみ値貼...
-
2÷3などの余りについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
do-while文が禁止される理由
-
入力した数値を倍々するプログラム
-
ループを途中で抜けたいのですが。
-
C言語forループが完結した場合...
-
break文でループを一気に抜ける...
-
C言語、whileループを抜け出す...
-
入力した文字列から母音だけを...
-
プログラムで関数は使わない方...
-
For文の終了値を関数にしても問...
-
Cプログラムが終了しない
-
if文の中にfor文なのか、for文...
-
他言語で言うcontinue文
-
文字列を後ろから1文字ずつ表示...
-
if文を使わずに奇数・偶数を判断
-
整定時間
-
for文while文の無限ループの違...
-
excel VBA if文について
-
n重のfor文にするには?
-
特定の文字列が出てくるまでの...
-
VBScriptでSQLに接続し、CSV出...
おすすめ情報