Qt編寫的複雜象棋程式 chessbroad.h main.cpp
阿新 • • 發佈:2018-11-04
//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