之前无意间在博客园看到一篇用深度学习玩马里奥的文章,于是就想做这个小东西来测试人工智能算法(准备用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+)的更多相关文章

  1. Winform GDI+

    什么是GDI+ GDI (Graphics Device Interface), 是属于绘图方面的 API (Application Programming Interface). 因为应用程序不能直 ...

  2. WinForm GDI+ 资料收集

    UI(User Interface)编程在整个项目开发过程中是个颇为重要的环节,任何好的解决方案若没有良好的用户界面呈现给最终用户,那么就算包含了最先进的技术也不能算是好程序.UI编程体现在两个方面, ...

  3. WinForm GDI+自定义控件总结(一)

    前言 由于项目的原因好久没写博客了,也正是项目的原因开始系统的学习WinForm,从而接触到自定义控件的开发.自定义控件的开发有一定的难度,对开发者要求比较高,需要了解Windows运行的机制,熟悉w ...

  4. Winform GDI+ 绘图一:绘制2D电池

    winform桌面软件开发,在工业控制领域的使用还是很广泛的,打算好好学习一下GDI+绘图.以前都是用别人的轮子,自己也打算封装一些工业控制领域常用的控件. 今天要将的是,利用缓动函数动态绘制电池. ...

  5. Winform GDI+ 相关资料

    在Visual Studio 2010中定义GDI+自定义控件——自定义控件介绍 http://www.cnblogs.com/zhangdong/archive/2010/05/20/1740177 ...

  6. 做个无边框winform窗体,并美化界面

    今天下午程序写完,有些时间就搞下界面美化,做个无框窗体.首先把窗体的FormBorderStyle设置为None,就变成无框的啦,不过你会发现这样窗体上就没有原来的最大最小化和关闭按钮了哦,所以要自己 ...

  7. WPF 嵌入Winform GDI 、 开启AllowsTransparenc问题

    此文章可以解决2至少2个问题: 1.开启AllowsTransparenc造成的GDI+组件不显示问题 2.WPF 组件无法覆盖嵌入WPF窗口的任何第三方GDI+组件上层 方案1:自制双层 原理:用一 ...

  8. WinForm GDI编程:Graphics画布类

    命名空间: using System.Drawing;//提供对GDI+基本图形功能的访问 using System.Drawing.Drawing2D;//提供高级的二维和矢量图像功能 using ...

  9. 一篇文章让你彻底弄懂WinForm GDI 编程基本原理

    一 GDI编程原理 GDI(Graphics Device Interface,图形设备接口),主要负责Windows系统与绘图程序之间的信息交换,处理所有Windows程序的图形输出. GDI的常用 ...

随机推荐

  1. MyBatis笔记----MyBatis 入门经典的两个例子: XML 定义与注解定义

    ----致敬MyBatis官方开放文档让大家翻译,不用看书直接看文档就行了,mybatis的中文文档还需要完备的地方 简介 什么是 MyBatis ? MyBatis 是支持定制化 SQL.存储过程以 ...

  2. (转)Debian 安装与卸载包命令

    1.APT主要命令apt-cache search  ------package 搜索包sudo apt-get install ------package 安装包sudo apt-get remov ...

  3. Oracle EBS json

    JSON:  JavaScript 对象表示法 JavaScript Object Notation JSON 是存储和交换文本信息的语法.类似XML. JSON 比 XML更小.更快,更易解析. 使 ...

  4. Android音频系统

    1 分析思路 Thread如何创建? AudioPolicyService是策略的制定者,AudioFlinger是策略的执行者, 所以: AudioPolicyService根据配置文件使唤Audi ...

  5. Windows Server 2016-Nano Server介绍

    WindowsServer 2016 提供了新的安装选项:Nano Server.Nano Server 是针对私有云和数据中心进行优化的远程管理的服务器操作系统. 类似于 Windows Serve ...

  6. Scrapy(爬虫框架)中,Spider类中parse()方法的工作机制

    parse(self,response):当请求url返回网页没有指定回调函数,默认的Request对象的回调函数,用来处理网页返回的response,和生成的Item或者Request对象 以下分析 ...

  7. C# json、xml序列化

    json序列化: public static string SerializeJson<T>(T json) { // 1. 需要添加引用 Newtonsoft.Json.dll,默认为 ...

  8. 登录Windows界面前执行自定义脚本

    通常情况下,进入Windows界面之前都有一个登录过程,如何在登录前让系统执行脚本呢?下面介绍一种方法. 1.打开组策略,在Run(运行)中输入GREDIT.MSC,点击确认. 2.依次点击Compu ...

  9. 【夯实PHP基础】PHP多进程-- pcntl_fork实现

    本文地址 参考文档 分享提纲: 1. 概述 2.安装(只支持Linux) 3. 代码实验多进程pcntl_fork 4. 具体解释 1. 概述 PHP有个pcntl_fork的函数可以实现多进程,但要 ...

  10. JSP内置对象概述

    JSP内置对象预先定义了九个这个的对象: request(请求) . response (响应). session (会话). application (应用程序). out . pageContex ...