winform 五子棋 判断输赢 分类: WinForm 2014-08-07 20:55 256人阅读 评论(0) 收藏
新手上路,高手勿进!
利用数组,根据新旧数组值的不同,获取那个点是什么棋子;
说明:
棋盘: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) 收藏的更多相关文章
- hadoop调优之一:概述 分类: A1_HADOOP B3_LINUX 2015-03-13 20:51 395人阅读 评论(0) 收藏
hadoop集群性能低下的常见原因 (一)硬件环境 1.CPU/内存不足,或未充分利用 2.网络原因 3.磁盘原因 (二)map任务原因 1.输入文件中小文件过多,导致多次启动和停止JVM进程.可以设 ...
- 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 ...
- ios UIKit动力 分类: ios技术 2015-07-14 12:55 196人阅读 评论(0) 收藏
UIkit动力学是UIkit框架中模拟真实世界的一些特性. UIDynamicAnimator 主要有UIDynamicAnimator类,通过这个类中的不同行为来实现一些动态特性. 它一般有两种初始 ...
- iOS调用相机,相册,上传头像 分类: ios技术 2015-04-14 11:23 256人阅读 评论(0) 收藏
一.新建工程 二.拖控件,创建映射 三.在.h中加入delegate @interface ViewController : UIViewController 复制代码 四.实现按钮事件 -(IBAc ...
- Bzoj 1036 树的统计 分类: ACM TYPE 2014-12-29 18:55 72人阅读 评论(0) 收藏
Description 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w.我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改为t II. Q ...
- HTTP 错误 500.19- Internal Server Error 错误解决方法 分类: Windows服务器配置 2015-01-08 20:16 131人阅读 评论(0) 收藏
1.第一种情况如下: 解决方法如下: 经过检查发现是由于先安装Framework组件,后安装iis的缘故,只需重新注册下Framework就可以了,具体步骤如下 1 打开运行,输入cmd进入到命令提示 ...
- Ubuntu 命令行下快速打开各类文件 分类: ubuntu shell 2014-11-18 20:06 210人阅读 评论(0) 收藏
xdg-open 命令可以用来在Ubuntu下快速打开各类文件. 下面是从 manual 文档里截取的内容: 可以知道,该命令的功能是在图形界面下按照用户的平时习惯打开各类文件,甚至是链接. 这样,我 ...
- 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 ...
- 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 ...
随机推荐
- Angular简单应用剖析
这一篇我们将一起感受学习一个小型的.活生生的应用,而不是继续深入分析哪些单个的特性.我们将会一起感受一下,前面所讨论过的所有片段如何才能真正的组合在一起,形成一个真实的.可以运行的应用. GutHub ...
- 关于Zen Coding:css,html缩写
zen coding 是一个俄罗斯人写的编辑器(支持大部分现下流行的编辑器)插件,其安装也是非常简单,只要安装插件,然后在项目中拷贝js文件就可以.像Webstorm6.0.2中已经包含这样的插件.什 ...
- 第一天的CI笔记
1 CI不区分大小写2. http://xxx.com/index/[控制器名称]/[控制器里面方法的确名称]/[传入方法的参数 ]/ 3. 控制器及控制器类名称与文件名称一致, 继承 CI_Cont ...
- sublime text下载和汉化
好处就不说了,能认识到这款编辑器,基本上对它有一定的了解了. Sublime Text2是一款开源的软件,不需要注册即可使用(虽然没有注册会有弹窗,但是基本不影响使用). 官方网站:http://ww ...
- xadmin的插件机制
xadmin的视图方法中如果加了@filter_hook 标记的都可以作为插件的钩子函数. 例如在ListAdminView类中有许多加了上述标记的方法, @filter_hook def get_c ...
- Python中使用中文
python的中文问题一直是困扰新手的头疼问题,这篇文章将给你详细地讲解一下这方面的知识.当然,几乎可以确定的是,在将来的版本中,python会彻底解决此问题,不用我们这么麻烦了. 先来看看pytho ...
- 移动端meta标签整理-备
分类 在介绍移动端特有 meta 标签之前,先简单说一下 HTML meta 标签的一些知识. meta 标签包含了 HTTP 标题信息 (http-equiv) 和 页面描述信息 (name). h ...
- C/C++ 中的0长数组(柔性数组)
转自C/C++ 中的0长数组(柔性数组) 在标准C和C++中0长数组如charArray[0]是不允许使用的,因为这从语义逻辑上看,是完全没有意义的.但是,GUN中却允许使用,而且,很多时候,应用在了 ...
- Java System类看到的一点小记
System类 位置java.lang包中 是final类,不能被继承,不能被修改 ,不能被实例化 private System(){}私有的构造函数,不允许被其他对象进行实例化 public fin ...
- vector,list,deque容器的迭代器简单介绍
我们知道标准库中的容器有vector,list和deque.另外还有slist,只不过它不是标准容器.而谈到容器,我们不得不知道进行容器一切操作的利器---迭代器.而在了解迭代器之前,我们得先知道每个 ...