/** * Highlight row and column * * @param row row * @param column column */ privatevoidlightRowAndColumn(int row, int column) { for (inti=0; i < 9; i++) { for (intj=0; j < 9; j++) { if (i == row || j == column) { if (mCellArray.get(i).get(j).getCurrentTextColor() == Color.parseColor(mErrorTextColor)) { mCellArray.get(i).get(j).setTextColor(Color.parseColor(mErrorTextColor)); } mCellArray.get(i).get(j).setBackgroundColor(Color.parseColor(mLightBgColor)); } else { if ((Boolean) mCellArray.get(i).get(j).getTag(R.id.isLoad)) { mCellArray.get(i).get(j).setTextColor(Color.parseColor(mDisableTextColor)); } else { if (mCellArray.get(i).get(j).getCurrentTextColor() == Color.parseColor(mErrorTextColor)) { mCellArray.get(i).get(j).setTextColor(Color.parseColor(mErrorTextColor)); } else { mCellArray.get(i).get(j).setTextColor(Color.parseColor(mDefaultTextColor)); } } mCellArray.get(i).get(j).setBackgroundColor(Color.parseColor(mLightTextColor)); } } } mCellArray.get(row).get(column).setBackgroundColor(Color.parseColor(mLightBgColor)); }
输入数字
每次输入我们需要判断游戏是否结束(数字重复或者完成数独)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
/** * Enter a number from 1-9 * * @param number number */ publicvoidinputText(String number) { if (mCurrentCell == null) return; if (!(Boolean) mCurrentCell.getTag(R.id.isLoad)) { mCurrentCell.setText(number); booleangameOver= checkFinish(); if (gameOver) { if (mGameOverCallBack != null) mGameOverCallBack.gameOver(); } } }
/** * check game error * * @param row row * @param column column * @return boolean */ privatebooleancheckGameError(int row, int column) { booleanresult=false; result = checkSection(row, column); if (result) return result; //check row for (inti=0; i < 9; i++) { Stringvalue= mCellArray.get(i).get(column).getText().toString(); if (TextUtils.isEmpty(value)) continue; for (intj= i; j < 9; j++) { if (i == j) continue; if (value.equals(mCellArray.get(j).get(column).getText().toString())) { Log.d(TAG, String.format("row error,value:%1$s in row:%2$d and column:%3$d", value, row, column)); result = true; break; } } }
if (result) return result;
//check column for (inti=0; i < 9; i++) { Stringvalue= mCellArray.get(row).get(i).getText().toString(); if (TextUtils.isEmpty(value)) continue; for (intj= i; j < 9; j++) { if (i == j) continue; if (value.equals(mCellArray.get(row).get(j).getText().toString())) { Log.d(TAG, String.format("column error,value:%1$s in row:%2$d and column:%3$d", value, row, column)); result = true; break; } } } return result; }