Scalaz-ZIO在Scala社区引起了很多炒作。 我通过复制约翰·德·高斯(John De Goes)的演讲中的猜谜游戏“ Hangman”的实现进行了检验。 它基本上是相同的代码,但具有一些小的游戏增强功能,重要的是它已更新为新的ZIO。 玩和编写代码很有趣。

这是游戏的主要功能,您可以通过调用来运行该功能
- 制作音乐主题语音游戏的第一步
- Battlerite如何吸引我的眼球,或者:是什么让游戏感觉特别
- 意见:程序生成的水平是否很好?
- 2019年1月月度游戏:点克隆
- 学习爱(2d)游戏开发0 —用CSCI E-23a构建Pong

hangmanGame与John的演讲几乎没有什么不同,只是它已更新为ZIO而不是IO。 它还使用来自zio的Random选择随机单词。 听起来有些奇怪,但我同时使用scala.util.Random和zio.random.Random和zio版本对游戏进行了很多测试,效果似乎更好。 大多数游戏逻辑都在gameLoop函数中:

与John的版本相比,有一些细微变化,当然包括新的类型签名,以及ZIO.succeed(而不是IO.now)的使用。 我添加的一点改进是告诉玩家输了时正确的答案。 总体而言,学习ZIO是一个很好的练习,并且从IO到ZIO的迁移非常轻松,而且编译器错误将我引向正确的类型签名。
该代码在我的github上可用:
https://github.com/spf3000/functional-hangman