资源简介
程序使用VS2015,.NET4.5,.NET 2.0以上都可以编译使用,无第三方组件,可生成32、64位。Socket网络传输,可以对战、旁观,围棋走棋规则基本全面,可直接对杀。
围棋规则算法写代码太麻烦,直接参考了GreatVerveGo(是单机的)算法,感谢作者。
程序包含客户端和服务端2各部分。图片文件在\goo\bin\Debug\Res里面
1、先启动服务端 goServer.exe
进入服务端后点击“开始监听”。
服务端定义:
//连接的用户
System.Collections.Generic.List<User> userList = new List<User>();
//监听端口
private int port = 51888;
//走棋判断
int[] GameRoom = new int[255]; //房间号
int[] GameUser = new int[255]; //房间人数;
int[] GameStat = new int[255]; //走棋状态:1-等待、2-准备、3-开始、4-旁观
int[] GameReday = new int[255]; //走棋准备状态
//旁观 获得走棋信息
string lookuser = "";
2、打开客户端 goo.exe
这里直接设置了进入到房间“0”,进入后显示“等待其他人加入”,先进房的执黑旗,按钮不可用;
当有第2个人进入后,执白棋,按钮显示“准备”;
双方都点击“准备”后,进入对局;
后面再有人进入为旁观者,能看见双方对局信息。房间都是“0”。
地址:client = new TcpClient("192.168.0.104", 51888); //定义服务器端ip地址和端口,与服务器端定义要一致
根据你的需要进行修改;
客户端定义:
private int[,] Qpan = new int[24, 24]; //棋盘数组
private string SendLook = null; //发送给旁观者的对局信息
private const int Qz_Null = 0; //没有棋子
private const int Qz_Black = 1; //黑子
private const int Qz_White = 2; //白子
private const int Max_Qpan = 23; //棋盘最大路数
private int[,] TmpA_Qpan = new int[24, 24]; //临时存储棋盘
private int[,] TmpB_Qpan = new int[24, 24];//临时存储棋盘
private int[,] Tmp_Qpan = new int[24, 24];//临时存储棋盘
private int Current_Go = 1; //当前棋子颜色
private int Qpan_Count = 19; //当前棋盘路数
private int Rame; //气数
private int Die_Num; //死子数
private bool _Attack = false; //是否打劫
private int Attack_X = 0; //打劫位置
private int Attack_Y = 0; //打劫位置
private Panel g_Hei; //鼠标移动 黑块
private Panel g_Bai; //鼠标移动 白块
private Panel Fit_Hei; //最后落子标记 黑
private Panel Fit_Bai; //最后落子标记 白
private Panel[,] QzH = new Panel[20,20]; //黑棋子
private Panel[,] QzB = new Panel[20,20]; //白棋子
int LastFitX = 0; //给旁观最后落子位置
int LastFitY = 0; //给旁观最后落子位置
int LastHB = 0; //给旁观最后落子颜色
Point Mouseoff; //鼠标位置
bool go_play = false; //能否走棋
int Select_Qzi = 0; //是黑还是白,1-黑,2-白
int ReceiveHB =1; //接收到的棋子颜色
函数:
//初始化棋盘、棋子
private void InitQpan()
//判断该谁走棋
private void Judge_HB()
//显示棋子
private void ShowQz(int i, int j, int QzHB)
//重置棋盘棋子
private void Rest_Qpan()
//备份棋盘棋子
private void Qpan_Backup()
//恢复棋盘棋子
private void Qpan_Restore()
//刷新棋盘棋子
private void Qpan_Refresh(int QzHB)
//计算棋子的气数底层函数
private void Base_Calc(int i, int j, int QzHB)
//计算气数
private void Calc_Ream(int m, int n, int QzHB)
//计算气数接口
private void Calc_Interface(int QzHB)
//落子处理,判断打劫、打n还1、吃掉对方棋子
private void Falling(int xx, int yy)
//设置打劫
private void Set_Attack(int i, int j)
//最后落子标记
private void Fit_Flag(int xx, int yy)
//旁观者最后落子标记
private void LookFit_Flag(int Qhb, int xx, int yy)
//对方走棋显示在己方并判断打劫、打n还1、吃掉对方棋子
private void Opp_Falling()
3、跨线程调用封装在CrossThreadCall.cs
4、时间有限,程序没有做计算胜负,没有做掉线处理。基本规则有了,其他的就是套接字变来变去,需要新功能自己添加。
只是一个初学练习,更多初学资料到我的博客http://www.cnblogs.com/qiaoke/
围棋规则算法写代码太麻烦,直接参考了GreatVerveGo(是单机的)算法,感谢作者。
程序包含客户端和服务端2各部分。图片文件在\goo\bin\Debug\Res里面
1、先启动服务端 goServer.exe
服务端:
地址为IPAddress[] addrIP = Dns.GetHostAddresses("192.168.0.104"); //ip地址
端口51888,
进入服务端后点击“开始监听”。
服务端定义:
//连接的用户
System.Collections.Generic.List<User> userList = new List<User>();
//监听端口
private int port = 51888;
//走棋判断
int[] GameRoom = new int[255]; //房间号
int[] GameUser = new int[255]; //房间人数;
int[] GameStat = new int[255]; //走棋状态:1-等待、2-准备、3-开始、4-旁观
int[] GameReday = new int[255]; //走棋准备状态
//旁观 获得走棋信息
string lookuser = "";
2、打开客户端 goo.exe
这里直接设置了进入到房间“0”,进入后显示“等待其他人加入”,先进房的执黑旗,按钮不可用;
当有第2个人进入后,执白棋,按钮显示“准备”;
双方都点击“准备”后,进入对局;
后面再有人进入为旁观者,能看见双方对局信息。房间都是“0”。
地址:client = new TcpClient("192.168.0.104", 51888); //定义服务器端ip地址和端口,与服务器端定义要一致
根据你的需要进行修改;
客户端定义:
private int[,] Qpan = new int[24, 24]; //棋盘数组
private string SendLook = null; //发送给旁观者的对局信息
private const int Qz_Null = 0; //没有棋子
private const int Qz_Black = 1; //黑子
private const int Qz_White = 2; //白子
private const int Max_Qpan = 23; //棋盘最大路数
private int[,] TmpA_Qpan = new int[24, 24]; //临时存储棋盘
private int[,] TmpB_Qpan = new int[24, 24];//临时存储棋盘
private int[,] Tmp_Qpan = new int[24, 24];//临时存储棋盘
private int Current_Go = 1; //当前棋子颜色
private int Qpan_Count = 19; //当前棋盘路数
private int Rame; //气数
private int Die_Num; //死子数
private bool _Attack = false; //是否打劫
private int Attack_X = 0; //打劫位置
private int Attack_Y = 0; //打劫位置
private Panel g_Hei; //鼠标移动 黑块
private Panel g_Bai; //鼠标移动 白块
private Panel Fit_Hei; //最后落子标记 黑
private Panel Fit_Bai; //最后落子标记 白
private Panel[,] QzH = new Panel[20,20]; //黑棋子
private Panel[,] QzB = new Panel[20,20]; //白棋子
int LastFitX = 0; //给旁观最后落子位置
int LastFitY = 0; //给旁观最后落子位置
int LastHB = 0; //给旁观最后落子颜色
Point Mouseoff; //鼠标位置
bool go_play = false; //能否走棋
int Select_Qzi = 0; //是黑还是白,1-黑,2-白
int ReceiveHB =1; //接收到的棋子颜色
函数:
//初始化棋盘、棋子
private void InitQpan()
//判断该谁走棋
private void Judge_HB()
//显示棋子
private void ShowQz(int i, int j, int QzHB)
//重置棋盘棋子
private void Rest_Qpan()
//备份棋盘棋子
private void Qpan_Backup()
//恢复棋盘棋子
private void Qpan_Restore()
//刷新棋盘棋子
private void Qpan_Refresh(int QzHB)
//计算棋子的气数底层函数
private void Base_Calc(int i, int j, int QzHB)
//计算气数
private void Calc_Ream(int m, int n, int QzHB)
//计算气数接口
private void Calc_Interface(int QzHB)
//落子处理,判断打劫、打n还1、吃掉对方棋子
private void Falling(int xx, int yy)
//设置打劫
private void Set_Attack(int i, int j)
//最后落子标记
private void Fit_Flag(int xx, int yy)
//旁观者最后落子标记
private void LookFit_Flag(int Qhb, int xx, int yy)
//对方走棋显示在己方并判断打劫、打n还1、吃掉对方棋子
private void Opp_Falling()
3、跨线程调用封装在CrossThreadCall.cs
4、时间有限,程序没有做计算胜负,没有做掉线处理。基本规则有了,其他的就是套接字变来变去,需要新功能自己添加。
只是一个初学练习,更多初学资料到我的博客http://www.cnblogs.com/qiaoke/
代码片段和文件信息
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace goo
{
public static class CrossThreadCall
{
public static void CrossThreadCalls(this Control ctl ThreadStart del)
{
if (del == null) return;
if (ctl.InvokeRequired)
ctl.Invoke(del null);
else
del();
}
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
..A..H. 45056 2017-03-12 12:38 goo\.vs\goo\v14\.suo
文件 161 2017-03-11 20:04 goo\app.config
文件 30208 2017-03-12 11:56 goo\bin\Debug\goo.exe
文件 161 2017-03-11 20:04 goo\bin\Debug\goo.exe.config
文件 46592 2017-03-12 11:56 goo\bin\Debug\goo.pdb
文件 22696 2017-03-12 12:05 goo\bin\Debug\goo.vshost.exe
文件 161 2017-03-11 20:04 goo\bin\Debug\goo.vshost.exe.config
文件 490 2016-07-16 19:44 goo\bin\Debug\goo.vshost.exe.manifest
文件 3330 2017-03-08 20:25 goo\bin\Debug\Res\bai.png
文件 235 2017-03-12 11:14 goo\bin\Debug\Res\close.png
文件 18643 2017-03-10 10:46 goo\bin\Debug\Res\fit_bai.png
文件 18815 2017-03-10 10:44 goo\bin\Debug\Res\fit_hei.png
文件 136 2017-03-08 22:01 goo\bin\Debug\Res\g-bai.png
文件 126 2017-03-08 22:02 goo\bin\Debug\Res\g-hei.png
文件 3181 2017-03-08 20:21 goo\bin\Debug\Res\hei.png
文件 20814 2017-03-02 19:34 goo\bin\Debug\Res\logo.png
文件 178372 2017-03-08 19:28 goo\bin\Debug\Res\pan.png
文件 515 2017-03-11 21:35 goo\CrossThreadCall.cs
文件 33025 2017-03-12 11:56 goo\Form1.cs
文件 6767 2017-03-12 11:27 goo\Form1.Designer.cs
文件 15353 2017-03-12 11:27 goo\Form1.resx
文件 3945 2017-03-11 21:36 goo\goo.csproj
文件 972 2017-03-08 20:55 goo\goo.sln
文件 1748 2017-03-11 18:42 goo\obj\Debug\DesignTimeResolveAssemblyReferences.cache
文件 6904 2017-03-11 21:33 goo\obj\Debug\DesignTimeResolveAssemblyReferencesInput.cache
文件 738 2017-03-12 12:05 goo\obj\Debug\goo.csproj.FileListAbsolute.txt
文件 1012 2017-03-12 11:56 goo\obj\Debug\goo.csproj.GenerateResource.Cache
文件 2210 2017-03-12 11:56 goo\obj\Debug\goo.csprojResolveAssemblyReference.cache
文件 30208 2017-03-12 11:56 goo\obj\Debug\goo.exe
文件 6656 2017-03-12 11:56 goo\obj\Debug\goo.Form1.resources
............此处省略83个文件信息
- 上一篇:代理IP自动更新校验器完整项目源码
- 下一篇:Tcp网络通信协议类源码可生成类库
相关资源
- C#高级编程第10版英文原版
- c#入门经典 第七版 中文版 非扫描版
- .netc#新手菜鸟mvc5的仓库管理系统 so
- C# NPOI生成word插入图片和表格
- C#程序设计基础C#程序设计及应用教程
- 深入.NET平台和C#编程
- .net 美萍超市管理系统源码C#
- WinForm GeckoFx33 Demo JS与C#互交 窗口浏览
- 《ASP.NET程序设计项目教程》周虎,王
- 计算机图形学 三维模型处理算法初步
- C# KTV 点歌系统,C#项目源码带数据库
- C#实验--A.1 视频动态绘制练习.
- c#实现动态规划法——求解矩阵连乘问
- c#winform中完美代替WebBrowser最新的控件
- C#高级编程第9版:C#5.0 & .NET 4.5.1 par
- Illustrated C# 2010 C# 4.0图解教程
- C# WINFORM框架源碼
- C# WinForm实践开发教程清晰版
- 3D打印机上位机源码Reprap Host 是C#写的
- C#设计模式+源码JamesW.Cooper.zip
- C#程序开发范例宝典(第3版).(配套
- C#写的年会抽奖软件包含源代码.zip
- 大型ERP C#源码
- asp.net完整项目带数据库
- 一种开源业务系统框架winform源码
- 清大出版社 段德亮 《C#课程设计案例
- C#人事管理系统/人力资源管理系统
- C# 7 and .NET Core: Modern Cross-Platform Deve
- C# 5.0 in a Nutshell 5th Edition.pdf
-
C# 6.0 and the .NET 4.6 fr
amework(7th).
评论
共有 条评论