C# winform GDI+ 五子棋 (一):基本界面和胜负判断


private bool IsWin(List<Point> pt)
{
bool isWin = false;
//横
var yGroup=pt.GroupBy(p => p.Y);
foreach (var h in yGroup)
{
var lst = h.ToList().Select(a => a.X).ToList();
lst.Sort(); if (lst.Count < 5)
{
continue;
}
int hasCount = 1; for (int j = 0; j < lst.Count; j++)
{
var x=lst[j];
for (int m = j+1; m <lst.Count&&m< j+5; m++)
{ var xNext=lst[m]; if (xNext - x <= 30*(hasCount))
{
hasCount++;
}
else
{
hasCount = 1;
break;
} if (hasCount == 5)
{
return true;
} } if (hasCount != 5)
{
hasCount = 1;
}
} } //纵
var xGroup=pt.GroupBy(p => p.X);
foreach (var z in xGroup)
{
var lst = z.ToList().Select(a => a.Y).ToList();
lst.Sort(); if (lst.Count < 5)
{
continue;
}
int hasCount = 1; for (int j = 0; j < lst.Count; j++)
{
var y = lst[j];
for (int m = j + 1; m < lst.Count && m < j + 5; m++)
{ var yNext = lst[m]; if (yNext - y <= 30 * (hasCount))
{
hasCount++;
}
else
{
hasCount = 1;
break;
} if (hasCount == 5)
{
return true;
} } if (hasCount != 5)
{
hasCount = 1;
}
} } for (int b = -30*18; b < 30*18; b+=30)
{
var lst = pt.Where(a => -1 * a.Y == -1 * a.X + b).Select(a => a.X).ToList();
lst.Sort(); if (lst.Count < 5)
{
continue;
}
int hasCount = 1; for (int j = 0; j < lst.Count; j++)
{
var y = lst[j];
for (int m = j + 1; m < lst.Count && m < j + 5; m++)
{ var yNext = lst[m]; if (yNext - y <= 30 * (hasCount))
{
hasCount++;
}
else
{
hasCount = 1;
break;
} if (hasCount == 5)
{
return true;
} } hasCount = 1;
}
} //右斜 for (int mq=1;mq<18*18;mq++)
{
int b = mq * -10;
var lst = pt.Where(a =>-1*a.Y == a.X + b).Select(a => a.X).ToList();
lst.Sort(); if (lst.Count < 5)
{
continue;
}
int hasCount = 1; for (int j = 0; j < lst.Count; j++)
{
var y = lst[j];
for (int m = j + 1; m < lst.Count && m < j + 5; m++)
{ var yNext = lst[m]; if (yNext - y <= 30 * (hasCount))
{
hasCount++;
}
else
{
hasCount = 1;
break;
} if (hasCount == 5)
{
return true;
} } hasCount = 1;
}
}
return isWin; }
C# winform GDI+ 五子棋 (一):基本界面和胜负判断的更多相关文章
- 五子棋(无AI winform gdi+)
之前无意间在博客园看到一篇用深度学习玩马里奥的文章,于是就想做这个小东西来测试人工智能算法(准备用PYTHON的库,对神经网络的梦已经做了好多年了,但是太难了,一直懒得动它),本来是想用WPF做UI, ...
- c# winform编程之多线程ui界面资源修改总结篇【转】
c# winform编程之多线程ui界面资源修改总结篇 单线程的winfom程序中,设置一个控件的值是很easy的事情,直接 this.TextBox1.value = "Hello Wor ...
- Winform GDI+
什么是GDI+ GDI (Graphics Device Interface), 是属于绘图方面的 API (Application Programming Interface). 因为应用程序不能直 ...
- WinForm GDI+ 资料收集
UI(User Interface)编程在整个项目开发过程中是个颇为重要的环节,任何好的解决方案若没有良好的用户界面呈现给最终用户,那么就算包含了最先进的技术也不能算是好程序.UI编程体现在两个方面, ...
- WinForm GDI+自定义控件总结(一)
前言 由于项目的原因好久没写博客了,也正是项目的原因开始系统的学习WinForm,从而接触到自定义控件的开发.自定义控件的开发有一定的难度,对开发者要求比较高,需要了解Windows运行的机制,熟悉w ...
- C#winform自定义控件模拟设计时界面鼠标移动和调节大小、选中效果
要想玩转Winform自定义控件需要对GDI+非常熟悉,对常用的控件有一些了解,好选择合适的基类控件来简化. 要点说明及代码 1)定义接口: using System; using System.Wi ...
- C# Winform设计运行时,界面模糊
程序在Visual Studio设计的很清晰的菜单和界面,运行的时候菜单和控件上字体变得很模糊,界面大小也发生了变化 解决方法是:更改程序的配置文件,使程序运行时自动检测屏幕分辨率,在高分屏时禁用系统 ...
- C#-WinForm跨线程修改UI界面
待解决的问题 在我做WinForm开发的过程中,经常会遇到耗时操作或阻塞操作.他们会引发软件的卡顿甚至假死,严重影响软件的使用. 因此,这类耗时或阻塞的操作一般都会使用异步的方式去执行,不影响主线程( ...
- Winform GDI+ 绘图一:绘制2D电池
winform桌面软件开发,在工业控制领域的使用还是很广泛的,打算好好学习一下GDI+绘图.以前都是用别人的轮子,自己也打算封装一些工业控制领域常用的控件. 今天要将的是,利用缓动函数动态绘制电池. ...
- c# winform编程之多线程ui界面资源修改总结篇
单线程的winfom程序中,设置一个控件的值是很easy的事情,直接 this.TextBox1.value = "Hello World!";就搞定了,但是如果在一个新线程中这么 ...
随机推荐
- Lite Actor:方舟Actor并发模型的轻量级优化
原文:https://mp.weixin.qq.com/s/8biIBddpy6GKgakazg1vcg,点击链接查看更多技术内容. 并发模型是用来实现不同应用场景中并发任务的编程模型,通过合理地使用 ...
- Linux之驱动管理
一.相关概念 驱动概念 驱动与底层硬件直接打交道,充当了硬件与应用软件中间的桥梁. 将驱动程序载入内核,应用程序可以通过系统调用接口来访问(驱动)底层的硬件设备. 驱动功能 对设备初始化和释放 把数据 ...
- 动态规划(五)——坐标dp
传纸条 题目描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个m行n列的矩阵, 而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了 ...
- win7自带屏幕录像工具
win7自带屏幕录像工具 2012-03-28 09:23:05 我来说两句 收藏 我要投稿 相信win7自带的屏幕录像工具很多朋友都没用过甚至没有听说过, 但是这款实 ...
- c# webapi 自定义返回数据
前言 webapi呢,我们创建的时候我给我们5个方法:get get(data)put post delete. 很明显,get,get(data)是用来获取,post用来修改数据的,put,dele ...
- arp 的概念解析
前言 这里基于arp的基础概念,请先看前面那一节. 正文 看图: 和前面一样去解析地址. 以太网目的地址:就是mac地址. 在发送arp包的时候呢,这个mac地址就是全部是1,因为不知道对方地址是啥. ...
- git fork 项目的更新
fork:github网站的操作,将开源项目复制一份到自己的仓库中 那fork的项目在原仓库更新后,如何同步呢? 1.查看远程仓库 $ git remote -v origin https://cod ...
- 开篇:Mirth Connect系统集成与数据交换引擎
Mirth最初的目的是作为HL7接口引擎('引擎'释意:IT方面的术语,指经包装过的函数库,方便别人调用:如搜索引擎.图形引擎.物理引擎等),HL7 v2.x和HL7 v3标准通常在医疗系统间用于系统 ...
- 力扣551(java)-学生出勤记录Ⅰ(简单)
题目: 给你一个字符串 s 表示一个学生的出勤记录,其中的每个字符用来标记当天的出勤情况(缺勤.迟到.到场).记录中只含下面三种字符: 'A':Absent,缺勤'L':Late,迟到'P':Pres ...
- Apsara Stack 技术百科 | 如何「场景化」的企业上云
简介: 企业上云离不开数据和业务上云,如何在确保安全的前提下,低成本高效率的平滑上云,在云上又能真正解决哪些实际业务问题?混合云君今天给大家讲讲最经典的三个场景~ 随着"十四五"规 ...