Как заставить кортеж давать случайный новый кортеж?
Я пытаюсь занять позицию (a,b) и через код получить случайную новую позицию (a,b). У меня большие проблемы с реализацией кода, и то, что я получил, - это, безусловно, моя лучшая попытка.
type Teleport (a,b) =
inherit Item (a, b, ' ', Color.White, Color.White)
override this.FullyOccupy() = true
override this.InteractWith (p: Player) =
let mutable posX = p.X
let mutable posY = p.Y
let rand = System.Random()
posX <- rand.Next()
posY <- rand.Next()
Может кто-нибудь объяснить, почему он не работает?
Предполагается, что он работает как телепорт в игре, где, если игрок перемещается в первую (a,b), он должен быть перенесен в новую (случайную) (a,b) позицию. Спасибо!
1 ответ
Причина, по которой ваш код не работает, заключается в том, что он никогда не изменяет позицию;
Тем не менее, я настоятельно рекомендую вам не программировать в стиле OO, если вы хотите изучить F # - вы будете намного счастливее, выбрав функциональный стиль.
Одной из отличительных черт функционального программирования (ФП) является неизменность. Для вашего телепорта это означает НЕ мутировать
Попробуйте что-нибудь в следующей строке
type Player = { X: int; Y: int; Name: string }
let teleport player =
let rand = System.Random()
{ player with X = rand.Next 100
Y = rand.Next 100 }
Кроме того, старайтесь не обращаться к классу как к решению каждой проблемы, вместо этого стремитесь к функции; выше,
Я искренне надеюсь, что вам понравится F#; это отличный язык для выполнения FP на .NET.