Skip to content
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

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open

Conversation

ElementOfCoffee
Copy link

Немного поумневший DummySearcher.

Чупин Никита, 33501/1

Copy link
Owner

@mglukhikh mglukhikh left a 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) {
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Не find, а found

Copy link
Owner

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 //хранит количество червоточин на карте
Copy link
Owner

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 //найден ли путь от вормхолла до выхода
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Тоже Found

Copy link
Owner

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 //завис ли бот в цикле
Copy link
Owner

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();//для выбора направления
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Генератор случайных чисел лучше определять на верхнем уровне, не создавая его каждый раз заново

Copy link
Owner

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 //копия последней полученной информации о состоянии
Copy link
Owner

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){
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Почему вдруг именно 1? В чём специальность этого значения?

return lastMove
}

//создает копию пути от вормхолла до выхода
Copy link
Owner

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)
Copy link
Owner

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 //считает количество уже пройденных червоточин
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Далее по коду получается, что это очень хакерское поле, и название его не совсем точно

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants