x01.Weiqi.9: 点目功能
2024-10-15 01:45:46
添加点目功能,虽不中,不远也。还是先看看截图吧。
确保其可行,再看一张:
其点目结果,还是比较令人满意的。这主要得益于多遍扫描,如编译器的词法分析阶段,下面的代码可以证明:
private void InitMeshes()
{
UpdateMeshes1(); if (StepCount < ) return; UpdateMeshes2();
UpdateMeshes3();
UpdateMeshes4();
UpdateMeshes4(); // 二次扫描有必要
UpdateMeshes5();
UpdateMeshes6();
}
InitMeshes()
主要思路,也不过如此,实现的关键点,在于 UpdateMeshBlocks() 方法:
void UpdateMeshBlocks(List<Pos> poses, List<PosBlock> blocks)
{
List<Pos> copyPoses = poses.ToList();
if (copyPoses.Count == ) return; List<Pos> tmp = new List<Pos>();
foreach (var pos in copyPoses) {
if (tmp.Count == ) tmp.Add(pos);
var links = LinkPoses(pos);
if (tmp.Intersect(links).Count() > ) {
links.ForEach(l => {
if (copyPoses.Contains(l) && !tmp.Contains(l))
tmp.Add(l);
});
}
}
for (int i = ; i < ; i++) { // 确保不遗漏到疯狂程度
foreach (var pos in copyPoses) {
var links = LinkPoses(pos);
if (tmp.Intersect(links).Count() > ) {
links.ForEach(l => {
if (copyPoses.Contains(l) && !tmp.Contains(l))
tmp.Add(l);
});
}
}
} PosBlock block = new PosBlock();
block.Poses = tmp;
blocks.Add(block); copyPoses.RemoveAll(p => tmp.Contains(p));
UpdateMeshBlocks(copyPoses, blocks);
}
UpdaeMeshBlocks()
这同 UpdateStepBlocks() 相同,只是为确保不遗漏,多了几遍而已。
整个程序都是建立在集合的基础上的,更新块成为关键,也就不足为奇了。
完整代码下载链接:https://github.com/chinax01/x01.Weiqi
最新文章
- java compiler level does not match the version of the installed java project facet
- [转载]《民航科技》2012年4月专家论坛:程延松《关于中国民航SWIM框架及技术实现探讨》
- UNIX/Linux打包,压缩 ,解压:
- android布局--Android fill_parent、wrap_content和match_parent的区别
- Linq之Linq to Objects
- 欧拉回路-Door Man 分类: 图论 POJ 2015-08-06 10:07 4人阅读 评论(0) 收藏
- 从实验室搬到宿舍后可以上QQ但打不开网页
- 《Python CookBook2》 第一章 文本 - 去字符串两端的空格 &;&; 合并字符串 &;&; 将字符串逐字符或者逐词反转
- iOS View的Frame和bounds之区别,setbounds使用(深入探究)
- 用SQL将查询出来的多列的值拼接成一个字符串【转载】
- mui开发app之html5+,5+Runtime,5+sdk,native.js
- JavaWeb 后端 <;七>; 之 mvc3层架构
- Hello PyQt5
- 阿里云负载均衡SSL证书配置
- ASP.NET Core中使用GraphQL - 第六章 使用EF Core作为持久化仓储
- python之psutil模块(获取系统性能数据)
- WIN10安装时msxml4.0提示2502、2503解决办法
- ConcurrentMap与CopyOnWrite容器
- 自定义UDF
- 《HTTP权威指南》读书笔记:缓存
热门文章
- Windows 下noinstall方式安装 mysql-5.7.5-m15-winx64
- DX9入门笔记1-D3D初始化
- [Web API] Web API 2 深入系列(6) Model绑定(上)
- WPF模糊效果(BlurEffect)
- 在 .NET 中远程请求 https 内容时,发生错误:根据验证过程,远程证书无效。
- authorization与URL授权
- 图解DataGridView编辑列
- 应用程序启动管理 Winform版
- C#怎样保证弹出窗体是唯一并居中显示
- Spring工作原理