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

//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



猜你喜欢

转载自blog.csdn.net/woniupengpeng/article/details/79792102