C#写的130行围棋

刁蛮小神医 2012-03-09 07:37:59
层次效果未解决 望高人解答
先往窗体托个圆形 就是ovalshape
然后把代码粘贴上去就能运行了
下面是下载地址
http://download.csdn.net/detail/xiaoshenyi2/4125059
...全文
477 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
zh6335901 2012-03-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 sunzongbao2007 的回复:]
彳亍乐儿

这个好像在哪儿见过
[/Quote]
在百度。。
刁蛮小神医 2012-03-09
  • 打赏
  • 举报
回复
太过宠忙 - -没有写判断胜负 也就是几行代码的事情了
还有 判断胜负具体的规则不是很清楚
咿呀大河马 2012-03-09
  • 打赏
  • 举报
回复
高手!
dulei123321 2012-03-09
  • 打赏
  • 举报
回复
楼主很强大
zw_l_1989 2012-03-09
  • 打赏
  • 举报
回复
看看先
BG 2012-03-09
  • 打赏
  • 举报
回复
越写越短了……
朕赐你肥皂 2012-03-09
  • 打赏
  • 举报
回复
一直不会围棋的路过。。。
ayzen1988 2012-03-09
  • 打赏
  • 举报
回复
又一高手
铜臂阿铁木 2012-03-09
  • 打赏
  • 举报
回复
彳亍乐儿

这个好像在哪儿见过
z46988646 2012-03-09
  • 打赏
  • 举报
回复
听着不错,不过还没实验,一会试试
刁蛮小神医 2012-03-09
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 ghao0 的回复:]
日本规则判断胜负是数目的。如:"盘角曲4"要单独判断。
[/Quote]
规则已经明白了 好吧 我喜欢数子
数目的话 倒也不复杂 下次顺便把判断胜负也弄出来把
刁蛮小神医 2012-03-09
  • 打赏
  • 举报
回复
using System;
using System.Drawing;
using System.Windows.Forms;
using Microsoft.VisualBasic.PowerPacks;

namespace 围棋2//解决方案 使用数组解决问题 :将相邻的子放进一个数组 然后判断这些子的气 如果所有子的气为0 则遍历吃掉这些子
{
public partial class Form1 : Form
{
int[,] ai = new int[13, 13];//存数据的
int[] bi = new int[100];//存黑棋和白棋
int[] cc = new int[100];//分组存的
static int bo = 0;//设置谁下
ShapeContainer sh = new ShapeContainer();//画棋盘的容器
const int f = 30, f2 = 40;//设置常量
public Form1()
{
Text = "围棋--作者:彳亍乐儿";
StartPosition = FormStartPosition.CenterScreen;
BackColor = Color.Gray;
Size = new Size(580, 590);
Controls.Add(sh);
KeyPreview = true;
MouseDown += new MouseEventHandler(md);//布局
for (int y = 1, x = 1, x2 = 13; y < 14; y++)//这个循环用来画棋盘
{
LineShape a = new LineShape(x * f2, y * f2, x2 * f2, y * f2);
LineShape b = new LineShape(y * f2, x * f2, y * f2, x2 * f2);
a.Tag = b.Tag = 10000;
a.Enabled = b.Enabled = false;//这一步很重要
sh.Shapes.AddRange(new Shape[] { a, b });
}
}
private void md(object sender, MouseEventArgs e)//鼠标点击事件
{
int d = dingwei(e.Location);
if (d != 0)
{
bo++;
OvalShape a = new OvalShape();
a.Size = new Size(f, f);
a.Location = new Point(d / 100 * f2 - f / 2, d % 100 * f2 - f / 2);
a.BackStyle = BackStyle.Opaque;
a.Tag = d-101;
if (bo % 2 == 0)
{
a.BackColor = Color.White;
panduan(1);
}
else
a.BackColor = Color.Black;
sh.Shapes.Add(a);
panduan(2);
panduan(1);
}
}
int dingwei(Point p)//定位判断
{
for (int a = 1; a < 14; a++)
for (int b = 1; b < 14; b++)
if (Math.Abs(p.X - a * f2) < 15 && Math.Abs(p.Y - b * f2) < 15)
{
ai[a - 1, b - 1] = bo % 2 + 1;
return a * 100 + b;
}
return 0;
}
void panduan(int h)
{
int b2=0;
for (int i = 0; i < 13; i++)
for (int l = 0; l < 13; l++)
if (ai[i, l] == h)
bi[b2++] = i * 100 + l;//麻烦了点 还是弄到了所有黑子的坐标
for (int i = 0; i < 100; i++)
cc[i] = 0;
int t = 1;
for (int i = 0; i < b2; i++)
if (cc[i] == 0)
{
cc[i] = t++;
xunzhao(bi[i], t - 1,b2);//将其分组
}
for (int i = 1; i < t; i++)
zhaoqi(i, b2);
}
void xunzhao(int x, int y, int z)//寻找 - -!强大的调用自己 第一次用
{
for (int i = 0; i < z; i++)
if (cc[i] != y)
if (x + 1 == bi[i] || x - 1 == bi[i] || x + 100 == bi[i] || x - 100 == bi[i])
{
cc[i] = y;
xunzhao(bi[i], y,z);
}
}
void zhaoqi(int x,int z)//找一个区域的子的气 如果这个区域没有气 则扼杀这个区域的所有子 x代表区域的编号
{
int t=0;
for(int i=0;i<z;i++)
if (cc[i] == x)
{
if (bi[i]/100!=12&&ai[bi[i] / 100+1, bi[i] % 100] == 0)
t++;
if (bi[i]/100!=0&&ai[bi[i] / 100 - 1, bi[i] % 100] == 0)
t++;
if (bi[i]%100!=12&&ai[bi[i] / 100 , bi[i] % 100+1] == 0)
t++;
if (bi[i]%100!=0&&ai[bi[i] / 100 , bi[i] % 100-1] == 0)
t++;
}
if(t==0)//嘿嘿
for(int i=0;i<z;i++)
if (cc[i] == x)
{
chidiao(bi[i]);
ai[bi[i] / 100, bi[i] % 100] = 0;
}
}
void chidiao(int p)//测试无误
{
foreach (Shape i in sh.Shapes)
if (p.ToString() == i.Tag.ToString())
{
sh.Shapes.Remove(i);
break;//遍历中删除元素必须退出
}
}
}
}
ghao0 2012-03-09
  • 打赏
  • 举报
回复
日本规则判断胜负是数目的。如:"盘角曲4"要单独判断。
bowen07 2012-03-09
  • 打赏
  • 举报
回复
围棋那么复杂,几行胆码就能解决?真是高人
ghao0 2012-03-09
  • 打赏
  • 举报
回复
围棋的规则还有:劫(单子吃掉不能回填),其他防止盘面重复的规则(这个较复杂)
中日韩规则不同。
象日本规则中的盘角曲4的规则要单独判断。
另外,有实际意义可用的判断胜负的代码您能较快写下,那您是真正的高手。
【判断胜负 也就是几行代码的事情了】难以想象!

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧