如何解决如何让一个元组给出一个随机的新元组?
我正在尝试占据一个位置 (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) 位置。 谢谢!
解决方法
您的代码不起作用的原因是它永远不会改变 Player
的位置; InteractWith
只是将位置复制到两个局部变量中,然后更新它们。
这就是说,如果您想学习 F#,我强烈建议您不要以 OO 风格进行编程 - 您会更喜欢采用函数式风格。
函数式编程 (FP) 的标志之一是不变性。对于你的传送对象,这意味着不要改变 Player
的位置,而是用新位置创建一个新玩家。
尝试以下行
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 }
另外,尽量不要用一个类来解决每一个问题,而是用一个函数;在上面,teleport
只是一个函数 Player -> Player
。
我真的希望你会喜欢 F#;这是一种在 .NET 上进行 FP 的绝佳语言。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。