简介

  中文名:狼与羊

  英文名称:Wolves&Sheep

  游戏类型:休闲/棋类

  玩家人数:单人或双人

  游戏下载:WindowsAndroid

  游戏描述:童年时与小伙伴常玩的一种游戏,游戏简单易懂而又变化多样。

第一节 游戏规则

  棋盘可以用小石头在泥土里上随手就画出来了,棋子中的狼和羊可以用树枝或者小石子代替。

  准备

  找两块大点的石头当作狼,二十四块小石头是羊

  狼和羊必须放置在网格的交叉点上

  每个交叉点上最多有一个棋子

  开局

  两个狼分别放在上下两个脖子上,羊 8 个放在中间一圈的交叉点上,狼先走羊后走交替进行

  狼跳过羊就把羊吃掉了,狼只能沿图上的直线跳且只能跳过一个点,不吃羊则只能走一格

  羊是先放不能走,每次放一只,羊全部放完才能走,也是每次走一格

  胜负

  如果狼没地方可走了,羊赢得比赛

  狼把羊吃光或羊认输,狼赢得比赛

图1-1 开局

第二节 程序设计

  涉及本游戏核心逻辑的类库最先在 WPF 平台上完成编码和测试。

  基础功能

  棋盘表示:使用合适的数据结构表示棋盘

  移动判断:检测用户走棋是否符合移动规则

  用户视图:视图显示棋盘和检测用户的输入

  对弈模式

  人人对弈:支持双人轮流下棋

  人机对弈:机器人难度级别可选

  对弈功能

  提示:由AI给出走棋提示

  悔棋:可返回上一步局面

  终止:立即终止比赛

图2-1 终止比赛

第三节 AI算法

  AI 搜索算法借鉴中国象棋中成熟的深度优先搜索算法。

  搜索算法

  Alpha-Beta 剪枝

  局面生成

  基于规则逐步产生

  局面评估

  棋子基础子力:每个棋子具有一个基础价值

  棋子位置估值:评估棋子在不同位置的价值

  棋子关系估值:评估棋子间相互作用关系,例如对较多羊造成威胁的狼的价值较高

图3-1 搜索算法调试输出

第四节 Unity3D

 使用 VisualStudio 开发的游戏核心逻辑类库可以编译为 DLL 文件,然后在 Unity3D 项目里引用它。

  如何引用 .NET 类库

  项目属性->应用程序->目标框架,下拉列表中选择 .NET Framework 3.5

  成功编译后将输出目录下的文件全部复制到 Unity 项目的 Assets\Plugins 文件夹

  Unity3D 将自动完成导入,最后,在 C# 脚本中导入上述类库项目的命名空间即可

  若是 VB.NET 项目,需要手动编辑 .vbproj 文件以开启 VBRuntime Embed 编译模式

  <PropertyGroup>
<VBRuntime>Embed</VBRuntime>
</PropertyGroup>

  通用的游戏脚本

  背景音乐:切换场景仍能够连续播放的音乐 点击查看代码

  元素缩放:支持用户在游戏内缩放UI元素 点击查看代码

  双人联机:支持局域网创建游戏房间进行联机游戏 点击查看代码

图4-1 外部类库项目属性

附录

  象棋百科全书:计算机博弈

  GitHub(WPF):WolfGame.NET

  GitHub(Unity3D):WolfGame.Unity

Unity3D对弈游戏:狼吃羊游戏的更多相关文章

  1. html+css+js实现狼吃羊小游戏

    html+css+js实现狼吃羊小游戏 一.总结 一句话总结:给动的元素下标记,这里表现为将要活动的标签动态增加class,这是一种很好的思想. 1.如何实现棋子走动的时候简单精确定位? 用重构坐标系 ...

  2. 洛谷P2598 [ZJOI2009]狼和羊的故事

    题目描述 “狼爱上羊啊爱的疯狂,谁让他们真爱了一场:狼爱上羊啊并不荒唐,他们说有爱就有方向......” Orez听到这首歌,心想:狼和羊如此和谐,为什么不尝试羊狼合养呢?说干就干! Orez的羊狼圈 ...

  3. 【Unity3D】Unity3D之 注册表动态存取游戏存档——PlayerPrefs类

    [Unity3D]Unity3D之 注册表动态存取游戏存档--PlayerPrefs类 1.Unity3D提供了一个用于本地持久化保存与读取的类--PlayerPrefs.工作原理非常简单,以键值对的 ...

  4. Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条

    Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条 异步任务相信大家应该不会陌生,那么本章内容MOMO将带领大家学习Unity中的一些异步任务.在同步加载游戏场景的时候通常会使用方法 Ap ...

  5. Unity 4.2.0 官方最新破解版(Unity3D 最新破解版,3D游戏开发工具和游戏引擎套件)

    Unity是一款跨平台的游戏开发工具,从一开始就被设计成易于使用的产品.作为一个完全集成的专业级应用,Unity还包含了价值数百万美元的功能强大的游戏引擎.Unity作为一个游戏开发工具,它的设计主旨 ...

  6. 基于unity3d和leap motion的拼图游戏

    近期用unity3d引擎做了一个拼图游戏,会分几次写完,以此作为总结. 本文基本查找了网上能查到的全部资料作为參考.也算是大家节省了时间. 眼下仅仅完毕了拼图部分,leap motion手势控制部分会 ...

  7. 为什么MOBA、“吃鸡”游戏不推荐用tcp协议——实测数据

    欢迎大家前往云加社区,获取更多腾讯海量技术实践干货哦~ 作者:腾讯云游戏行业资深架构师 余国良 MOBA类和"吃鸡"游戏为什么对网络延迟要求高? 我们知道,不同类型的游戏因为玩法. ...

  8. 3D位置语音,引领吃鸡游戏体验升级

    欢迎大家前往云加社区,获取更多腾讯海量技术实践干货哦~ 作者:腾讯游戏云 导语:在刚刚结束的首届腾讯用户开放日上,腾讯音视频实验室带着3D位置音效解决方案,向所有用户亮相,为用户提供360度立体空间的 ...

  9. tcp没用吗?为什么MOBA、“吃鸡”游戏不推荐用tcp协议

    本文由云+社区发表 作者:腾讯云游戏行业资深架构师 余国良 MOBA类和"吃鸡"游戏为什么对网络延迟要求高? 我们知道,不同类型的游戏因为玩法.竞技程度不一样,采用的同步算法不一样 ...

随机推荐

  1. Arduino入门学习

    一直听到许多做物联网.智能家居的控制器使用的是Arduino,从师兄那里拿到了一块Arduino开发板,进行了一下午的学习,感觉这个适合小孩子们玩:) 废话少说,总结一下,便于以后可能会用得到.我主要 ...

  2. 什么是Bootstrap?

    简介 - 框架:库 lib library- jQuery作为一个框架来讲,提供一套比较便捷的操作DOM的方式- 把大家都需要的功能预先写好到一些文件 这就是一个框架- Bootstrap 让我们的 ...

  3. 关于AR,你想要的全在这儿了

    定义 增强现实(Augmented Reality,简称AR),是一种实时地计算摄影机影像的位置及角度并加上相应图像的技术,这种技术的目标是在屏幕上把虚拟世界套在现实世界并进行互动.这种技术估计由19 ...

  4. Linux学习笔记(1)

    一.介绍 Linux系统作为服务器操作器的两大优点是其稳定性以及安全性:常见的Linux系统有以下几种: Debian(1993年下半年出的Linux分支) Ubuntu(目前互联网公司使用的比较多的 ...

  5. SQL中的join连接查询

      inner join(交集 ,自然连接, 简写成join)   是最普通的连接查询,相当于早期根据where条件连接的查询     outer join(并集或部分并集,左表 + 右表)   le ...

  6. Lucas,.net Web框架

    #LucasLucasLucasWeb框架是基于新的魔法糖思想创建的框架.本框架有两大特点.1.所有框架里最简单易学易配置的.2.所有框架里效率最快的.1.UrlRouter没有使用IOC注入及反射, ...

  7. 微信公众平台开发-OAuth2.0网页授权(含源码)

    微信公众平台开发-OAuth2.0网页授权接口.网页授权接口详解(含源码)作者: 孟祥磊-<微信公众平台开发实例教程> 在微信开发的高级应用中,几乎都会使用到该接口,因为通过该接口,可以获 ...

  8. fastcgi的介绍,原理及配置

    fastcgi介绍: CGI全称是“公共网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序一般运行在网络服务器上. C ...

  9. JavaScript中定义变量和存储值的类型判断

    以严谨的语法表示作为前提 首先变量被定义,然后给变量赋予一定的值,变量真正的作用就是存储值 变量的定义和赋值 变量的定义: var a 使用关键字var+变量名表示定义一个变量 a 变量的赋值: va ...

  10. Javascript中关于作用域和闭包和域解释的面试题

    <script type="text/javascript"> function fn() { var i = 10; return function (n) { co ...