中国象棋——C++编程设计
[日期:2025-03-03] | 作者:信息技术 次浏览 | [字体:大 中 小] |
中国象棋——C++编程设计
中国象棋是一款很多人都喜欢而且十分考验智力的游戏。今天我就尝试用C++来做一个双人对战版本的中国象棋游戏。但这款游戏利用C++开发真的是困难重重,为了解决这些问题我从书籍中、网络上查阅了很多的文章和资料参考进行开发。
具体的设计思路为:1.利用图像处理头文件graphics.h生成一个画布,也就是棋盘;2.通过定义类的方法画出不同的中国象棋棋子;3.添加棋子的移动组件;4.添加棋子移动的限制组件;5.判断输赢的条件。
首先,传统的C++的程序是一个黑窗口,且无法用鼠标进行操作,这与象棋是违背的,所以以传统的代码是行不通的,因此需要使用一个自行导入的头文件easyx.h,使用其中的
函数initgraphy(800,800,NOCLOSE);加载出一个自定义窗口,接着使用setbkcolor(WHITE)函数设置窗口颜色,再用cleardevice()函数显示颜色。如图所示:
接着需要将棋盘和棋子画出,画棋子和棋盘时要注意坐标轴,坐标轴错误便会导致一些不知名的特性,是游戏无法进行,在从事软件开发时这一点尤为重要,具体过程不在展示,运行结果如下:
画出棋子后,便需要添加移动组件,其中最重要的是判断鼠标的按下,需要用MSOUEMSG类创建一个对象m,并且需要给m复制,代码如下:
MOSUEMSG m;
m=GetMouseMsg();
并进行一个判断,当m.msg.uMsg==WM_LBUTTONDOWN时,开始对棋子进行操作具体内容较为复杂不便讲解。并且在象棋当中各个棋子的移动会受限,如:兵未过河,只能向前走,过河后左右也可走,但不能后退;马会被蹩脚等等,这些都是需要添加限制组件的,通过一个函数进行判断是否可以将棋子下那。
同时我还在棋盘右侧设置了一个方框,来提示该谁下棋。如下图:
而第五点,判断输赢是通过两个二维数组进行判断,将将和帅的坐标输入数组,帅为1,将为2,并不断地通过循环查找数组之中是否有1和2,当1不见或2不见是,便会弹出游戏结束的消息框,不过本次设计未实现两王相见,游戏结束的判断。
本软件还有更多细节值得发现,这儿便不一一介绍了。
这便是我本次的C++程序设计,耗时5天。
核心代码:
#include<iostream>
#include<graphics.h>
using namespace std;
class CKind {
public:
WCHAR ROOKS = *(_T("车"));
WCHAR KNIGHTS = *_T("马");
WCHAR ELEPHANTS = *_T("象");
WCHAR MINISTERS = *_T("相");
WCHAR MANDARINS = *_T("士");
WCHAR GUARDS = *_T("仕");
WCHAR KING = *_T("将");
WCHAR GENERALS = *_T("帅");
WCHAR CANNONS = *_T("炮");
WCHAR PAWNS = *_T("卒");
WCHAR SOLDIERS = *_T("兵");
WCHAR PLAYER_1 = *_T("BLACK");
WCHAR PLAYER_2 = *_T("RED");