ミナポのプログラミング日記帳

日々のプログラミング勉強についてまとめるメモみたいな日記です。

ゲームプログラミングC++ 3日目(100日チャレンジ2日目)

・オブジェクトは参照で渡すのが良い。
 値渡しだとオブジェクトに大量のデータがあるときに効率が悪くなるため。

・スプライト
2Dゲームの視覚的オブジェクト。
キャラクターや背景などの動的なオブジェクトを表現するのに使用する。
SpriteRendererコンポーネントを対象のオブジェクトに設定し、そこに画像ファイルから取り込んだテクスチャを
紐づけ(アタッチ)することで、画像を表現する。

・画家のアルゴリズム
背景を描いてからキャラクターを描くアプローチのこと。
2Dの場合、うまく機能する。

・スプライトアニメーションは、静止2D画像を連続して素早く切り替えて表示することで表現する。
これで一連の動きを行うように見える。

しかし、一通り2章の内容を読んでみたが、めちゃくちゃ難しく感じる・・・
ちょっともう一回読み直すか!

ゲームプログラミングC++ 3日目(100日チャレンジ1日目)

とりあえず、1章は読み終わり、練習問題も何とかできた・・・

ということで2章を読み進めよう。

・is-a関係
A is a B という関係を表す。つまり、Aは (is) Bの一種 (a) ということ。
例:人は哺乳類の一種 ⇒ 人 is a 哺乳類
これは分類法にあたる。
分類法:物事を分類して、その物事の本質を掴もうとする分析方法。

・has-a関係
A has a B という関係を表す。つまり、AはBを含んでいる (has) ということ。
例:人は頭、腕、足、胴体を含んでいる。
これは分割法にあたる。
分割法:物事をより小さく分割することで、その物事の本質を掴もうとする分析方法。

ゲームプログラミングC++ 2日目

少しでも取り組むことを習慣化したい今日この頃・・・

・ハードコーディング
本来プログラム中に記述すべきでないリソース(エラーメッセージなど)を直接ソースコード中に埋め込むこと。
変数の値とかをそのままべた書きすること。マジックナンバーを使うやつだね。

・デルタタイム(delta time)
最後のフレームから今までに経過した時間の長さのこと。



今日でプロジェクトの例を確認しながら、第1章を読み終えたぞ!
よし、明日は第1章の練習問題にとりかかろう!

ゲームプログラミングC++を進めていくぞ

前々から買っていたゲームプログラミングC++の本に挑戦するぞ!
この本の内容に挑戦しながら、技術力を磨いていきたいなぁ。

とりあえず、第1章から読んでわからない箇所をまとめる。

フォースフィードバック
ゲームコントローラーなどの入力装置の付加機能の一つ。
利用者の操作や画面内の状況に合わせて振動や抵抗を加えるもの。

つまりは振動機能とかのことか!

・フルスクリーンモードより、ウィンドウモードのほうが実行した際、
 コードのデバッグが速くなる。

・ラスターグラフィックス
画像をそれぞれに色情報を持つピクセル(ドット)の集まりとして表現する形式。
ほとんどのディスプレイにて使用されている。

C++の要点まとめ

C++の本を読んだので、読んだところの要点をまとめる。

(1) :: をつけると、どこからでもグローバル変数を指すことができる!

(2) リンケージ:ファイルを超えて利用できるかどうか
  内部リンケージ:そのファイル内部でしか使えないもの
  外部リンケージ:そのファイルの外部でも使うことができるもの

(3) externのついた変数宣言は、別の場所で定義されたグローバル変数を使うということを表す。

(4) staticをつけると内部リンケージとなる。

(5) const定数は内部リンケージ。

(6) ヘッダファイルに関数プロトタイプやexternつき変数宣言を書いておくと便利!
  このヘッダファイルをインクルードすれば、いちいち書かなくてOK。

(7) ついでに、const変数も書いておくとさらに便利!

(8) ヘッダファイルには、二重インクルード防止コードを書く!

/* インクルードガードの記入例 */
#ifndef INCLUDE_GUARD // "ifndef のあとは任意のマクロ名(ファイルごとに変える) 
#define INCLUDE_GUARD // マクロ名は他の箇所で使わないように日時などを入れておくといいかも

const int n = 5;

#endif // #ifndef INCLUDE_GUARD

(9) ifndef はif not define (もし定義されていなければ)を意味する。