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 318
程序使用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/
下载说明:请别用迅雷下载,失败请重下,重下不扣分!
c lient2
客户端连接服务器的程序,以此测试客户端是否连接上。(client programming source)
2013-09-02 16:17:04下载
积分:1
HexStrToDemDlg
枚举网络设备的程序, vc6开发, 新手可以参考!(Enumeration of network equipment procedures, vc6 development, novice can refer to!)
2017-03-09 10:29:11下载
积分:1
C# wpf wifi网 络 共享源码
【实例简介】
2021-06-12 00:31:20下载
积分:1
01liaotianshi
第1章实例01-简单网络聊天室.zip(Chapter 1 Examples 01- Simple network chat rooms. Zip)
2013-05-31 09:23:05下载
积分:1
IOCP端口完成模型例子
基于输入输出端口完成模型的SOCKET通讯例子
2020-05-14下载
积分:1
c PP-Guinness-c lassic -c ode
c++经典代码大全,适合初学者下载参考使用。(c++ Guinness classic code, suitable for beginners reference.)
2014-01-13 11:17:12下载
积分:1
sipproxd-win32
移植的一个基于osip,使用vc编译的siproxd服务器软件(port siproxd to win32, compiled using vc)
2009-07-02 22:31:48下载
积分:1
FreeFileSync _v4.2_sourc e
FreeFileSync是一个易于使用的开放源码文件夹同步和比较软件,简单易用。 FreeFileSync[1] 首先是文件同步功能,可以在指定的两个文件夹之间进行单向或双向的同步,点击程序窗口右上方的绿色齿轮图标可以设置相关参数;期间也可以自定义需要筛选的文件,有“包括”和“例外”两种过滤方式,定义需要过滤的文件类型,这就看个人需要了。(FreeFileSync is an easy to use open source software folder synchronization and comparison, easy to use. FreeFileSync [1] The first is file synchronization, you can specify the folder between the two one-way or two-way synchronization, click the program icon in the window at the top right of the green gear can set parameters period can also be customized to sift through the file, the " include" and " exceptional" two filtering methods, definitions need to filter the file types, which depends on personal needs.)
2020-09-09 10:58:02下载
积分:1
Soc ket文件传输(含服务端以及客户端源码)
Socket文件传输 传输任意格式文件
2018-06-15下载
积分:1
c hap5
C++网络通信 ftp 服务器 客户端
(C++network ftp server clinet)
2009-12-26 17:44:57下载
积分:1