想让孩子不沉迷游戏的办法就是教会她制作游戏,下面我们用Fable(将F# 编译为JavaScript的编译器)来制作一个我们小时候玩的斗兽棋,也就是动物棋,最终的效果如下:

文章插图
F# 斗兽棋
0x00.动物及颜色定义
// 定义多种动物type Animal =| Elephant| Lion| Tiger| Leopard| Wolf| Dog| Cat| Mouse// 定义两种颜色type Color =| Blue| Red0x01.创建红蓝双方// 分割let partition n list =[| 0 .. (Array.length list) / n - 1 |]|> Array.map (fun idx -> list.[idx * n .. (idx + 1) * n - 1])// 创建派系let create_factions () =[| Red; Blue |]|> Array.map (fun color ->[| ElephantLionTigerLeopardWolfDogCatMouse |]|> Array.map (fun animal -> Some(color, animal, Hide)))|> Array.concat|> Array.sortBy (fun _ -> JS.Math.random ()) // 进场位置是随机的|> partition 4这里需要注意的地方就是我们的玩法是“盲开”,所以要随机布阵 。就是这段用随机数做key对数组进行排序 。Array.sortBy (fun _ -> JS.Math.random ())0x02.是否可以攻击判断// 是否可以吃let is_can_eat (attacker: Animal) (defender: Animal) =match attacker, defender with| Elephant, Mouse -> false // 大象不能吃老鼠| Mouse, Elephant -> true // 老鼠可以吃大象| attacker, defender -> attacker <= defender// 是否临近let is_neighbor (y0, x0) (y1, x1) =List.contains [ y0 - y1; x0 - x1 ] [[ 1; 0 ][ 0; 1 ][ -1; 0 ][ 0; -1 ]]这里你可以体会一下match语法的好处,很清晰不是吗?最基础的逻辑就是这些,其他的代码不再赘述,看一下动态效果 。

文章插图
【斗兽棋大神视频 斗兽棋视频教程】我们小时候有一个有趣的设定,就是豹是可以飞的,这就是上图豹可以斜向吃掉狗的原因,各位看官的童年设定呢?
- 飞行棋的其他玩法 飞行棋玩法教程
- 扭曲树精·茂凯 扭曲树精符文出装
- 世界五大神话体系全解析,世界四大神话体系分别是什么
- 动漫自走棋在哪下载 动漫自走棋还能玩吗
- 天天象棋最新版本下载 天天象棋下载最新版
- 棋牌偏门赚钱方法有哪些,棋牌真钱游艺
- 卑弥呼和天照大神 天照大御神诞生自何处
- 十大神仙歌曲2022 百听不厌的神仙歌曲大全
- 象棋士怎么走图解,国际象棋士的走法图解
- 华晨宇为啥惹到邓紫棋了 邓紫棋和华晨宇有什么恩怨关系
特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
