最初の応答は「wtf、arraylistsを使用しないでください!」と確信していますが、実際にはこれを何とかできるようにしようとしています。ArrayList内のArrayListへのアクセスの取得
これは基本的に3試合の試合のための「試合試合」です。一致リスト内の一致データにアクセスできません。下記を参照してください。
public void FindAndRemoveMatches() {
ArrayList foundMatches = LookForMatches();
//just checking if we're getting the right amount for now
Debug.Log("We found " + foundMatches.Count + " 'Match 3's");
foreach(Object el in foundMatches){
// Debug.Log(el.ToString());
}
}
ArrayList LookForMatches(){
//List<int> matchList = new List<int>();
ArrayList matchList = new ArrayList();
// search for horizontal matches
// note that we're subtracting two rows here.
// We don't need to check the last two rows because we're matching 3.
for (int i = 0; i < BOARD_WIDTH; i++){
for (int j = 0; j < BOARD_HEIGHT-2; j++){
ArrayList match = GetMatchHoriz(i,j);
if (match.Count > 2) {
matchList.Add(match);
i += match.Count-1;
}
}
}
// search for vertical matches
for (int i = 0; i < BOARD_WIDTH; i++){
for (int j = 0; j < BOARD_HEIGHT-2; j++){
ArrayList match = GetMatchVert(i,j);
if (match.Count > 2) {
matchList.Add(match);
j += match.Count-1;
}
}
}
return matchList;
}
// look for horizontal matches starting at this point
ArrayList GetMatchHoriz(int col,int row){
ArrayList match = new ArrayList();
match.Add(mBoard[col,row]);
for(int i = 1; (col+i)<8; i++) {
if (mBoard[col,row] == mBoard[col+i,row]) {
if(mBoard[col+i,row] > mPieces.GetNumPieceTypes()) match.Add(mBoard[col+i,row]);
} else {
return match;
}
}
return match;
}
// look for horizontal matches starting at this point
ArrayList GetMatchVert(int col,int row){
ArrayList match = new ArrayList();
match.Add(mBoard[col,row]);
for(int i = 1; (row+i)<8; i++) {
if (mBoard[col,row] == mBoard[col,row+i]) {
if(mBoard[col,row+i] > mPieces.GetNumPieceTypes()) match.Add(mBoard[col,row+i]);
} else {
return match;
}
}
return match;
}
良いニュースは、正確に一致を見つけることです。デバッグログを使用して見つかった一致の数は、画面上で起こっていることと相関があります。わーい!しかし、私はそれをボード(mBoard [col、row])と比較してそれらのオブジェクトをゲームボードから取り除くために、そのデータにアクセスする必要があります。
findandremovematchesの 'foreach'ループはキャストに関するエラーを示します。これに関する助け?
ありがとうございました!
正確なエラーメッセージが表示されます。 – mobiGeek
あなたは最初の応答について間違っていました:) –
wtf、arraylistsを使用しないでください! –