e7c2f2eeaa5db48ca7aeb31f1f9a90cd.gif


本文简介

推荐一款使用C# WPF开发的、功能完善的中国象棋软件!这款软件的界面精美、操作流畅,更重要的是,它的全部源代码都是公开的。这是一份非常适合二次开发和学习的优质资源!

作者源于对象棋的热爱,如同程序员对代码的痴迷,深入骨髓。于是,倾尽心血,研发出一款融合了这两种激情的象棋软件。这款软件不仅继承了国内知名象棋软件的优秀设计理念,更以其人性化的操作界面,赢得了众多棋友的喜爱。

f40c67d26e9b467639928f8b3707d17c.png

主要功能

  • • 人机对战,测试自己的象棋水平。

  • • 电脑对战,观看电脑控制红黑双方棋子如何攻杀。

  • • 自由打谱,练习各种变化,添加着法注释,并能够全部保存。

  • • 具有复盘功能,所有保存的棋谱及其着法变化,都可以随时打开进行温习。

  • • 残局破解,测试残局能力。系统自带30个残局,有视频破解教程。

  • • 残局设计,可不断收集、扩展残局库。

已具备的其他功能

fdb9b0678c30fb2fb4b4f1f744534eab.png

正在开发的功能,以及开发目标

1464993b59f3d98b74554c54485595fb.png

软件架构

编程环境

Visual Studio 2019/2022

C#,NET5.0/6.0,WPF,SQLite3.0

随着功能扩展,代码量快速增长,模块间耦合度过高问题越来越严重。下一步打算使用Prism框架对代码进行重构,重构为MVVM模式,以降低模块间的耦合度,增强可扩展性。

绝杀算法流程图

b9ae53cd695741217e7e269d65f6d968.png

安装教程

使用源码时,在Visual Studio中通过NuGet安装如下包:

Newtonsoft.Json

System.Data.SQLite

如果系统根据依赖关系自动安装了相应包,则不需要手动安装。

使用说明

全部源码,开箱即用。

代码中含有大量注释,能够快速理解程序流程。

提供预览版可执行文件,下载解压即可使用,无需安装。

代码示例

for (int i = 0; i < 9; i++)
    for (int j = 0; j < 10; j++)
    {
        int qizi = GlobalValue.qiPan[i, j]; // 从棋盘上找到存活的本方棋子
        if (gongJiQiZi > 15 && qizi > 0 && qizi <= 15) // 黑方被将军时
        {
            thispoints = MoveCheck.GetPathPoints(qizi, GlobalValue.qiPan); // 获得本方棋子的可移动路径
            foreach (int[] point in jieShaPoints) // 逐个取出可解除将军的点位坐标
            {
                if (thispoints[point[0], point[1]] == true) // 本方棋子的可移动路径是否包含解除攻击点
                {
                    if (!MoveCheck.AfterMoveWillJiangJun(qizi, point[0], point[1], GlobalValue.qiPan))
                        return true;  // true=能够解杀
                }
            }
        }
        if (gongJiQiZi <= 15 && qizi > 16 && qizi <= 31) // 红方被将军时
        {
            thispoints = MoveCheck.GetPathPoints(qizi, GlobalValue.qiPan); // 获得本方棋子的可移动路径
            foreach (int[] point in jieShaPoints) // 逐个取出可解除将军的点位坐标
            {
                if (thispoints[point[0], point[1]] == true) // 本方棋子的可移动路径是否包含解除攻击点
                {
                    if (!MoveCheck.AfterMoveWillJiangJun(qizi, point[0], point[1], GlobalValue.qiPan))
                        return true;  // true=能够解杀
                }
            }
        }
    }

界面概览

e5ef0066d35e43d3f6cf8803aca39d84.png

954d936b152ad246ee765cc71d0157b5.png

e464cc38f6f7b2c7899950f3ecfcb11d.png

435ced13a680cc721298c011981c6db2.png

本文结尾

在这款软件的界面上,你可以看到每一步棋的详细走法,以及对手的思考过程,让你在享受博弈乐趣的同时,也能学习到大师级的棋艺。而流畅的操作体验,更是让你在激烈的对弈中,能够随心所欲地施展你的策略。

更重要的是,作者无私地将全部源码公开,让每一位对编程和中国象棋有兴趣的朋友,都能从中得到启发和灵感。这不仅是一份功能完善的象棋软件,更是一份可用于二次开发和学习的C# WPF的好机会。无论你是编程新手,还是资深程序员,都能从中受益匪浅。如果对你有帮助,欢迎大家分享给更多的小伙伴,让更多的人受益!

源码地址

https://gitee.com/cygsd/Chess


推荐阅读
  1. 1. 工控行业福音:C#开发的桌面神器,助力调试更高效

  2. 2. 一个基于.net6开发的复杂报表工具

  3. 3. 一个用于.NET的高性能MQTT类库

  4. 4. 高性能异步事件驱动的网络应用程序框架

  5. 5. 使用C#开发的两款物联网明星项目

  6. 6. 使用C#编写的Modbus TCP/RTU主从通信开源工具

  7. 7. 一套开源的WPF控件库新宠,引领界面设计新潮流

  8. 8. 一个使用C#开源的工业物联网边缘计算桌面神器!1.5kstar关注

  9. 9. 中小型企业福音:一款开源的全平台C-S开发框架


欢迎扫描下方二维码加我的微信,获取更多技术解决方案并入群交流

7ebd64357f5031dbfc00576023cbba2b.jpeg

版权声明:本文来源于网络素材收集整理或网友供稿,版权归版权所有者所有,如有侵权请联系小编予以删除

3cec11da23ff64a60926a4278616c572.gif

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐