在好例子网,分享、交流、成长!
您当前所在位置:首页C# 开发实例C#网络编程 → C# Winform网络围棋(可对战)

C# Winform网络围棋(可对战)

C#网络编程

下载此实例
  • 开发语言:C#
  • 实例大小:0.33M
  • 下载次数:82
  • 浏览次数:1149
  • 发布时间:2017-03-12
  • 实例类别:C#网络编程
  • 发 布 人:tzjtzj18
  • 文件格式:.rar
  • 所需积分:3
 相关标签: winform C# 网络 c ORM

实例介绍

程序使用VS2015,.NET4.5,.NET 2.0以上都可以编译使用,无第三方组件,可生成32、64位。Socket网络传输,可以对战、旁观,围棋走棋规则基本全面,可直接对杀。
围棋规则算法写代码太麻烦,直接参考了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/

标签: winform C# 网络 c ORM

网友评论

第 1 楼 fggfd1314150 发表于: 2020-11-29 21:42 25
为什么客户端连不上服务端

支持(0) 盖楼(回复)

发表评论

(您的评论需要经过审核才能显示)

查看所有1条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警