ゲーム作成で質問です。
Posted: 2010年4月22日(木) 20:35
お疲れ様です。 本日は、本(『ゲームプログラマになる前に』)を見て勉強しているのですが、 調べても意味が分からないところがあったので、 解決したく、質問をさせていただきたいと思います。 ただ今、 『' ', '#', '.', 'o', 'O', 'p', 'P'』 という文字を扱い、コンソール上に描画するという関数を上記の本を見ながら、 作成し、処理も走ったのですが、 以下の(???のコメント部分)意味が分からず、教えていただきたいと考え記述しました。 // 描画する関数 void draw(const Object* state, int width, int height){ // Object列挙型の順の通り、配列に格納 const char font[/url] = {' ', '#', '.', 'o', 'O', 'p', 'P'}; // 2次元配列でfontの配列を出力している for (int y = 0; y < height; ++y){ for (int x = 0; x < width; ++x){ // state(列挙型で定義済み)の配列から出力する位置を取得???←ココです。 Object o = state[ y*width + x ]; // fontの値を出力 cout << font[ o ]; } cout << endl; } } 上記の関数は、main関数からdrawを呼び出し、コンソール上に描画する関数です。 質問の内容は、???のコメントの後の、 Object型の『o』にマスのstateの配列を代入した後に、 ナゼ、fontの要素に『o』を指定したら、各文字が選べるのか分からないということです。 分かりません。。 どうかよろしくお願いいたします。 また、下記が描画するデフォルトと列挙型のObject定義となっています。 // #壁 _空間 .ゴール oブロック p人 const char gStageData[/url] = "\ ########\n\ # .. p #\n\ # oo #\n\ # #\n\ ########"; const int gStageWidth = 8; // ステージの横幅 const int gStageHeight = 5; // ステージの高さ // 列挙型の定義(列挙された値はint型と同じ) enum Object{ OBJ_SPACE, OBJ_WALL, OBJ_GOAL, OBJ_BLOCK, OBJ_BLOCK_ON_GOAL, OBJ_MAN, OBJ_MAN_ON_GOAL, OBJ_UNKNOWN, }; // 状態配列確保(列挙型のObjectを1次元配列として扱うためnewで動的なメモリを確保する) Object* state = new Object[ gStageWidth * gStageHeight ];