面向过程:
创建一个类继承dialog,mydialog,添加两个变量
1 #ifndef MYDIALOG_H 2 #define MYDIALOG_H 3 4 #include <QDialog>> 5 6 class mydialog : public QDialog 7 { 8 public: 9 mydialog(); 10 int id;//代表白色可以走,1代表人物,红色,2代表障碍,黑色 11 int AI; 12 13 public: 14 void setcolor(); 15 }; 16 17 #endif // MYDIALOG_H
main.cpp中初始化
1 #include "dialog.h" 2 #include <QApplication> 3 #include "mydialog.h" 4 5 //矩阵数组 6 mydialog *p[6][8]; 7 int i=1; 8 int j = 1; 9 10 int main(int argc, char *argv[]) 11 { 12 QApplication a(argc, argv); 13 Dialog w; 14 w.show(); 15 w.move(1000,300); 16 17 //设置颜色(背景为红色) 18 QPalette colorit(w.palette()); 19 colorit.setColor(QPalette::Background,Qt::red); 20 w.setPalette(colorit); 21 22 //绘制窗口 23 for(int i=0;i<6;i++) 24 { 25 for(int j = 0;j<8;j++) 26 { 27 p[i][j] = new mydialog; 28 p[i][j]->resize(80,80); 29 p[i][j]->move(j*100,i*100); 30 p[i][j]->show(); 31 p[i][j]->id = 0; 32 p[i][j]->AI=0; 33 QPalette colorit(p[i][j]->palette()); 34 colorit.setColor(QPalette::Background,Qt::white); 35 p[i][j]->setPalette(colorit); 36 } 37 } 38 //设置当前位置 39 { 40 p[i][j]->id = 1; 41 QPalette colorit(p[0][0]->palette()); 42 colorit.setColor(QPalette::Background,Qt::red); 43 p[i][j]->setPalette(colorit); 44 } 45 //设置障碍 46 { 47 p[4][5]->id = 2; 48 QPalette colorit(p[4][5]->palette()); 49 colorit.setColor(QPalette::Background,Qt::black); 50 p[4][5]->setPalette(colorit); 51 } 52 { 53 p[5][6]->id = 2; 54 QPalette colorit(p[4][5]->palette()); 55 colorit.setColor(QPalette::Background,Qt::black); 56 p[5][6]->setPalette(colorit); 57 } 58 59 return a.exec(); 60 }
dialog.cpp中实现按钮的操作
1 #include "dialog.h" 2 #include "ui_dialog.h" 3 #include "mydialog.h" 4 5 //引用外部变量 6 extern int i; 7 extern int j; 8 extern mydialog *p[6][8]; 9 10 Dialog::Dialog(QWidget *parent) : 11 QDialog(parent), 12 ui(new Ui::Dialog) 13 { 14 ui->setupUi(this); 15 } 16 17 Dialog::~Dialog() 18 { 19 delete ui; 20 } 21 22 void Dialog::on_pushButton_clicked() 23 { 24 //up 25 if(i-1>=0 && p[i-1][j]->id<1) 26 { 27 QPalette colorit(p[i][j]->palette()); 28 colorit.setColor(QPalette::Background,Qt::white); 29 p[i][j]->setPalette(colorit); 30 p[i][j]->id = 0; 31 i-=1; 32 { 33 QPalette colorit(p[i][j]->palette()); 34 colorit.setColor(QPalette::Background,Qt::red); 35 p[i][j]->setPalette(colorit); 36 p[i][j]->id = 1; 37 } 38 } 39 } 40 41 void Dialog::on_pushButton_4_clicked() 42 { 43 //down 44 if(i+1<6 && p[i+1][j]->id<1) 45 { 46 QPalette colorit(p[i][j]->palette()); 47 colorit.setColor(QPalette::Background,Qt::white); 48 p[i][j]->setPalette(colorit); 49 p[i][j]->id = 0; 50 i+=1; 51 { 52 QPalette colorit(p[i][j]->palette()); 53 colorit.setColor(QPalette::Background,Qt::red); 54 p[i][j]->setPalette(colorit); 55 p[i][j]->id = 1; 56 } 57 } 58 } 59 60 void Dialog::on_pushButton_2_clicked() 61 { 62 //left 63 if(j-1>=0 && p[i][j-1]->id<1) 64 { 65 QPalette colorit(p[i][j]->palette()); 66 colorit.setColor(QPalette::Background,Qt::white); 67 p[i][j]->setPalette(colorit); 68 p[i][j]->id = 0; 69 j-=1; 70 { 71 QPalette colorit(p[i][j]->palette()); 72 colorit.setColor(QPalette::Background,Qt::red); 73 p[i][j]->setPalette(colorit); 74 p[i][j]->id = 1; 75 } 76 } 77 } 78 79 void Dialog::on_pushButton_3_clicked() 80 { 81 //right 82 if(j+1<8 && p[i][j+1]->id<1) 83 { 84 QPalette colorit(p[i][j]->palette()); 85 colorit.setColor(QPalette::Background,Qt::white); 86 p[i][j]->setPalette(colorit); 87 p[i][j]->id = 0; 88 j+=1; 89 { 90 QPalette colorit(p[i][j]->palette()); 91 colorit.setColor(QPalette::Background,Qt::red); 92 p[i][j]->setPalette(colorit); 93 p[i][j]->id = 1; 94 } 95 } 96 }
面向对象:
- mg.h
1 #ifndef MG_H 2 #define MG_H 3 #include "mydialog.h" 4 5 class mg 6 { 7 private: 8 //位置 9 int i; 10 int j; 11 //宽度,深度 12 int width; 13 int depth; 14 mydialog ***ppp; 15 public: 16 mg(int w,int d); 17 ~mg(); 18 void up(); 19 void down(); 20 void left(); 21 void right(); 22 void setnotrun(int x,int y); 23 24 }; 25 26 #endif // MG_H
- mg.cpp
1 #include "mg.h" 2 3 mg::mg(int w,int d) 4 { 5 //设置长度和宽度 6 this->width = w; 7 this->depth = d; 8 this->ppp = new mydialog **[this->depth];//开辟二级指针数组 9 for(int i=0;i<this->depth;i++) 10 { 11 this->ppp[i] = new mydialog *[this->width]; 12 //j代表的是每一行的第几个 13 for(int j=0;j<this->width;j++) 14 { 15 this->ppp[i][j] = new mydialog; 16 this->ppp[i][j]->resize(80,80); 17 // 前面乘的是列 后面乘的是行 18 this->ppp[i][j]->move(i*100,j*100); 19 this->ppp[i][j]->show(); 20 21 QPalette colorit(this->ppp[i][j]->palette()); 22 colorit.setColor(QPalette::Background,Qt::white); 23 this->ppp[i][j]->setPalette(colorit); 24 this->ppp[i][j]->id = 0; 25 } 26 } 27 28 //初始化初始位置 29 QPalette colorit(this->ppp[1][1]->palette()); 30 colorit.setColor(QPalette::Background,Qt::red); 31 this->ppp[1][1]->setPalette(colorit); 32 this->ppp[1][1]->id = 1; 33 //标识位置 34 this->i = 1; 35 this->j = 1; 36 } 37 38 mg::~mg() 39 { 40 for(int i=0;i<this->depth;i++) 41 { 42 for(int j=0;j<this->width;j++) 43 { 44 delete this->ppp[i][j]; 45 } 46 delete [] this->ppp[i]; 47 } 48 delete[] this->ppp; 49 } 50 51 void mg::up() 52 { 53 if(j-1>=0 && ppp[i][j-1]->id<1) 54 { 55 QPalette colorit(ppp[i][j]->palette()); 56 colorit.setColor(QPalette::Background,Qt::white); 57 ppp[i][j]->setPalette(colorit); 58 ppp[i][j]->id = 0; 59 j-=1; 60 { 61 QPalette colorit(ppp[i][j]->palette()); 62 colorit.setColor(QPalette::Background,Qt::red); 63 ppp[i][j]->setPalette(colorit); 64 ppp[i][j]->id = 1; 65 } 66 } 67 68 } 69 70 void mg::down() 71 { 72 if(j+1<this->width && ppp[i][j+1]->id<1) 73 { 74 QPalette colorit(ppp[i][j]->palette()); 75 colorit.setColor(QPalette::Background,Qt::white); 76 ppp[i][j]->setPalette(colorit); 77 ppp[i][j]->id = 0; 78 j+=1; 79 { 80 QPalette colorit(ppp[i][j]->palette()); 81 colorit.setColor(QPalette::Background,Qt::red); 82 ppp[i][j]->setPalette(colorit); 83 ppp[i][j]->id = 1; 84 } 85 } 86 } 87 88 void mg::left() 89 { 90 if(i-1>=0 && ppp[i-1][j]->id<1) 91 { 92 QPalette colorit(ppp[i][j]->palette()); 93 colorit.setColor(QPalette::Background,Qt::white); 94 ppp[i][j]->setPalette(colorit); 95 ppp[i][j]->id = 0; 96 i-=1; 97 { 98 QPalette colorit(ppp[i][j]->palette()); 99 colorit.setColor(QPalette::Background,Qt::red); 100 ppp[i][j]->setPalette(colorit); 101 ppp[i][j]->id = 1; 102 } 103 } 104 } 105 106 void mg::right() 107 { 108 109 if(i+1<this->depth && ppp[i+1][j]->id<1) 110 { 111 QPalette colorit(ppp[i][j]->palette()); 112 colorit.setColor(QPalette::Background,Qt::white); 113 ppp[i][j]->setPalette(colorit); 114 ppp[i][j]->id = 0; 115 i+=1; 116 { 117 QPalette colorit(ppp[i][j]->palette()); 118 colorit.setColor(QPalette::Background,Qt::red); 119 ppp[i][j]->setPalette(colorit); 120 ppp[i][j]->id = 1; 121 } 122 } 123 } 124 125 //设置障碍 126 void mg::setnotrun(int x, int y) 127 { 128 if((x>=0 && x<this->width) && (y>=0 && y<this->depth)) 129 { 130 QPalette colorit(ppp[x][y]->palette()); 131 colorit.setColor(QPalette::Background,Qt::black); 132 ppp[y][x]->setPalette(colorit); 133 ppp[y][x]->id = 2; 134 } 135 }
- mydialog.h
1 #ifndef MYDIALOG_H 2 #define MYDIALOG_H 3 4 #include <QDialog>> 5 6 class mydialog : public QDialog 7 { 8 public: 9 mydialog(); 10 int id;//代表白色可以走,1代表人物,红色,2代表障碍,黑色 11 int AI; 12 13 public: 14 void setcolor(); 15 }; 16 17 #endif // MYDIALOG_H
- mydialog.cpp
1 #include "mydialog.h" 2 3 mydialog::mydialog() 4 { 5 6 }
- dialog.h
1 #ifndef DIALOG_H 2 #define DIALOG_H 3 4 #include <QDialog> 5 #include"mg.h" 6 7 namespace Ui { 8 class Dialog; 9 } 10 11 class Dialog : public QDialog 12 { 13 Q_OBJECT 14 15 public: 16 explicit Dialog(QWidget *parent = 0); 17 ~Dialog(); 18 19 private slots: 20 void on_pushButton_clicked(); 21 22 void on_pushButton_4_clicked(); 23 24 void on_pushButton_2_clicked(); 25 26 void on_pushButton_3_clicked(); 27 28 private: 29 Ui::Dialog *ui; 30 mg *pm; 31 }; 32 33 #endif // DIALOG_H
- dialog.cpp
1 #include "dialog.h" 2 #include "ui_dialog.h" 3 #include "mydialog.h" 4 #include "mg.h" 5 6 //引用外部变量 7 extern mg *m; 8 9 10 Dialog::Dialog(QWidget *parent) : 11 QDialog(parent), 12 ui(new Ui::Dialog) 13 { 14 pm = new mg(6,8); 15 pm->setnotrun(3,4); 16 pm->setnotrun(4,3); 17 ui->setupUi(this); 18 } 19 20 Dialog::~Dialog() 21 { 22 delete ui; 23 } 24 25 void Dialog::on_pushButton_clicked() 26 { 27 //up 28 //m->up(); 29 pm->up(); 30 } 31 32 void Dialog::on_pushButton_4_clicked() 33 { 34 //down 35 //m->down(); 36 pm->down(); 37 } 38 39 void Dialog::on_pushButton_2_clicked() 40 { 41 //left 42 // m->left(); 43 pm->left(); 44 } 45 46 void Dialog::on_pushButton_3_clicked() 47 { 48 //right 49 // m->right(); 50 pm->right(); 51 }
- main.cpp
1 #include "dialog.h" 2 #include <QApplication> 3 #include "mydialog.h" 4 #include "mg.h" 5 6 mg *m; 7 8 int main(int argc, char *argv[]) 9 { 10 QApplication a(argc, argv); 11 Dialog w; 12 w.show(); 13 w.move(1000,300); 14 15 //设置颜色(背景为红色) 16 QPalette colorit(w.palette()); 17 colorit.setColor(QPalette::Background,Qt::red); 18 w.setPalette(colorit); 19 20 //矩阵数组 21 //mg *m = new mg(6,8); 22 23 return a.exec(); 24 }