五子棋C#源码,网络对战版

支持网络对战的C#五子棋源码下载,VS2010环境编译后可运行,需要先输入ip地址才行,不是单机版的。部分代码摘录如下://将接收的消息转换成自定义集合MessClass
   MessClass msg = new ClassSerializers().DeSerializeBinary((new System.IO.MemoryStream(Data))) as MessClass;

   switch (msg.sendKind)//获取发送的类型

   {

   case SendKind.SendConn://连接

   {

   if (msg.ChessStyle)//判断当前棋子的类型

   ChessStyle = true;//黑棋

   else

   ChessStyle = false;//白棋

   CGrow = ChessStyle;//记录当前棋子的类型

   CKind = -1;//记录取胜的棋子种类

   temMsg.sendKind = SendKind.SendConnHit;//设置消息发送类型为连接成功

   temMsg.ChessStyle = ChessStyle;//在发送消息中设置当前棋子的类型

   //向远程计算机发送消息

  
udpSocket1.Send(IPAddress.Parse(FrmClass.ServerIP),
Convert.ToInt32(FrmClass.ClientPort), new
ClassSerializers().SerializeBinary(temMsg).ToArray());

   break;

   }

   case SendKind.SendConnHit://连接成功

   {

   MessageBox.Show("连接成功");//显示连接成功

   button1.Tag = 1;//设置标识

   button1.Text = "重新开始";

   if (msg.ChessStyle)//如果是黑棋

   {

   ChessStyle = true;//设置本地的棋子类型为黑棋

   DownChess = true;//本地先下

   label2.Text = "黑棋";//显示本地为黑棋

   }

   else

   {

   ChessStyle = false;//设置本地的棋子类型为白棋

   DownChess = false;//本地后下

   label2.Text = "白棋";//显示本地为白棋

   }

   CGrow = ChessStyle;//记录本地的棋子类型

   panel2.Visible = false;//隐藏最后落子的标记

   break;

   }

   case SendKind.SendAfresh://重新下棋

   {

   //清空棋盘中各棋子的位置

   for (int i = 0; i < 15; i++)

   for (int j = 0; j < 15; j++)

   note[i, j] = -1;

   Graphics g = panel1.CreateGraphics();//创健panel1控件的Graphics类

   g.DrawImage(Properties.Resources.棋盘, 0, 0, panel1.Width, panel1.Height);//清空棋盘

   if (msg.ChessStyle)//如果是黑棋

   {

   ChessStyle = true;//设置本地的棋子类型为黑棋

   DownChess = true;//设置本地的棋子类型为黑棋

   label2.Text = "黑棋";//显示本地为黑棋

   }

   else

   {

   ChessStyle = false;//设置本地的棋子类型为白棋

   DownChess = false;//本地后下

   label2.Text = "白棋";//显示本地为白棋

   }

   CGrow = ChessStyle;//记录本地的棋子类型

   CKind = -1;//记录取胜的棋子种类

   panel2.Visible = false;//隐藏最后落子的标记

   break;

   }

   case SendKind.SendChessman://接收发送的棋子

   {

   int tem_CS = -1;

   Image tem_Image;//实例化Image类

   if (msg.Grow)//如果为黑棋

   {

   tem_CS = 1;//记录棋子类型为黑棋

   CGrow = true;//记录当前为黑棋

   tem_Image = Properties.Resources.黑棋子;//存储黑棋的图片

   }

   else

   {

   tem_CS = 0;//记录棋子类型为白棋

   CGrow = false;//记录当前为黑棋

   tem_Image = Properties.Resources.白棋子;//存储白棋的图片

   }

   note[msg.ChessX, msg.ChessY] = tem_CS;//在数组中记录当前棋子的位置

   Graphics g = panel1.CreateGraphics();

   g.DrawImage(tem_Image, msg.ChessX * 35 + 7, msg.ChessY * 35 + 7, 35, 35);//在棋盘中显示对方下的棋子

   panel2.Visible = true;//显示最后落子的标记

   panel2.Location = new System.Drawing.Point(msg.ChessX * 35 + 20, msg.ChessY * 35 + 20);//将标记显示在棋子上

   DownChess = msg.Walk;//记录对方是否下完棋

   CGrow = !msg.Grow;//记录本地的棋子类型

   Arithmetic(tem_CS, msg.ChessX, msg.ChessY);//计算对方是否获胜

   DownChess = true;//对方已下完棋

   break;

   }

   case SendKind.SendCut://断开连接

   {

   temMsg.sendKind = SendKind.SendCutHit;//设置发送的类型为断开连接

   //向远程计算机发送断开消息

  
udpSocket1.Send(IPAddress.Parse(FrmClass.ServerIP),
Convert.ToInt32(FrmClass.ClientPort), new
ClassSerializers().SerializeBinary(temMsg).ToArray());

   button1.Text = "连接";//显当前可重新连接

   button1.Tag = 0;//设置连接标识

   break;

   }

   case SendKind.SendCutHit://断开成功

   {

   udpSocket1.Active = false;//关闭UDP的连接

   Application.Exit();//关闭当前工程

   break;

   }

  FrmClass.ServerIP = textBox1.Text;//记录远程计算机的IP地址

   udpSocket1.Active = false;//关闭UDP的连接

   udpSocket1.LocalPort = 11001;//设置端口号

   udpSocket1.Active = true;//打开UDP的连接

   temMsg.sendKind = SendKind.SendConn;//设置发送类型为连接

   temMsg.ChessStyle = !ChessStyle;//设置对方的棋子类型

五子棋C#源码,网络对战版---转载--待学习的更多相关文章

  1. RadioStream应用源码完整版(iphone版和ipad版)

    RadioStream应用源码完整版(iphone版和ipad版),这个项目是从那个ios教程网分析过了的,也是一个不错的国外音乐应用的,支持iphone版和ipad版. <ignore_js_ ...

  2. HTML5与CSS3实例教程(第2版) 附源码 中文pdf扫描版

    HTML5和CSS3技术是目前整个网页的基础.<HTML5与CSS3实例教程(第2版)>共分3部分,集中讨论了HTML5和CSS3规范及其技术的使用方法.这一版全面讲解了最新的HTML5和 ...

  3. 使用 Redis 源码编译发布 Windows 版 Redis For Windows 发行包

    Redis 是个高性能的键值数据库,现在日常项目开发过程中,目前个人开发项目基本都会用到 Redis,主要是用来做 缓存 和 分布式锁 的底层支持,个人喜欢用 .NET 技术体系,所以一般部署也是用 ...

  4. Java源码阅读的真实体会(一种学习思路)

    Java源码阅读的真实体会(一种学习思路) 刚才在论坛不经意间,看到有关源码阅读的帖子.回想自己前几年,阅读源码那种兴奋和成就感(1),不禁又有一种激动. 源码阅读,我觉得最核心有三点:技术基础+强烈 ...

  5. Java源码阅读的真实体会(一种学习思路)【转】

    Java源码阅读的真实体会(一种学习思路)   刚才在论坛不经意间,看到有关源码阅读的帖子.回想自己前几年,阅读源码那种兴奋和成就感(1),不禁又有一种激动. 源码阅读,我觉得最核心有三点:技术基础+ ...

  6. 【源码分享】iOS-OC版五子棋

    五子棋是程序猿比较熟悉的一款小游戏,相信很多人大学时期就用多种语言写过五子棋小游戏,笔者工作闲暇之余,试着用OC实现了一下,在这里给大家分享一下.有不足之处,欢迎大家提供建议和指点! GitHub源码 ...

  7. .NET MVC插件化开发框架源码(插件功能完善版)

    离上次第一次上传源码一个多星期了,在工作之余今天终于把插件管理部门的功能全部完善了,已可用于实际开发,管理界面因为没人帮忙设计,所以有点丑,今天这版算是0.1.0.0吧,后面我会发布很多插件来填充这个 ...

  8. Underscore源码阅读极简版入门

    看了网上的一些资料,发现大家都写得太复杂,让新手难以入门.于是写了这个极简版的Underscore源码阅读. 源码: https://github.com/hanzichi/underscore-an ...

  9. Chromium源码--网络请求流程分析

    转载请注明出处:http://www.cnblogs.com/fangkm/p/3784660.html 本文探讨一下chromium中加载URL的流程,具体来说是从地址栏输入URL地址到通过URLR ...

随机推荐

  1. package.json中的script选项作用

    npm不仅可以用于模块管理,还可以用于执行脚本.package.json文件有一个scripts字段,可以用于指定脚本命令,供npm直接调用. 接下来做个简单测试: (1)在项目根目录下创建demo. ...

  2. Mysql 中使用 utfmb4 需要注意的问题

    查资料时看到一个前人的经验总结,非常有用: http://seanlook.com/2016/10/23/mysql-utf8mb4/

  3. android界面布局

    (一)LinearLayout界面编排模式 他的格式是按照线性顺序,由上往下或右左往右,逐一排列界面组件. layout_width:中的“match_parent”表示要填满他所在的外框,而“wra ...

  4. php学习之始于html——div布局与css控制

    关于您的问题:xampp是一个集成的php开发环境,里面包含Apache,mysql等环境,主要充当一个服务器的角色, 其中有文件,数据,路径等,一个网站程序安装之后,都会有一个根目录,根目录下,有其 ...

  5. Golang核心编程

    源码地址: https://github.com/mikeygithub/GoCode 第1章 1Golang 的学习方向 Go 语言,我们可以简单的写成 Golang 1.2Golang 的应用领域 ...

  6. 蓝牙/zigbee/nrr24xx

    目前使用的短距离无线通信技术及标准主要有Bluetooth.WIFI.ZigBee.UWB.NRF24XX系列产品等.Nordic公司生产的单片集成射频无线收发器NRF24XX系列芯片具有低功耗.支持 ...

  7. adblock广告过滤

    1.在 img的 src中 出现 ad连在一起的情况,会被adblock过滤掉. 例如 <img id="adasdd" class="ad_mina" ...

  8. 「JSOI2010」挖宝藏

    「JSOI2010」挖宝藏 传送门 由于题目中说道挖一个位置的前提是挖掉它上面的三个,以此类推可以发现,挖掉一个点就需要挖掉这个点往上的整个倒三角,那么也就会映射到 \(x\) 轴上的一段区间(可以发 ...

  9. WebService-CXF 学习笔记

    什么是CXF Apache CXF = Celtix + Xfire支持多种协议:SOAP1.1,1.2XML/HTTPCORBA(Common Object Request Broker Archi ...

  10. Linux 修改/etc/profile 出错 导致所有命令都 command not found 的解决办法

    执行命令 export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/usr/X11R6/bin 然后再修改/etc/profile 再执行文件: source /etc/p ...