84 Глава 4 • Введение в 2D-графику
Добавление подсказок
Можно ли не�но�о по�оч� пол�зовател�� не решая за не�о в�� �оловоло�ку? �ак
на�чет то�о� чтобы ра�кра�ит� фон каждо�о тайла в зави�и�о�ти от то�о� �кол�ко
воз�ожных вариантов ра��тановки чи�ел он �ожет и�ет�? Добав�те �леду��ий
код в
onDraw
() перед кодо� ри�ования выделения:
Sudokuv2/src/org/example/sudoku/PuzzleView.java
// Нарисовать подсказки...
//
Выбрать цвет подсказки, основываясь на
количестве оставшихся ходов
Paint hint = new Paint();
int c[] = { getResources().getColor(R.color.puzzle_hint_0),
getResources().getColor(R.color.puzzle_hint_1),
getResources().getColor(R.color.puzzle_hint_2), };
Rect r = new Rect();
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
int movesleft = 9 - game.getUsedTiles(i, j).length;
if (movesleft < c.length) {
getRect(i, j, r);
hint.setColor(c[movesleft]);
canvas.drawRect(r, hint);
}
}
}
Рис . 4 .6 . Тайлы раскрашены по-разному в
зависимости от того,
как много возможных значений могут быть в
них введены
Мы и�пол�зуе� три �о�тояния для обозначения от�ут�твия хода� одно�о и двух
воз�ожных ходов� Е�ли ходов нет� �то означает� что и�рок �делал что�то не так
и нуждает�я в
возврате к более ранне�у �о�тояни� и�ры�
4 .4 . Конец истории
85
Резул�тат будет вы�лядет�� как показано на ри�� 4�6� Найдете ли вы ошибку (или
ошибки)� допу�енные и�роко�
1
?
Встряска
Что� е�ли пол�зовател� ввел очевидно неверное чи�ло� такое как чи�ло� которое уже
и�еет�я в блоке три на три? Про�то для забавы �делае� так� чтобы �кран вздра�ивал
каждый раз при неверно� ходе� Для начала �ы добави� вызов в
setSelectedTile()
при
вводе неправил�но�о чи�ла
.
Достарыңызбен бөлісу: