Java — путевая заметка 2

Был совершен очередной наскок на Java. В процессе наскока происходили следующие озарения в хронологическом порядке:

А не написать ли мне арканоид? Расчехлил javaFX, начал смотреть вот эти уроки  и этот пример реализации отражений. В результате это всё объединил, но застопорился на отлавливании координат всех объектов, походу они у меня то ли в разных слоях получились, то ли фиг его знает… Но в результате размышлений над этим я набрёл на перевод статьи какого то клёвого чувака Как начать писать игры и осознал, что я перепрыгнул пару уровней и стоит внять советам. А тем более до арканоида меня посещала идея начать с Lines, я их даже на python начал писать и даже до чего то там дописал, пока в графы и алгоритм Дейкстры не упёрся…

Итак, поскольку однорукого бандита в консоли реализовывать как то сильно просто, взялся за крестики-нолики. Да, каждый программист должен написать свой тетрис, я прочувствовал фразу и согласен с ней.

В первовй реализации было сделано следующее:

  • Случайно определялся чем ходит первый игрок
  • Случайно совершались ходы, с проверкой на победу
  • Всё это крутилось в цикле, пока не отыграется 1000000 партий, а по итогу выводилась статистика игр.

При таком подходе шанс ничьи почти жестко равен 11,4% (можете подумать перед сном, почему оно так).

Во второй реализации в моем велосипеде прибавилось 3 новых колеса и не меньше 5 педалей. По итогу:

  • Был реализован метод superMind при котором комп не может выиграть сам у себя.
  • Написал свой (как я думаю, по крайней мере нигде не подсматривал) алгоритм для повышения весов клеток перспективных или пред выигрышных ходов.

В процессе написания псевдокода разумеется залез читать как по серьезному решают такие вопросы, полез читать про алгоритм минимакс, нихрена не понял, но начал читать книгу по алгоритмам и смотреть видео по алгоритмам. По поводу минимакса оставлю тут пару ссылок, т.к. я обязательно в конечном итоге доведу свои “макароны” до совершенства.

  1. Заумная институсткая хрень по минимаксу
  2. Всякое бла бла и примеры реализации минимакса на java (английский)
  3. Концептуально-иллюстрированная статья, которую я обязательно осознанно прочту, когда чуток поумнею