C++ ゲーム作りのための勉強1 書いて覚えるための初心者自己中記事
ゲーム作りたいので最初はコンソールゲームというものから勉強していきます。
HANDLE hCons = GetStdHandle(STD_OUTPUT_HANDLE);
コンソールでゲームするのに表示とかどうなっているのかさっぱりわからなくて調べたら、windowsで作る場合はwindowsのウィンドウを操作するコンソールハンドルなるものを呼び出すらしい。
#include <windows.h> にwindows関連のいろいろが入ってるのか。
ハンドルは、「取り扱う」とかの意味で覚えればいいのかな。
GetStdandle関数でSTD_OUTPUT_HANDLE を指定すると戻り値でコンソールハンドルが取得できる。
これを保持するのはHANDLE型
HANDLE型って何だろうと思ったら、void* をtypedefしただけらしい。
WORD attr = 0;
色を指定するためのビットフラグを登録する変数。
WORD型ってなんぞやと思ったら、これもunsigned short をtypedefしただけだった。なんなんだろうね。
色の指定について。
赤
青
緑
高度?
の組み合わせで作られるのかな?
それぞれがビットフラグになってて、組み合わせで色が作られるみたいな。
コンソールフォントというのか。
attr |= FOREGROUND_INTENSITY; attr |= FOREGROUND_RED; attr |= FOREGROUND_GREEN; attr |= FOREGROUND_BLUE;
SetConsoleTextAttribute(hCons, attr);
SetConsoleTextAttribute関数で、第一引数には扱うハンドル第二引数にWORD型でビットフラグ指定したの。
これでSTD_OUTPUT_HANDLE(標準出力ハンドル)のフォントカラーを変更できるのか。
一連の流れを関数で簡単に設定できるようにしたりするのね。
FOREGROUND_~~ がフォントカラー
BACKGROUND_~~ が背景色
次、表示される文字の場所を指定する。
さっきの色と同じ流れだな。
HANDLE hCons = GetStdHandle(STD_OUTPUT_HANDLE);
ハンドル取得。
COORD pos;
表示場所の指定をするからx軸とy軸を指定する。
そのための型がCOORD型
COORD型はなんだろう。
typedef struct _COORD { SHORT X; SHORT Y; } COORD, *PCOORD;
こんなん書いてあった。
SHORTはtypedefしただけのshort型でした。
_COORD構造体、中身short X / Y
をCOORDとしてるのか。
pos.X = x; pos.Y = y; SetConsoleCursorPosition(hCons, pos);
関数でxとy をshort型で引数にしてさっきみたいに入ればいいのか。
表示位置を指定するには
SetConsoleCursorPosition関数(扱うハンドル,COORD型)
ランダムしたいときに
#include <random>
random_device rnd;
呼び出しは rnd();
オーバーロードされてるっぽい。
デバイスの状態をもとにランダム作成してるらしい。
動く*が壁にぶつかったら反射するようなコードを書いてみましょう、っていうのを頑張ってやった。出来たからニヤニヤしてたら、解答欄でものすごく短いコードで実現してた・・・。
計算させるって大事だなぁ。すごいわ。
初めて尽くしだから、いったん区切ろう。
ここまで。