五子棋(无AI winform gdi+)
之前无意间在博客园看到一篇用深度学习玩马里奥的文章,于是就想做这个小东西来测试人工智能算法(准备用PYTHON的库,对神经网络的梦已经做了好多年了,但是太难了,一直懒得动它),本来是想用WPF做UI,又感觉有点麻烦(不熟),就改最熟悉的GDI+直接画了。。。好吧,其实就是一个月没写博客了,只好硬憋一篇出来凑个数了。。。
效果如下:

至于代码,没什么好说的,本来也想用类的方式封装的更细一点,后来越写越复杂,于是就放弃了(总想往里面塞一堆的设计模式,又用不好)。那个棋子不是用图片贴的,用了一个路径画刷。
void DrawChess(Graphics g, Rectangle rect,Color center,Color around)
{
var gpath = new GraphicsPath();
gpath.AddEllipse(rect);
var brushP = new PathGradientBrush(gpath);
brushP.SurroundColors = new Color[] { around };
brushP.CenterColor = center;
brushP.CenterPoint = - , rect.Y + );
g.FillEllipse(brushP, rect);
}
胜负判断就是从落子点,统计八个方向,四条线上的同色棋子数,等于5就胜利
//虽然很长,但是想法很简单o(╯□╰)o
bool CheckWin(int x,int y)
{
;
:;
//横向
; i < ;i++ )
{
)
{
if (Pan[x + i, y] == state)
count++;
else
break;
}
else
break;
}
)
return true;
; i < ; i++)
{
)
{
if (Pan[x -i, y] == state)
count++;
else
break;
}
else
break;
}
)
return true;
......
}
源码:下载
至于AI,实在是写不出来,网上有几篇文章介绍的常规算法,但是不太会下五子棋,也就懒得看了,深度学习又有点难,罢,罢,罢,不弄了就。。。
PS:最近去北大某鸟去面试教员了,说实话做培训讲师一直很想试试(好吧,就是冲妹纸去的,好像学编程的妹纸又少又。。。),感觉自己可能没有那个耐心,但是30岁了,还整天写这种小玩意儿,基本上也就告别编程了,不说了,下午复试去了,祝大家中秋快乐(是不是应该把棋子换成月饼更应景)!
五子棋(无AI winform gdi+)的更多相关文章
- Winform GDI+
什么是GDI+ GDI (Graphics Device Interface), 是属于绘图方面的 API (Application Programming Interface). 因为应用程序不能直 ...
- WinForm GDI+ 资料收集
UI(User Interface)编程在整个项目开发过程中是个颇为重要的环节,任何好的解决方案若没有良好的用户界面呈现给最终用户,那么就算包含了最先进的技术也不能算是好程序.UI编程体现在两个方面, ...
- WinForm GDI+自定义控件总结(一)
前言 由于项目的原因好久没写博客了,也正是项目的原因开始系统的学习WinForm,从而接触到自定义控件的开发.自定义控件的开发有一定的难度,对开发者要求比较高,需要了解Windows运行的机制,熟悉w ...
- Winform GDI+ 绘图一:绘制2D电池
winform桌面软件开发,在工业控制领域的使用还是很广泛的,打算好好学习一下GDI+绘图.以前都是用别人的轮子,自己也打算封装一些工业控制领域常用的控件. 今天要将的是,利用缓动函数动态绘制电池. ...
- Winform GDI+ 相关资料
在Visual Studio 2010中定义GDI+自定义控件——自定义控件介绍 http://www.cnblogs.com/zhangdong/archive/2010/05/20/1740177 ...
- 做个无边框winform窗体,并美化界面
今天下午程序写完,有些时间就搞下界面美化,做个无框窗体.首先把窗体的FormBorderStyle设置为None,就变成无框的啦,不过你会发现这样窗体上就没有原来的最大最小化和关闭按钮了哦,所以要自己 ...
- WPF 嵌入Winform GDI 、 开启AllowsTransparenc问题
此文章可以解决2至少2个问题: 1.开启AllowsTransparenc造成的GDI+组件不显示问题 2.WPF 组件无法覆盖嵌入WPF窗口的任何第三方GDI+组件上层 方案1:自制双层 原理:用一 ...
- WinForm GDI编程:Graphics画布类
命名空间: using System.Drawing;//提供对GDI+基本图形功能的访问 using System.Drawing.Drawing2D;//提供高级的二维和矢量图像功能 using ...
- 一篇文章让你彻底弄懂WinForm GDI 编程基本原理
一 GDI编程原理 GDI(Graphics Device Interface,图形设备接口),主要负责Windows系统与绘图程序之间的信息交换,处理所有Windows程序的图形输出. GDI的常用 ...
随机推荐
- Oracle EBS FORM lov
存在一种情况: 一个LOV的值当前有效,因此填入保存.但突然无效后,当查询该界面时就会弹出LOV框使其修改. 解决方案: 1. 非常粗暴,不设置校验,在LOV对应的item强行将校验设置为NO. 2. ...
- 自动化测试基础篇--Selenium iframe定位问题
摘自https://www.cnblogs.com/sanzangTst/p/7473437.html 有时候我们在定位的途中发现一个现象,元素就在那儿,不离不去,但是我们怎么整就是定不了位,这个时候 ...
- python第一百一十八天---ajax--图片验证码 + Session
原生AJAX Ajax主要就是使用 [XmlHttpRequest]对象来完成请求的操作,该对象在主流浏览器中均存在(除早起的IE),Ajax首次出现IE5.5中存在(ActiveX控件). 1.Xm ...
- PostgreSQL 表值函数
方法1create type deptSon as ( mid ), id ), name ), DeptParentId ) ); CREATE OR REPLACE FUNCTION functi ...
- Linux下键盘值 对应input_evnet的code值。
最近做了一个linux下面的模拟鼠标和键盘的app,但不是很清楚字符对应的键值:查找内核源码,在kernel/include/uapi/linux/input.h文件中找到: 下面给出普通键盘上面对应 ...
- The host '192.168.174.130' is unreachable. the host may be down..............
The host '192.168.174.130' is unreachable. the host may be down,or there may be a problem with ...
- Linux 小知识翻译 - 「LDAP」
这次聊聊「LDAP」. LDAP是「Lightweight Directory Access Protocol」的所有,从名字上可以看出是协议的一种. LDAP是访问数据库(层次型数据库)的组件.管理 ...
- C语言 排序算法总结
#include<stdio.h> #include<stdlib.h> //作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ # ...
- 小程序View内的文字不换行
今天发现View内的文字一行过去直接被屏幕右边吃掉,没有预期的换行,设置width也不管用,最后用它解决了 1. white-space:pre-line(不会保留空白和tabs) 2. white- ...
- 【JXOI2018】守卫
[JXOI2018]守卫 参考题解:https://blog.csdn.net/dofypxy/article/details/80196942 大致思路就是:区间DP.对于\([l,r]\)的答案, ...