新手上路,高手勿进!

利用数组,根据新旧数组值的不同,获取那个点是什么棋子;

说明:

棋盘:15*15;

定义4个全局变量:

string[,] stroldlist = new string[15, 15];//初始的List

        public string[,] strlist = new string[15, 15]; //0 :未下,1:黑子 2:白子

int icount = 0;//五子连线算赢

          string abc = "";//获取是白子还是黑子,1=黑子  2=白子  0=无子

自我感觉这种方法好笨,但是实在想不到什么好方法了。

代码如下:

#region 判断输赢

public void
PanDuan()
{

            //赋值

            for (int i = 0; i < 225; i++) {

                strlist[i / 15, i % 15] = sandwich[i].btn.Text;

                if (stroldlist[i / 15, i % 15] != strlist[i / 15, i % 15]) {

                    stroldlist[i / 15, i % 15] = strlist[i / 15, i % 15];//把新数组赋值给旧数组

                    icount = i;

                    abc = strlist[i / 15, i % 15];              

                }

            }





            //检查输赢,共有四中情况,横、竖、左斜、右斜

            int ix = icount / 15;//X轴

            int iy = icount % 15;//y轴

          //  PublicClass.ShowMessage(ix+"--------"+iy);

            int count = 0;//五个点相连为赢

            // int kstart = 0;//五子连开始的点

            //四种情况,横、竖、左斜、右斜





            //横(左上角坐标为0,0)       "|"

            int k_shu_min = ix - 4 < 0 ? 0 : ix - 4;

            int k_shu_max = ix + 4 < 15 ? ix + 4 : 14;

            for (int k = k_shu_min; k <= k_shu_max; k++) {

                if (strlist[k, iy] == abc) {

                    count++;

                    if (count >= 5) {

                        if (abc == "1") {

                            PublicClass.ShowMessage("黑子胜!");

                        }

                        if (abc == "2") {

                            PublicClass.ShowMessage("白子胜!");

                        }

                        return;

                    }

}else {

                    count = 0;

                }

}

            count = 0;//count值清0





            //竖            "一"

            int k_heng_min = iy - 4 < 0 ? 0 : iy - 4;

            int k_heng_max = iy + 4 < 15 ? iy + 4 : 14;

            for (int k = k_heng_min; k <= k_heng_max; k++) {

                if (strlist[ix, k] == abc) {

                    count++;

                    if (count >= 5) {

                        if (abc == "1") {

                            PublicClass.ShowMessage("黑子胜!");

                        }

                        if (abc == "2") {

                            PublicClass.ShowMessage("白子胜!");

                        }

                        return;

                    }

                }else {

                    count = 0;

                }

            }         

           count = 0;





           //左斜          "/"

           int k_left_min = ix - 4 < 0 ? 0 : ix - 4;

           int k_left_max = ix + 4 < 15 ? ix + 4 : 14;

           for (int k = k_left_min; k <= k_left_max; k++) {

               int ky = 0;

               if (ix + iy > 14) {

                   ky = ix + iy - k >= 14 ? 14 : ix + iy - k;

               } else {

                   ky = ix + iy - k <= 0 ? 0 : ix + iy - k;

               }

               if (strlist[k, ky] == abc) {

                   count++;

                   if (count >= 5) {

                       if (abc == "1") {

                           PublicClass.ShowMessage("黑子胜!");

                       }

                       if (abc == "2") {

                           PublicClass.ShowMessage("白子胜!");

                       }

                       return;

                   }

               }else {

                    count = 0;

                }

           }

           count = 0;





           //右斜           "\"

           int k_right_min = iy - 4 < 0 ? 0 : iy - 4;

           int k_right_max = iy + 4 < 15 ? iy + 4 : 14;

           for (int k = k_right_min; k <= k_right_max; k++) {

               int kx = 0;

               if (ix < iy) {                  

                   kx = ix - iy + k <= 0 ? 0 : ix - iy + k;    

               } else {

                   kx = ix - iy + k >= 14 ? 14 : ix - iy + k;           

               }

               // PublicClass.ShowMessage(kx+"---"+k);

               if (strlist[kx, k] == abc) {

                   count++;

                   if (count >= 5) {

                       if (abc == "1") {

                           PublicClass.ShowMessage("黑子胜!");

                       }

                       if (abc == "2") {

                           PublicClass.ShowMessage("白子胜!");

                       }

                       return;

                   }

               }else {

                    count = 0;

                }

           }

           count = 0;

        }

        #endregion

版权声明:本文为博主原创文章,未经博主允许不得转载。

winform 五子棋 判断输赢 分类: WinForm 2014-08-07 20:55 256人阅读 评论(0) 收藏的更多相关文章

  1. hadoop调优之一:概述 分类: A1_HADOOP B3_LINUX 2015-03-13 20:51 395人阅读 评论(0) 收藏

    hadoop集群性能低下的常见原因 (一)硬件环境 1.CPU/内存不足,或未充分利用 2.网络原因 3.磁盘原因 (二)map任务原因 1.输入文件中小文件过多,导致多次启动和停止JVM进程.可以设 ...

  2. bzoj 1041 圆上的整点 分类: Brush Mode 2014-11-11 20:15 80人阅读 评论(0) 收藏

    这里先只考虑x,y都大于0的情况 如果x^2+y^2=r^2,则(r-x)(r+x)=y*y 令d=gcd(r-x,r+x),r-x=d*u^2,r+x=d*v^2,显然有gcd(u,v)=1且u&l ...

  3. ios UIKit动力 分类: ios技术 2015-07-14 12:55 196人阅读 评论(0) 收藏

    UIkit动力学是UIkit框架中模拟真实世界的一些特性. UIDynamicAnimator 主要有UIDynamicAnimator类,通过这个类中的不同行为来实现一些动态特性. 它一般有两种初始 ...

  4. iOS调用相机,相册,上传头像 分类: ios技术 2015-04-14 11:23 256人阅读 评论(0) 收藏

    一.新建工程 二.拖控件,创建映射 三.在.h中加入delegate @interface ViewController : UIViewController 复制代码 四.实现按钮事件 -(IBAc ...

  5. Bzoj 1036 树的统计 分类: ACM TYPE 2014-12-29 18:55 72人阅读 评论(0) 收藏

    Description 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w.我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改为t II. Q ...

  6. HTTP 错误 500.19- Internal Server Error 错误解决方法 分类: Windows服务器配置 2015-01-08 20:16 131人阅读 评论(0) 收藏

    1.第一种情况如下: 解决方法如下: 经过检查发现是由于先安装Framework组件,后安装iis的缘故,只需重新注册下Framework就可以了,具体步骤如下 1 打开运行,输入cmd进入到命令提示 ...

  7. Ubuntu 命令行下快速打开各类文件 分类: ubuntu shell 2014-11-18 20:06 210人阅读 评论(0) 收藏

    xdg-open 命令可以用来在Ubuntu下快速打开各类文件. 下面是从 manual 文档里截取的内容: 可以知道,该命令的功能是在图形界面下按照用户的平时习惯打开各类文件,甚至是链接. 这样,我 ...

  8. Can you find it? 分类: 二分查找 2015-06-10 19:55 5人阅读 评论(0) 收藏

    Description Give you three sequences of numbers A, B, C, then we give you a number X. Now you need t ...

  9. House Robber 分类: leetcode 算法 2015-07-09 20:53 2人阅读 评论(0) 收藏

    DP 对于第i个状态(房子),有两种选择:偷(rob).不偷(not rob) 递推公式为: f(i)=max⎧⎩⎨⎪⎪{f(i−1)+vali,f(i−2)+vali,robi−1==0robi−1 ...

随机推荐

  1. Java环境变量配置&解决版本不一致问题

    之前用Myeclipse编译运行Java没有问题 但是突然想用简单点的NotePad++以及cmd直接编译运行Java 这就让我倒腾了一晚上 先说下问题的解决,再总结下查阅的一些知识. 1.进行win ...

  2. State 模式

    State模式中我们将状态逻辑和动作实现进行分离.允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类:在一个状态即将结束的时候启用下一个状态. /////////state.h// ...

  3. Quartz.NET开源作业调度架构

    Quartz.NET是一个开源的作业调度框架,是 OpenSymphony 的 Quartz API 的.NET移植,它用C#写成,可用于winform和asp.net应用中.它提供了巨大的灵活性而不 ...

  4. Express使用html模板

    express默认使用jade模板,可以配置让其支持使用ejs或html模板. 1. 安装ejs 在项目根目录安装ejs. npm install ejs 2.引入ejs var ejs = requ ...

  5. JavaScript学习心得(二)

    一选择DOCTYPE DOCTYPE是一种标准通用标记语言的文档类型声明,目的是告诉标准通用标记语言解析器使用什么样的文档类型定义(DTD)来解析文档. 网页从DOCTYPE开始,即<!DOCT ...

  6. [CSS]列表属性(List)

      CSS 列表属性(List) 属性 描述 CSS list-style 在一个声明中设置所有的列表属性. 1 list-style-image 将图象设置为列表项标记. 1 list-style- ...

  7. ubuntu下mysql安装与测试

    原文地址: http://www.cnblogs.com/zhuyp1015/p/3561470.html 注意:原文地址中,最后g++ 编译源代码时少了个字母.添上即可. ubuntu上安装mysq ...

  8. MDK —— configuration wizard

    学习RTX 的时候发现RTX的配置文件可以MDK的图形界面来配置,感觉这个非常好,直观.方便.健壮,可以避免程序员写入错误的数据.   参考: µVision User's Guide->Uti ...

  9. Xsd: Xml序列化、反序列化的利器

    下面讲述根据xml生成对应序列化反序列化类的过程,xml需要首先转化为xsd,然后再生成为实体类.其中,XSD是XML Schema Definition的缩写. 1.制作xml文件:   <? ...

  10. 2013Java最新面试题

    更新时间:2015-04-07         来源:网络         投诉删除 [看准网(Kanzhun.com)]Java面试题频道小编搜集的范文“2013Java最新面试题”,供大家阅读参考 ...