私は C# と XNA の初心者で、現在ボード ゲーム LUDO を作ろうとしています。私は以前にいくつかのJavaプログラミングを行ったことがあり、オブジェクト指向プログラミングと共通しています。現時点で私が立ち往生しているのは、「ボード」のスプライトを描画することです。
MS ペイントで自分で使用しているすべてのスプライトを作成しました。すべての異なるスプライト (26 の異なるスプライト) はすべて同じサイズの 45px X 45px です。私が考えていたのは、数値を含む 2Darray を作成することでした。これらの数値は、テクスチャ配列内の特定のスプライトを参照します。例: ここに、私が設定しているボードの種類へのリンクがあります: http://upload.wikimedia.org/wikipedia/commons/thumb/6/6c/Klassisk_ludo-spill.JPG/220px-Klassisk_ludo-spill.JPG
私の 2Darray のセットアップは次のとおりです。ボードの上部から開始し、左から右に進みます。だから、これは私が私の2Darrayを作った方法です:
//Create the full grid of the board, where the numbers refer to the sprites that is supposed to be
// placed here. the array starts from the top of the bord from left to right and then goes downwards.
int[,] myArray = new int[,] {{3,3,3,3,3,3,4,4,4,0,0,0,0,0,0},
{3,24,25,23,25,3,4,0,0,0,12,13,12,13,0},
{3,22,23,22,23,3,4,0,4,0,10,11,10,11,0},
{3,24,25,23,25,3,4,0,4,0,12,13,12,13,0},
{3,22,23,22,23,3,4,0,4,0,10,11,10,11,0},
{3,3,3,3,3,3,4,0,4,0,0,0,0,0,0},
{4,3,4,4,4,4,6,0,5,4,4,4,4,4,4},
{4,3,3,3,3,3,3,9,1,1,1,1,1,1,4},
{4,4,4,4,4,4,7,2,8,4,4,4,4,1,4},
{2,2,2,2,2,2,4,2,4,1,1,1,1,1,1},
{2,20,21,20,21,2,4,2,4,1,16,17,16,17,1},
{2,18,19,18,19,2,4,2,4,1,14,15,14,15,1},
{2,20,21,20,21,2,4,2,4,1,16,17,16,17,1},
{2,18,19,18,19,2,2,2,4,1,14,15,14,15,1},
{2,2,2,2,2,2,4,4,4,1,1,1,1,1,1}};
私が言ったように、これらの数値は、別のテクスチャ配列の特定のスプライトに対応すると想定されています。どの番号がどのスプライトに対応するかの概要は次のとおりです。
textureArray = newTexture2D[26];
0 = blueblock;
1 = redblock;
2 = yellowBlock;
3 = greenBlock;
4 = whiteBlock;
5 = blueredBlock;
6 = greenblueBlock;
7 = greenyellowBlock;
8 = yellowredBlock;
9 = xcenterBlock;
10 = BlueBottomLeftBlock;
11 = BlueBottomRightBlock;
12 = BlueTopLeftBlock;
13 = BlueTopRightBlock;
14 = RedBottomLeftBlock;
15 = RedBottomRightBlock;
16 = RedTopLeftBlock;
17 = RedTopRightBlock;
18 = YellowBottomLeftBlock;
19 = YellowBottomRightBlock;
20 = YellowTopLeftBlock;
21 = YellowTopRightBlock;
22 = GreenBottomLeftBlock;
23 = GreenBottomRightBlock;
24 = GreenTopLeftBlock;
25 = GreenTopRightBlock;
現時点では、バックグラウンド クラスで次のようなコンテンツ マネージャーを作成しました。
// ContentManager that is loadedes textures and position for the objects in to game1
public void LoadContent(ContentManager content)
{
this._BlueBlock = content.Load<Texture2D>("blue-block");
this._RedBlock = content.Load<Texture2D>("red-block");
this._YellowBlock = content.Load<Texture2D>("yellow-block");
this._GreenBlock = content.Load<Texture2D>("green-block");
this._WhiteBlock = content.Load<Texture2D>("white-block");
this._BlueRedBlock = content.Load<Texture2D>("blue-red-block");
this._GreenBlueBlock = content.Load<Texture2D>("green-blue-block");
this._GreenYellowBlock = content.Load<Texture2D>("green-yellow-block");
this._YellowRedBlock = content.Load<Texture2D>("yellow-red-block");
this._XCenterBlock = content.Load<Texture2D>("x-center-block");
this._BlueBottomLeftBlock = content.Load<Texture2D>("blue-bottomleft-block");
this._BlueBottomRightBlock = content.Load<Texture2D>("blue-bottomright-block");
this._BlueTopLeftBlock = content.Load<Texture2D>("blue-topleft-block");
this._BlueTopRightBlock = content.Load<Texture2D>("blue-topright-block");
this._RedBottomLeftBlock = content.Load<Texture2D>("red-bottomleft-block");
this._RedBottomRightBlock = content.Load<Texture2D>("red-bottomright-block");
this._RedTopLeftBlock = content.Load<Texture2D>("red-topleft-block");
this._RedTopRightBlock = content.Load<Texture2D>("red-topright-block");
this._YellowBottomLeftBlock = content.Load<Texture2D>("yellow-bottomleft-block");
this._YellowBottomRightBlock = content.Load<Texture2D>("yellow-bottomright-block");
this._YellowTopLeftBlock = content.Load<Texture2D>("yellow-topleft-block");
this._YellowTopRightBlock = content.Load<Texture2D>("yellow-topright-block");
this._GreenBottomLeftBlock = content.Load<Texture2D>("green-bottomleft-block");
this._GreenBottomRightBlock = content.Load<Texture2D>("green-bottomright-block");
this._GreenTopLeftBlock = content.Load<Texture2D>("green-topleft-block");
this._GreenTopRightBlock = content.Load<Texture2D>("green-topright-block");
}
そして、これが私の主な問題に出くわすところです。このようにコンテンツをロードする必要がありますか? もしそうなら、textureArray のテクスチャをどのように参照して、数値が 2DArray にあるはずのテクスチャと一致するようにすればよいでしょうか?
ボードは 15 X 15 スプライト (合計 225) であるため、すべてのスプライトを正しい位置に配置するネストされた for ループを作成することを考えていました。また、「public void Draw(SpriteBatch spriteBatch)」メソッドで foreach ステートメントを使用する必要がありますか?
誰かが私にいくつかの指針を教えてくれることを本当に願っています。
よろしくお願いします!