userList=newList();//监听端口privateintport=51888;//走棋判断int[]GameRoom=newint[255];//房间号int[]GameUser=newint[255];//房间人数;int[]GameStat=newint[255]; //走棋状态:1-等待、2-准备、3-开始、4-旁观int[]GameReday=newint[255];//走棋准备状态//旁观获得走棋信息stringlookuser="";2、打开客户端goo.exe这里直接设置了进入到房间“0”,进入后显示“等待其他人加入”,先进房的执黑旗,按钮不可用;当有第2个人进入后,执白棋,按钮显示“准备”;双方都点击“准备”后,进入对局;后面再有人进入为旁观者,能看见双方对局信息。房间都是“0”。地址:client=newTcpClient("192.168.0.104",51888);//定义服务器端ip地址和端口,与服务器端定义要一致根据你的需要进行修改;客户端定义:privateint[,]Qpan=newint[24,24];//棋盘数组privatestringSendLook=null;//发送给旁观者的对局信息privateconstintQz_Null=0;//没有棋子privateconstintQz_Black=1;//黑子privateconstintQz_White=2;//白子privateconstintMax_Qpan=23;//棋盘最大路数privateint[,]TmpA_Qpan=newint[24,24];//临时存储棋盘privateint[,]TmpB_Qpan=newint[24,24];//临时存储棋盘privateint[,]Tmp_Qpan=newint[24,24];//临时存储棋盘privateintCurrent_Go=1;//当前棋子颜色privateintQpan_Count=19;//当前棋盘路数privateintRame;//气数privateintDie_Num;//死子数privatebool_Attack=false;//是否打劫privateintAttack_X=0;//打劫位置privateintAttack_Y=0;//打劫位置privatePanelg_Hei;//鼠标移动黑块privatePanelg_Bai;//鼠标移动白块privatePanelFit_Hei;//最后落子标记黑privatePanelFit_Bai;//最后落子标记白privatePanel[,]QzH=newPanel[20,20];//黑棋子privatePanel[,]QzB=newPanel[20,20];//白棋子intLastFitX=0;//给旁观最后落子位置intLastFitY=0;//给旁观最后落子位置intLastHB=0;//给旁观最后落子颜色PointMouseoff;//鼠标位置boolgo_play=false;//能否走棋intSelect_Qzi=0;//是黑还是白,1-黑,2-白intReceiveHB=1;//接收到的棋子颜色函数://初始化棋盘、棋子privatevoidInitQpan()//判断该谁走棋privatevoidJudge_HB()//显示棋子privatevoidShowQz(inti,intj,intQzHB)//重置棋盘棋子privatevoidRest_Qpan()//备份棋盘棋子privatevoidQpan_Backup()//恢复棋盘棋子privatevoidQpan_Restore()//刷新棋盘棋子privatevoidQpan_Refresh(intQzHB)//计算棋子的气数底层函数privatevoidBase_Calc(inti,intj,intQzHB)//计算气数privatevoidCalc_Ream(intm,intn,intQzHB)//计算气数接口privatevoidCalc_Interface(intQzHB)//落子处理,判断打劫、打n还1、吃掉对方棋子privatevoidFalling(intxx,intyy)//设置打劫privatevoidSet_Attack(inti,intj)//最后落子标记privatevoidFit_Flag(intxx,intyy)//旁观者最后落子标记privatevoidLookFit_Flag(intQhb,intxx,intyy)//对方走棋显示在己方并判断打劫、打n还1、吃掉对方棋子privatevoidOpp_Falling()3、跨线程调用封装在CrossThreadCall.cs4、时间有限,程序没有做计算胜负,没有做掉线处理。基本规则有了,其他的就是套接字变来变去,需要新功能自己添加。只是一个初学练习,更多初学资料到我的博客http://www.cnblogs.com/qiaoke/-IMDN开发者社群-imdn.cn">
userList=newList();//监听端口privateintport=51888;//走棋判断int[]GameRoom=newint[255];//房间号int[]GameUser=newint[255];//房间人数;int[]GameStat=newint[255]; //走棋状态:1-等待、2-准备、3-开始、4-旁观int[]GameReday=newint[255];//走棋准备状态//旁观获得走棋信息stringlookuser="";2、打开客户端goo.exe这里直接设置了进入到房间“0”,进入后显示“等待其他人加入”,先进房的执黑旗,按钮不可用;当有第2个人进入后,执白棋,按钮显示“准备”;双方都点击“准备”后,进入对局;后面再有人进入为旁观者,能看见双方对局信息。房间都是“0”。地址:client=newTcpClient("192.168.0.104",51888);//定义服务器端ip地址和端口,与服务器端定义要一致根据你的需要进行修改;客户端定义:privateint[,]Qpan=newint[24,24];//棋盘数组privatestringSendLook=null;//发送给旁观者的对局信息privateconstintQz_Null=0;//没有棋子privateconstintQz_Black=1;//黑子privateconstintQz_White=2;//白子privateconstintMax_Qpan=23;//棋盘最大路数privateint[,]TmpA_Qpan=newint[24,24];//临时存储棋盘privateint[,]TmpB_Qpan=newint[24,24];//临时存储棋盘privateint[,]Tmp_Qpan=newint[24,24];//临时存储棋盘privateintCurrent_Go=1;//当前棋子颜色privateintQpan_Count=19;//当前棋盘路数privateintRame;//气数privateintDie_Num;//死子数privatebool_Attack=false;//是否打劫privateintAttack_X=0;//打劫位置privateintAttack_Y=0;//打劫位置privatePanelg_Hei;//鼠标移动黑块privatePanelg_Bai;//鼠标移动白块privatePanelFit_Hei;//最后落子标记黑privatePanelFit_Bai;//最后落子标记白privatePanel[,]QzH=newPanel[20,20];//黑棋子privatePanel[,]QzB=newPanel[20,20];//白棋子intLastFitX=0;//给旁观最后落子位置intLastFitY=0;//给旁观最后落子位置intLastHB=0;//给旁观最后落子颜色PointMouseoff;//鼠标位置boolgo_play=false;//能否走棋intSelect_Qzi=0;//是黑还是白,1-黑,2-白intReceiveHB=1;//接收到的棋子颜色函数://初始化棋盘、棋子privatevoidInitQpan()//判断该谁走棋privatevoidJudge_HB()//显示棋子privatevoidShowQz(inti,intj,intQzHB)//重置棋盘棋子privatevoidRest_Qpan()//备份棋盘棋子privatevoidQpan_Backup()//恢复棋盘棋子privatevoidQpan_Restore()//刷新棋盘棋子privatevoidQpan_Refresh(intQzHB)//计算棋子的气数底层函数privatevoidBase_Calc(inti,intj,intQzHB)//计算气数privatevoidCalc_Ream(intm,intn,intQzHB)//计算气数接口privatevoidCalc_Interface(intQzHB)//落子处理,判断打劫、打n还1、吃掉对方棋子privatevoidFalling(intxx,intyy)//设置打劫privatevoidSet_Attack(inti,intj)//最后落子标记privatevoidFit_Flag(intxx,intyy)//旁观者最后落子标记privatevoidLookFit_Flag(intQhb,intxx,intyy)//对方走棋显示在己方并判断打劫、打n还1、吃掉对方棋子privatevoidOpp_Falling()3、跨线程调用封装在CrossThreadCall.cs4、时间有限,程序没有做计算胜负,没有做掉线处理。基本规则有了,其他的就是套接字变来变去,需要新功能自己添加。只是一个初学练习,更多初学资料到我的博客http://www.cnblogs.com/qiaoke/ - IMDN开发者社群-imdn.cn">
首页 »
C# »
C# Winform网络围棋(可对战)
于 2017-03-12 发布
0 285
程序使用VS2015,.NET4.5,.NET 2.0以上都可以编译使用,无第三方组件,可生成32、64位。Socket网络传输,可以对战、旁观,围棋走棋规则基本全面,可直接对杀。围棋规则算法写代码太麻烦,直接参考了GreatVerveGo(是单机的)算法,感谢作者。程序包含客户端和服务端2各部分。图片文件在gooinDebugRes里面1、先启动服务端 goServer.exe服务端:地址为IPAddress[] addrIP = Dns.GetHostAddresses("192.168.0.104"); //ip地址端口51888,根据你的需要进行修改;进入服务端后点击“开始监听”。服务端定义://连接的用户System.Collections.Generic.List userList = new List();//监听端口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.cs4、时间有限,程序没有做计算胜负,没有做掉线处理。基本规则有了,其他的就是套接字变来变去,需要新功能自己添加。只是一个初学练习,更多初学资料到我的博客http://www.cnblogs.com/qiaoke/
下载说明:请别用迅雷下载,失败请重下,重下不扣分!
Async Tc p
一般的聊天程序都是使用socket方式通讯的。对于一个聊天程序来说一般是一个服务器用来中转消息,然后是多个客户端通过连接服务器来消息交换。(General chat programs are using the socket mode of communication. For a chat program, it is generally a server used to relay the message, then multiple clients to connect to the server through the exchange of messages.)
2013-08-26 10:10:08下载
积分:1
Windows-Soc kets
本书主要介绍了如何用API函数进行网络间通信(The book introduces how to use the API function communication networks)
2013-03-08 23:59:51下载
积分:1
V5-1008_RL-TCPnet实验_TCP服务器(裸机)
stm32f407平台下实现网络编程,实现TCP通讯,利用TCP-NET(Realize network programming under stm32f407 platform, realize TCP communication, make use of TCP-NET)
2019-03-06 14:42:27下载
积分:1
CSharp-Vote
C#模拟HTTP请求实现刷票功能,自动宽带拨号断开实现换IP的目的(C# simulate HTTP requests to achieve brush votes, automatic disconnection of broadband dial to achieve the purpose for IP' s)
2014-08-11 12:35:12下载
积分:1
EasyChat
说明: socket通讯 (发消息聊天) 实例源码 (亲测)(Socket communication (message chat) instance source code (pro test))
2021-02-15 10:58:29下载
积分:1
PktFilter-0.06-beta2(5)
PktFilter is a software that can configure the IPv4 filtering device driver found in Windows 2000/XP/Server 2003, with filtering rules following a syntax similar to IP Filter.
2012-03-29 20:21:57下载
积分:1
封装HttpWebRequest常用方法
封装HttpWebRequest常用方法
2015-02-06下载
积分:1
IOCPModel
这是一本关于IOCP模型原理及其功能介绍的文章。对于做大型服务器很有帮助(This is a book about IOCP model and the function introduction article. For large server help
)
2012-09-22 13:15:34下载
积分:1
ChartRoomClient
说明: IOCP客户端代码,希望对大家有所帮助,大家互相学习(ChartRoomClient)
2009-08-31 21:58:22下载
积分:1
IEEE9
说明: bpa软件实现三机九节点潮流程序与稳定程序分析(BPA software three machine nine node power flow and stability program analysis)
2020-03-02 11:34:33下载
积分:1