Как будто вы пытаетесь получить доступ к объекту, который является null
. Рассмотрим ниже пример:
TypeA objA;
. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException
, что имеет смысл.
См. Также этот пример:
String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
Другой игровой выбор мог быть Reversi иначе Отелло.
А наивная эвристика должна была бы просто считать количество мозаик полученным каждым допустимым перемещением и выбрать самое большое. Оттуда можно включить в позицию платы и минимизирующий уязвимо противнику.
Одна игра, которую можно рассмотреть, Подключение Четыре . Простая игра с простыми правилами, но более сложный это Tic-Tac-Toe.
Средства проверки позволят Вам преподавать несколько методов. Простое предвидение, поиск глубины best-case-worst-case решений, различий между краткосрочными и долгосрочными усилениями и чем-то, они могли продолжить продолжать работать после изучения, что Вы хотите преподавать им.
Лично я думаю, что последний бит является самым очень важным - существуют естественные стороны в разработке AI, которые является положительным остановить в, видеть, можно ли победить его, и затем копаться в более глубоких механизмах AI. Это сохраняет Вашего студента заинтересованным без того, чтобы быть ужасно разбитым и дает им больше, чтобы сделать самостоятельно, если они хотят продолжить проект.
Как насчет Reversi? Это имеет довольно хорошее пространство эвристики на основе количества частей, количества граничных частей и количества угловых частей.
Как насчет Mancala? Только 6 возможных перемещений каждый поворот, и легко вычислить получающийся счет к каждому, но важно рассмотреть ответ противника, и игровое дерево становится большим довольно быстро.
Gomoku является хорошей, простой игрой и забавной для записи AI для.
Бесконечность Rubik довольно забавный, это немного похоже на Подключение Четыре, но тонко отличающийся. Evauluating положение довольно легок.
я столкнул сценарий Perl для игры его некоторое время назад и на самом деле должен был сократить количество, продвигается вперед, это смотрело, или это избило меня каждый раз, обычно с довольно удивительной тактикой.
Четыре в строке Достаточно трудно, но достаточно легкий придумать легкую рабочую функцию оценки, например, (расстояние до четыре от моей самой длинной строки - расстояние до четыре от самой длинной строки моего противника)
Мне действительно нравится Подключение Четыре. Очень легкий к программе с помощью Минимаксного алгоритма. Хорошая функция оценки могла быть:
eval_score = 0
for all possible rows/lines/diagonals of length 4 on the board:
if (#player_pieces = 0) // possible to connect four here?
if (#computer_pieces = 4)
eval_score = 10000
break for loop
else
eval_score = eval_score + #computer_pieces
(less pieces to go -> higher score)
end if
else if (#player_pieces = 4)
eval_score = -10000
break for loop
end if
end for
Для улучшения программы, можно добавить:
Как насчет того, чтобы запустить Вашу игру Точек и Полей со случайных строк, уже добавленных. Это может получить Вас в действие быстро. Просто потребность удостовериться Вы не запускаете игру ни с каких полей.
Смотрите на Движение.
Обновление: reversi был упомянут, который является упрощенным вариантом Движения. Мог бы быть лучший выбор.
В отношении лучшей эвристики для точек и полей, я предлагаю смотреть на руководства стратегии онлайн для игры. первый результат на Google для "стратегии точек и полей" довольно полезен.
Знание, как использовать цепочечное правило, разделяет плеер OK от хорошего. Знание, когда цепочечное правило будет работать против Вас, - то, что разделяет лучшие плееры от хороших.