惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Scott Helme
Scott Helme
N
Netflix TechBlog - Medium
AI
AI
Security Latest
Security Latest
GbyAI
GbyAI
P
Proofpoint News Feed
Y
Y Combinator Blog
A
Arctic Wolf
G
Google Developers Blog
U
Unit 42
爱范儿
爱范儿
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
V
Vulnerabilities – Threatpost
Know Your Adversary
Know Your Adversary
Cisco Talos Blog
Cisco Talos Blog
T
Tor Project blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
T
Threatpost
L
Lohrmann on Cybersecurity
C
CERT Recently Published Vulnerability Notes
C
Check Point Blog
B
Blog RSS Feed
The GitHub Blog
The GitHub Blog
Microsoft Azure Blog
Microsoft Azure Blog
博客园 - 【当耐特】
博客园 - Franky
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
C
Cisco Blogs
云风的 BLOG
云风的 BLOG
NISL@THU
NISL@THU
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Microsoft Security Blog
Microsoft Security Blog
T
The Blog of Author Tim Ferriss
阮一峰的网络日志
阮一峰的网络日志
Latest news
Latest news
L
LINUX DO - 最新话题
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
美团技术团队
WordPress大学
WordPress大学
L
LangChain Blog
Stack Overflow Blog
Stack Overflow Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
酷 壳 – CoolShell
酷 壳 – CoolShell
大猫的无限游戏
大猫的无限游戏
The Hacker News
The Hacker News
Simon Willison's Weblog
Simon Willison's Weblog
V
V2EX
Project Zero
Project Zero
博客园_首页

博客园 - ExperDot

用 AI Coding 工具生成 60 万字奇幻世界设定的实践记录 追求极致体验:AI 聊天应用的 20 个功能要点 探索性 AI 聊天应用:交叉分析表 3种方法让大语言模型提取任意文档中的知识点 AI 聊天应用的 10 条高级需求 Web安全入门(一):Web安全是什么? ASP.NET Core文件压缩最佳实践 什么是软件开发? Web应用实例:音频可视化 粒子系统(二):绘制精美几何图案 图像识别:微信跳一跳机器人 粒子系统(一):从零开始画一颗树 ExperDot的博客目录导航 编程模拟自然(九):元胞自动机 自动绘图AI:程序如何画出动漫美少女 UWP简单示例(三):快速开发2D游戏引擎 UWP简单示例(二):快速开始你的3D编程 UWP简单示例(一):快速合成音乐MV AR创意分享:儿童涂鸦遇上程序绘图
Unity3D对弈游戏:狼吃羊游戏
ExperDot · 2017-03-29 · via 博客园 - ExperDot

简介

  中文名:狼与羊

  英文名称: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