Qt编写的复杂象棋程序 chessbroad.h main.cpp

本文介绍了一个使用Qt库实现的简单象棋游戏GUI程序。该程序定义了棋盘类ChessBroad,继承自QWidget,并实现了棋盘绘制和鼠标事件处理等功能。文章详细展示了棋子移动逻辑及游戏状态管理的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//main.cpp
#include <QtGui/QApplication>
#include "chessbroad.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    ChessBroad w;
    w.show();

    return a.exec();
}

//chessbroad.h

#ifndef CHESSBROAD_H
#define CHESSBROAD_H

#include <QtGui/QWidget>
#include <QPainter>
#include <QMouseEvent>
#include <QFileDialog>
#include <QFile>
#include <QTextStream>

#include <QMenu>
#include <QAction>

#define NUM 9
#define N 32
#define NUMX 8
#define NUMY 9

class chess
{
public:
    int name;
    chess * next;
    int tail;
    int red;//红棋的个数
    int blue;//蓝棋的个数
};

class mypos
{
public:
    int myi;
    int myj;
};

class hui
{
public:
    int huii;
    int huij;
};

class ChessBroad : public QWidget
{
    Q_OBJECT

public:
    ChessBroad(QWidget *parent = 0);
    ~ChessBroad();
protected:
    void paintEvent(QPaintEvent *);
    void mousePressEvent(QMouseEvent *event);

private slots:
    void init();
    void save();
    void load();
    void backchess();

private:
    void insert(chess* &,int);

    int g[NUMY+1][NUMX+1];//注意NUMY与NUMX位置不要颠倒
    chess* f[NUMY+1][NUMX+1];
    chess* d[NUMY+1][NUMX+1];//一个与f完全相反的结构
    int chi[NUMY+1][NUMX+1];
    int gui[NUMY+1][NUMX+1];
    int tao[NUMY+1][NUMX+1];//量身定做的逃跑路线
    int jilu[NUMY+1][NUMX+1];//为记录上一步的g[][]

    int key;

    int p[NUM+1][NUMY+1][NUMX+1];//记录下棋过程,悔棋用。
    int p_h;  //存储数组p的当前存储位置

    QMenu *menu;
    QAction *newAction;
    QAction *saveAction;
    QAction *loadAction;
    QAction *initAction;

    int x_1,y_1,x_2,y_2,ta;

    int v;

    int priority(int );

    mypos my[N+1];

    int la[N+1][N+1];//棋子之间的关系 他吃他

    void taopao( int , int );//我该怎么逃跑

    void chizi( int );//吃子

    void guize(int);//规则重要的是炮

    void pengpeng();

    void laole();

    int bushu;//记录下棋步数

    int l,r;//与三步不出车联系l代表左边的蓝车 r代表右边的蓝车

    hui* sbu[N+1];
};

#endif // CHESSBROAD_H


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值