中国象棋网络对战版(作者:孙中吕,C/S框架网原创)
中国象棋网络对战版(作者:孙中吕,C/S框架网原创)
中国象棋网络对战版(2011)
单机版源码由网友提供,花了几天时间将单机版改为网络版对战版,纠正原程序中一些错误,如马蹩脚算法。
本程序涉及到Tcp/IP,GDI图形等相关技术,完全面向对象编程(OOP)
可作为高校C#培训教材,优质学习资源!
程序分为3个模块:
1. ChineseChess.EXE.主程序EXE,如主窗体,连接玩家,系统设置等
2. ChineseChess.Library.DLL 中国象棋程序代码库, 业务逻辑.
3. ChineseChess.Res.DLL 图片资源库
通过分解单机版方便扩展以后的版本,目前[悔棋]功能尚未实现,留点思考空间给网友们自由发挥嘛,
改成网络版本是为了兑现网友"苹果"的承诺!
中国象棋网络对战版本介绍:
1.配置玩家名称.在debug目录下有个player.ini文件,用记事本打开输入名称即可。(不支持中文名称)
2.运行程序,在主窗体点开始按钮,此时启动Tcp/IP Listener(监控程序).
第一次运行程序会打开连接对家的窗口,你可以关闭连接窗体等待玩家连接你的电脑。
如远程电脑也点了开始菜单启动监控程序,那么远程电脑会接收到您请求玩游戏的消息。
3.通过分解单机版程序,将frmMain窗体内的业务逻辑封装在Game类及GameControlPanel类.
4.组装/调整部分代码,将类似业务的代码组合在一起。
5.图片资源完全分离。
中国象棋网络对战版

中国象棋网络对战版 - C#源码:
C# Code:
/// <summary>
/// 移动棋子到远程玩家发送来的棋子坐标
/// </summary>
public void MoveChessByRemote(ChessPoint fromPoint, ChessPoint toPoint)
{
Chess from = this[fromPoint];
from.MoveTo(toPoint);//移动棋子
_EnableMove = true;
this._currentGame.ShowHistory(from); //显示最后移动的棋子
//移动棋子完成,重画棋盘
this.DrawChessBoard();
//启动计时器
this.CurrentGame.ControlPanel.StartTimer(ChessColor.Red);
this.CurrentGame.ControlPanel.StopTimer(ChessColor.Black);
}
//来源:C/S框架网(www.csframework.com) QQ:1980854898
/// <summary>
/// 移动棋子到远程玩家发送来的棋子坐标
/// </summary>
public void MoveChessByRemote(ChessPoint fromPoint, ChessPoint toPoint)
{
Chess from = this[fromPoint];
from.MoveTo(toPoint);//移动棋子
_EnableMove = true;
this._currentGame.ShowHistory(from); //显示最后移动的棋子
//移动棋子完成,重画棋盘
this.DrawChessBoard();
//启动计时器
this.CurrentGame.ControlPanel.StartTimer(ChessColor.Red);
this.CurrentGame.ControlPanel.StopTimer(ChessColor.Black);
}
//来源:C/S框架网(www.csframework.com) QQ:1980854898
C# Code:
/// <summary>
/// 移动棋子
/// </summary>
public void MoveChess(ChessPoint point)
{
try
{
Chess chess = this[point];//获取鼠标点的棋子
//之前没有选中棋子
if (this.CurrentChess == null)
{
//当前棋子为空,又点了一个空白点
if (chess == null) return;
//当前棋子为空,点击了一个不属于自己颜色的棋子
if (chess.Color != ChessColor.Red) return;
this.CurrentChess = chess;//设置当前棋子
this.DrawChessBoard();
}
else
{
//之前选中了一个棋子,现在又点击了之前选中的棋子,退出
if (chess == this.CurrentChess) return;
//点中了自己的棋子,改变当前棋子到目标棋子
if (chess != null && chess.Color == this.CurrentChess.Color)
{
this.CurrentChess = chess;
}
else //点中对方的棋子或目标点为空,移动到目标点或吃掉对方的棋子
{
ChessPoint currPoint = this.CurrentChess.CurrentPoint;//保存变量
this.CurrentChess.MoveTo(point);//移动棋子
//如果移动失败
if (!this.CurrentChess.CurrentPoint.Equals(point)) return;
//移动成功,通知(对方)远程更新棋盘
this.CurrentGame.SendPointToRemote(currPoint, point);
_EnableMove = false; //禁用棋盘
this._currentGame.ShowHistory(this.CurrentChess); //显示最后移动的棋子
this.CurrentChess = null;
}
//移动棋子完成,重画棋盘
this.DrawChessBoard();
//停止计时器
this.CurrentGame.ControlPanel.StopTimer(ChessColor.Red);
this.CurrentGame.ControlPanel.StartTimer(ChessColor.Black);
}
}
catch (GameLoseException ex)
{
_currentGame.Victory();
_currentGame.Gameover();
Msg.ShowInformation(ex.Message);
}
}
//来源:C/S框架网(www.csframework.com) QQ:1980854898
/// <summary>
/// 移动棋子
/// </summary>
public void MoveChess(ChessPoint point)
{
try
{
Chess chess = this[point];//获取鼠标点的棋子
//之前没有选中棋子
if (this.CurrentChess == null)
{
//当前棋子为空,又点了一个空白点
if (chess == null) return;
//当前棋子为空,点击了一个不属于自己颜色的棋子
if (chess.Color != ChessColor.Red) return;
this.CurrentChess = chess;//设置当前棋子
this.DrawChessBoard();
}
else
{
//之前选中了一个棋子,现在又点击了之前选中的棋子,退出
if (chess == this.CurrentChess) return;
//点中了自己的棋子,改变当前棋子到目标棋子
if (chess != null && chess.Color == this.CurrentChess.Color)
{
this.CurrentChess = chess;
}
else //点中对方的棋子或目标点为空,移动到目标点或吃掉对方的棋子
{
ChessPoint currPoint = this.CurrentChess.CurrentPoint;//保存变量
this.CurrentChess.MoveTo(point);//移动棋子
//如果移动失败
if (!this.CurrentChess.CurrentPoint.Equals(point)) return;
//移动成功,通知(对方)远程更新棋盘
this.CurrentGame.SendPointToRemote(currPoint, point);
_EnableMove = false; //禁用棋盘
this._currentGame.ShowHistory(this.CurrentChess); //显示最后移动的棋子
this.CurrentChess = null;
}
//移动棋子完成,重画棋盘
this.DrawChessBoard();
//停止计时器
this.CurrentGame.ControlPanel.StopTimer(ChessColor.Red);
this.CurrentGame.ControlPanel.StartTimer(ChessColor.Black);
}
}
catch (GameLoseException ex)
{
_currentGame.Victory();
_currentGame.Gameover();
Msg.ShowInformation(ex.Message);
}
}
//来源:C/S框架网(www.csframework.com) QQ:1980854898

车马炮相士将对象定义:
Source Code for VIP:
参考文档:
开源ERP软件平台ERP系统快速开发框架 - C/S框架网原创作品
C/S架构的Winform 代码生成器软件|C/S框架网原创作品
NET开发框架,基于ADO.NET数据持久化快速开发框架平台-C/S框架网原创产品
C#.NET IP端口绑定SSL证书支持HTTPS协议(用于Win服务自承载WebApi服务器) - C/S框架网原创
C#框架推荐-C/S框架网原创快速开发平台系列产品
.Net后端框架|WebApi服务端开发框架|C/S框架网原创作品
C# CodeHighlighter生成的高亮着色HTML源码格式化
C# ASP.NET WebApi服务器搭建详解 - IIS服务承载(IIS Hosting IIS宿主)
C#开源框架 | .NET开源快速开发平台 | C/S框架网
SQL2008多个查询条件分页查询脚本(原创)
WebApi路由个性化设置实例参考
C#.NET MVC WebApi后台开发框架入门完整版下载
C#打开CHM文件并定位到指定的页面(原创)
使用DOC2CHM工具制作CHM帮助文件图解(原创)
C/S开发框架Toolbar按钮的动态生成与调用关系
C#.Net组件开发 - 使用Attach to Process实时调试设计器代码
开源ERP软件平台ERP系统快速开发框架 - C/S框架网原创作品
C/S架构的Winform 代码生成器软件|C/S框架网原创作品
NET开发框架,基于ADO.NET数据持久化快速开发框架平台-C/S框架网原创产品
C#.NET IP端口绑定SSL证书支持HTTPS协议(用于Win服务自承载WebApi服务器) - C/S框架网原创
C#框架推荐-C/S框架网原创快速开发平台系列产品
.Net后端框架|WebApi服务端开发框架|C/S框架网原创作品
C# CodeHighlighter生成的高亮着色HTML源码格式化
C# ASP.NET WebApi服务器搭建详解 - IIS服务承载(IIS Hosting IIS宿主)
C#开源框架 | .NET开源快速开发平台 | C/S框架网
SQL2008多个查询条件分页查询脚本(原创)
WebApi路由个性化设置实例参考
C#.NET MVC WebApi后台开发框架入门完整版下载
C#打开CHM文件并定位到指定的页面(原创)
使用DOC2CHM工具制作CHM帮助文件图解(原创)
C/S开发框架Toolbar按钮的动态生成与调用关系
C#.Net组件开发 - 使用Attach to Process实时调试设计器代码
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
在线客服
