I am currently working on a matrix game with the following condition:
- When a user selects two balls of the same color, they will destroy the two patterns with the same color.
I have successfully implemented horizontal and vertical selection. However, I am facing difficulties with diagonal selection. It seems like there might be an issue in my code for the diagonal selection condition.
The problem lies in my coding where the diagonal selection does not match the same color pattern. In particular, I am unsure if the below condition for diagonal selection is correct:
onCheckPattern: function(pPattern) {
if (pPattern != null) {
this.mPromptTimerTally = 0;
this.mPromptMarkSpr.setPosition(-1000.0, -1000.0);
if (this.mFirstCheckPattern === null) {
this.mFirstCheckPattern = pPattern;
this.mCheckMarkSpr.setPosition(this.mPatternsPos[this.mFirstCheckPattern.m_nRowIndex][this.mFirstCheckPattern.m_nColIndex]);
} else {
this.mSecondCheckPattern = pPattern;
if (this.mSecondCheckPattern === this.mFirstCheckPattern) {
// this.mSecondCheckPattern = null;
// return;
}
var isAdjacent = false;
//HORIZONTAL& VERTICAL
if (this.mFirstCheckPattern.m_nRowIndex == this.mSecondCheckPattern.m_nRowIndex) {
if (this.mFirstCheckPattern.m_nColIndex > 0 &&
this.mFirstCheckPattern.m_nColIndex - 1 == this.mSecondCheckPattern.m_nColIndex)
isAdjacent = true;
else if (this.mFirstCheckPattern.m_nColIndex + 1 < this.m_nMatrixCol &&
this.mFirstCheckPattern.m_nColIndex + 1 == this.mSecondCheckPattern.m_nColIndex)
isAdjacent = true;
} else if (this.mFirstCheckPattern.m_nColIndex == this.mSecondCheckPattern.m_nColIndex) {
if (this.mFirstCheckPattern.m_nRowIndex > 0 &&
this.mFirstCheckPattern.m_nRowIndex - 1 == this.mSecondCheckPattern.m_nRowIndex)
isAdjacent = true;
else if (this.mFirstCheckPattern.m_nRowIndex + 1 < this.m_nMatrixRow &&
this.mFirstCheckPattern.m_nRowIndex + 1 == this.mSecondCheckPattern.m_nRowIndex)
isAdjacent = true;
}
//
//DIAGONAL SELECTION
else if (this.mFirstCheckPattern.m_nRowIndex + 1, this.mFirstCheckPattern.m_nColIndex - 1 && this.mSecondCheckPattern.m_nRowIndex, this.mSecondCheckPattern.m_nColIndex)
{
isAdjacent = true;
} else if (this.mFirstCheckPattern.m_nRowIndex - 1 == this.mSecondCheckPattern.m_nRowIndex && this.mFirstCheckPattern.m_nColIndex - 1 == this.mSecondCheckPattern.m_nColIndex) {
isAdjacent = true;
}
if (isAdjacent) {
this.mCheckMarkSpr.setPosition(-1000.0, -1000.0);
this.swapTwoPattern(this.mFirstCheckPattern, this.mSecondCheckPattern, false);
this.mFirstCheckPattern = null;
this.mSecondCheckPattern = null;
} else {
this.mCheckMarkSpr.setPosition(this.mPatternsPos[this.mSecondCheckPattern.m_nRowIndex][this.mSecondCheckPattern.m_nColIndex]);
this.mFirstCheckPattern = this.mSecondCheckPattern;
this.mSecondCheckPattern = null;
}
}
}
},