-
Notifications
You must be signed in to change notification settings - Fork 7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Searcher #3
base: master
Are you sure you want to change the base?
Searcher #3
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
В целом, вопросов "почему?" по данному алгоритму можно задать довольно много. Подробности лучше обсудить при встрече. Имеющиеся 7 лабиринтов иногда решаются, иногда нет, так что здесь тоже всё не особенно идеально
@@ -1,9 +1,11 @@ | |||
package ru.spbstu.terrai.core | |||
|
|||
data class Condition(val items: List<Item>, val exitReached: Boolean) { | |||
constructor(): this(false) | |||
data class Condition(val items: List<Item>, val exitReached: Boolean, val exitFind: Boolean) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Не find
, а found
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Кроме этого, поскольку данная штука нужна конкретному игроку, корректнее запоминать её в нём, не меняя внутренние классы игры
|
||
private var wormholes = 0 //считает количество уже пройденных червоточин | ||
|
||
private var maxholes = 0 //хранит количество червоточин на карте |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
По Code Style -- maxHoles
(и ниже такие места ещё попадаются)
|
||
private var maxholes = 0 //хранит количество червоточин на карте | ||
|
||
private var pathWasFinded = false //найден ли путь от вормхолла до выхода |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Тоже Found
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
В общем и целом, флагов у вас накопилось уже столько, что стоило их все убрать и завести единую переменную-перечисление "Состояние". Его и использовать
private var pathTemp: MutableList<Direction>? = mutableListOf<Direction>() | ||
//хранит последний результат движения | ||
private var lastResult: MoveResult?=null //копия последней полученной информации о состоянии | ||
private var loopwWh = false //завис ли бот в цикле |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Это название в принципе неудачное
//функция управления движением//работает нормально//пока | ||
override fun getNextMove(): Move {//если есть любая клетка, в которой бот еще не был, то он идет туда | ||
|
||
var rng = Random();//для выбора направления |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Генератор случайных чисел лучше определять на верхнем уровне, не создавая его каждый раз заново
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Точки с запятой в Котлине почти никогда не нужны. Также важно употреблять val
везде, где это возможно, заменяя var
(IDE тут подсказывает)
private var bindingFlag = false | ||
private var pathTemp: MutableList<Direction>? = mutableListOf<Direction>() | ||
//хранит последний результат движения | ||
private var lastResult: MoveResult?=null //копия последней полученной информации о состоянии |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Здесь в Котлине лучше так:
private lateinit var lastResult: MoveResult
Дело в том, что по факту оно всё равно используется как not-null, а null бывает только в самом начале работы
|
||
if(backInTheFirstWormholeFlag){//бот нашел клад и должен вернуться ко входу | ||
var step: Direction | ||
if (wormholes!=1){ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Почему вдруг именно 1? В чём специальность этого значения?
return lastMove | ||
} | ||
|
||
//создает копию пути от вормхолла до выхода |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Скорее, видимо, не до выхода, а до входа в текущую комнату
//бот следует по запомненному пути к выходу | ||
if(lastResult?.room is Wormhole){//свалился в новый вормхолл -> скопировал маршрут заново | ||
pathTemp = mutableListOf<Direction>() | ||
pathTemp?.addAll(pathToExit) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Не очень понял смысл этой ветки. Можно обсудить при встрече
|
||
private val pathToExit = mutableListOf<Direction>()//список, хранящий путь от ямы до выхода | ||
|
||
private var wormholes = 0 //считает количество уже пройденных червоточин |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Далее по коду получается, что это очень хакерское поле, и название его не совсем точно
Немного поумневший DummySearcher.
Чупин Никита, 33501/1