【第4回】サンプルプログラムの開発
(執筆+記事として投稿:55分くらい)
サンプルの解説になぞり、処理を理解する回
(書籍内:P8~13)
前回と同様、サンプルプロジェクトのソリューション(.sln)を開く。
(書籍内:P8)
ヘッダインクルード
最初の部分にはヘッダインクルードがある。
今回読み込んでいるのは、前回の学習時に既に解説を呼んでいた
「iostream」のみである
その下の、「using namespace std」は呪文とのこと
これ猫でもC++でやったけど
本来なら、stdというもののなかの、coutだったりするので「std::cout」でないとエラーがでてしまうところを
最初にstd ってnamespace使うよ!って宣言しとくと"std::"を前につけんでもよくなる的なやつだったと思う。
ステージの作り方
char型という文字列をあつかう1バイトのかたで、ステージの役割を果たす文字列を保存。
┗char型は文字数+1の配列を使って文字列を保存してるらしい。
┗なるほど、よくわからん。
constはfinal的な、もう変えないよう = 定数的な宣言であるらしい。
てな感じで、ステージデータは、「const char」で保存されており、
文字列無いの改行は「\n\」で表すので、下記のようなコードになるらしい。
########\n\
# .. p #\n\
# oo #\n\
# #\n\
########";
で、ステージの横縦を設定と。
const int gStageWidth = 8;
const int gStageHeight = 5;
ふむふむ
作れと言われればできんが、理解はできる。
列挙型
enum Hogehoge{
OBJ_HOGEHOGE,
OBJ_HUGAHUGA,
};
的なやつらしい。
著者ルール的には、大文字表記らしい。(割と通念なんだろう。)
サンプルプログラム上では、SPACE、WALL、GOALなどステージを構成する要素らしきOBJを列挙している。
enum Object{
OBJ_SPACE,
OBJ_WALL,
OBJ_GOAL,
OBJ_BLOCK,
OBJ_BLOCK_ON_GOAL,
OBJ_MAN,
OBJ_MAN_ON_GOAL,
OBJ_UNKNOWN,
};
関数プロトタイプ
関数プロトタイプとか旧世代っぽい名前なのに、強い(難しい)と確信できるのが出てきてしまった。。。
なんか解説呼んでもよくわからなかったので、Google先生に聞いてみた。
「関数プロトタイプ とは C++」っつって。
上から2番目に出てきた、下記サイトを読んだ。
http://www7b.biglobe.ne.jp/~robe/cpphtml/html01/cpp01026.html
なんか、
・とりま関数を定義しておく。
・使う関数をあらかじめ列挙できる。
・関数の中身どころか引数すら定義しなくてよい。
・ヘッダインクルードなどで便利。
・処理を全て追わずとも関数がぱっと見でわかるので便利。
・大規模な開発だとかなり重要度高まるそうな。
って感じらしい。
正直ありがたみはなんとも分かっていないが。
中身や引数すらいらず、とりあえず関数を定義しておくもの。
┗ヘッダインクルードなどで便利で、大規模開発だと有用性が高いらしいよ!
くらいの認識にとどめておこうと思う。
main関数
重要そうなTIPSだけ書くと、列挙型をクラス名であるかのように使うのに違和感あるんやろ?
┗列挙型は、れっきとした型だから、newやってできるし、引数、戻り値にも使えるやで~
とのことである。
まあ、自分で作る型ってことなわけで、中身としてはただのintでも、自身が定義したもの以外を入れようとするとコンパイルエラーが出るわけなので
自身が定義した値のみが入ることが保証できるわけだ。 すっごーい!
ってことでりみっと。
明日の朝から、1時間早く出社して、業務に直接的な内容の学習を進めようかな?とおもった。
この横断的かつ、初歩的な学習も重要ではあるともうのだが、
たぶんこれ、成長実感したり、実際に業務に活かせるって感じじゃなく
教養とかに近い感じだと思う。。。(もちろん重要だけど)
┗途中興味惹かれたものとかがあれば、そこに関する深堀にシフトしていってもいいかもしれん。
終わっちゃう前に、チーズてりやき(マック)食べたい。。。
【第3回】ついにサンプルへ
(執筆+記事として投稿:65分くらい)
サンプルを実行しながら、VisualStudioに慣れる回
(書籍内:P3~P11)
CD内容コピー(秒で済んだ)
解凍(前からインストールしていた解凍ソフトで)
sjisなのでSublimeで開くと、内蔵物のtxt読めねー
┗エンコード変換した
(書籍内:P3)
プロジェクトをスタートアッププロジェクトに?
ほうほう?
\GameLib2008\src\01_FirstGame\FirstGame.sln
┗これだったっポイ(VitualStudio使ったことなさ過ぎて分らんかった。)
読込が色々されていい感じ
(配置フォルダ)/GameLib2008/src/01_FirstGame/UpgradeLog.htm
移行時に消えたものとか表示されてるポイ?
┗よくわからんので放置
SDKがねえって言われ
エラー通りに、
右クリック(今実行しているディレクトリ→NimotsuKunに対しての操作)
プロジェクトの再ターゲット
┗出てきた選択肢(SDK選択)
うんうん。読み込まれていい感じ
もう一度実行
参考書通り、黒画面にパズルっぽい表記でた!
NimotsuKunFinal
のゲームは後半のページにある環境設定せんと動かんらしい。。。
設定が良くわからんってなったので先に進もうと思う(5分くらい悩んだ)
下記から2012向けのプロジェクトをDL
┗下記サイト参考
http://log.moremorefor.net/entry/game-programmer-book-build-vs2015
┗DLするサイト
https://www.shuwasystem.co.jp/support/7980html/2118.html
こちらだと、上記の、プロジェクトの再ターゲットとかせずに、
勝手に出てくる案内通りに最適化すると
問題なくサンプルをビルドできた。
┗以降こちらを触っていくことにする。
サンプルゲームで一通り遊んだので、先に進む
(書籍内:P6)
のコードをmain.cppに書き写し、実行。
上手くいかん。
エラーポイの出てるし。。。
「PDB ファイルを開けないか、ファイルが見つかりません。」
上記エラー文をコピペしてGoogle先生に聞いてみると、下記サイトがでてきた。
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14140662239
無視していいとのこと。
う~ん?じゃあなんで動かんのだ。。。。
2分くらい悩んだけど、次のページに
「このままだと、エンター押した瞬間に処理終了して画面消えっから、無限ループ書いて、強制的に出力結果を表示したままにしよう!練習以外でこんなことしちゃだめだぞ♪」
てきなことが、書いてあった。
ふざけんな。
エンター押して、実行しよう!って言ったじゃんか。。。
俺の2分を返してくれ。
(ちゃんと本読もうな?自分。)
そして、自身のC++の基本のkすら理解していない現状に軽く絶望。
でもね?過去に参考書でちらっとやって放置とか。
これって、運転免許取ったはいいけど、数年ペーパードライバーみたいなもんだから。
細かい事どころか、エンジンかける手順とか、基本的な標識すら忘れちゃっても仕方ないやんな?やんなぁ!?
言い訳タイム終了。
ってことで、無限ループするよう追記した。
無事に入力を受け取って、それを出力してくれるという。
ネコでもわかるシリーズのC++をちょろっとやった時にも最初のほうでやった
基本中の基本
Hello World
てきな処理の完成だ!
ここでリミット1時間。
インストールとか含めとはいえ、1時間はやはり短め。
そして、数学とかもだけれども、やってないとどんどん忘れるし、こんな基本的なことも覚えてないんだなと。。
(脳死でコピペもいいけど、少しは処理の内容を理解せねばと思った)
少しでもいいから、毎日業務以外でプログラムに触れる機会を取らねばと感じた瞬間だった。
┗やるとは言ってない。
文の書き方もどんどん雑になってくが、まあいいだろう。
週末に、その週進んだ部分のまとめ的なことを記事としてまとめれればいいなと思ってる。
┗フックになりそうな、用語
┗技術的TIPSなど
明日から、FGOの復刻プリヤコラボだから頑張ろうと思う。(コラボキャラ持ってないので)
【第2回】ぷろじぇくとをつくる
(執筆+記事として投稿:45分くらい)
ツールの使い方に慣れ、初歩の初歩を学ぶ回
(書籍内:P5~P8)
サンプルをいじくりまわしたいところだが、外付けDVDがまだ手元にないよってことで、その先の
プロジェクトつくりかた。
簡単なコード書こう!
みたいな内容を進めていこうと思う。
プログラミングのフぐらい、半濁点すらついてない感じの内容。
これでもプログラミングを生業としているが、おまえ初心者やろ?と言われてもおかしくないレベルの部分をやっていく。
ほんとに思うが、よくもまあエンジニアとして就職できたなと。
世の中のエンジニアにこんなにも開発経験のない、プログラムへの理解が乏しいやつがいるのかと常々思っている。
得意なものって人によって違うよねってことで閑話休題。
早速だが、Visual Studio2017において、
書籍内P5のとおりにプロジェクトが作成できない問題が発生。
画面のUI違うよ怖いよ。
とりあえず似てる選択肢を選ぼうとなった。
プロジェクト -> 新規作成
VisualC++ -> Windowsデスクトップ
...Win32コンソールアプリケーションなんてないんじゃが?
とりあえず、コンソールアプリケーションという言葉が入っているからこれじゃね?という感じで、選ぶ
...アプリケーション設定で「空のプロジェクト」の設定を有効に?
そんな選択肢表示されず、プロジェクト作ってくれちゃったよ、やだ有能。
設定をあらかじめしないとなんだねきっと!と思って探してみるも見つからず、
「アプリケーションの設定 空のプロジェクト」と何ともなニュアンス検索をしたら、Google先生が的確な情報を教えてくれた。
いつもお世話になっているQiitaさんとこの記事。
[Visual Studio 2017 Update 3 以降で Win32 プロジェクトが作成できなくなった時の対処法]
https://qiita.com/sasakenotolab/items/9fe86626d206ce4d6668
あ~
これだわ。
ってことで、いったんこの通りにやってみる。
(かかった時間:迷い(5分)→調べ(3分)→作れた!(2分))
作成できたところで、
画面右側「ソリューションエクスプローラー」の「ソースファイル」ってディレクトリを右クリックして、main.cppを作成してP6の内容に進んでいく。
ってしようとしたけど
時間オーバー(記事書くのあわせて1時間は短いな。。。)
記事書きながら進めるの、効率悪いな~
飛び飛びになると設定している要件を満たせん気がするし。。。
このあたり、進めるの優先にしつつ、少し変えていこうと思う。
TODO:記事の書き方、学習の進め方を改善
MEMO:平日はメモだけ残して、進めるの重視 → 週末にメモを基に記事を作成(予約投稿)もありか?
┗やらなくなりそ~(笑)
[余談](執筆+記事として投稿:20分くらい)
シャワー浴びながら、将来について考えたのが一番の思考作業だった。
将来について。
喜びを感じる瞬間について。
そもそも何のために技術力高めたいの?
技術力ってお前にとってなんなのさ?
とかとか。
自分のことなのに輪郭がつかめない部分がまだ多いけれども、モチベーションにもつながると思うので考える回数を増やして行こうと思う。
目の前のことをガムシャラに頑張れば、会社にぶら下がって安定した生活が送れるという幸せな環境に感謝しつつ、
使命感や明確な意志をもって自分の人生を舵取りしていけるよう、日々考えていかねばと思う今日この頃だった。
【雑談回】毎日投稿を自動化し記事作成コストを下げる魔法のような方法があるってマ!?
(執筆+記事として投稿:0分くらい)
今日は、他のことをして人生を謳歌しました。
(書籍内:P0~P0)
あしたはがんばります(小並感)
----------------------------------------------------------------------------
上記の文章をテンプレとして、少し先まで毎日予約投稿しておく。
すると、
毎日記事を書いているかのように!
言わずもがな、学習を進めるのが本質であるわけなので本末転倒と思わなくもないのだが、
・毎日23:00までに学習して、編集するというマイルール作り
・記事作成の手間を省くことで精神的な作業開始ハードルを下げる
などができ、一定のリズムで進めていけるかなと思いとりあえず、2/1までセットしてみた。
週末の暇なときにどんどん先まで予約投稿していこうと思う。
家に着くのが23:00過ぎになることが多々多々あるため、
それまでに帰れなかった日は、学習しないで休もう?っていう安全装置でもあるわけなのである。
(自分に)優しい世界。。。
なんでこんなブログみたいなこと書いてるかというと。
第一回でぽちった外付けDVD読込機がまだ届いてないという。。。
暇だったら、サンプル飛ばして、予習がてら先に進んだものを投稿しようと思う。
とはいえ、現時点でモチベーションが切れかけの蛍光灯のように、チカチカしてしまっているので、
何でやるんだっけ?
どういう状態になりたいんだっけ?
みたいなことを悶々と考えるふりでもしておこうと思う。
【第1回】記念すべき第1回!
(執筆+記事として投稿:25分くらい)
【第1回】ついに実践!! 始まりの終わりをはじめry)
(書籍内:P3~P5)
実践です!実践ですよ~
ってなわけで、ついに本編突入
長い長いエピローグ(記事数稼ぎ)はお終いにして、ついに書籍内容に入る。
記念すべき初回記事!!
っと思ったんだけど、お手本を動かそう!って言われた。
CD-ROMの中身移してって。
久々に聞いたわCD-ROM。
我が家のPCには、読み込む機構が備わってないので、なんとも早々だがエンディングとなる。
その先をチラ見したが、サンプル動かして、環境設定して~~~って流れらしい。
環境設定で詰まりそうな予感をひしひしと感じるよね....
てなわけで、amazonで外部読み込み機をポチって今回は終わろうと思う。
週末の自分に期待だね!!
┗ファイト(^^)/
これにした(選ぶのにかかった時間:15分くらい)
https://www.amazon.co.jp/gp/product/B07CTHR4D5/ref=ppx_yo_dt_b_asin_title_o00__o00_s00?ie=UTF8&psc=1
[余談](執筆+記事として投稿:3分くらい)
今日は、
Official髭男dism
っていう歌手の歌を流しながら、深夜のモンブラン+栄養ドリンク ドーピングで作業したよ! (作業に入る前のアニメ、YouTube鑑賞:75分くらい)
https://www.youtube.com/watch?v=ReCnlwVZj1M&index=7&list=PLm2cxnu-egMnM-P7RQyUUMJ_EqwloZQbi