1. 程式人生 > >Qt編寫的複雜象棋程式 chessbroad.h main.cpp

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