zoukankan      html  css  js  c++  java
  • 79.QT解决迷宫问题(面向过程与面向对象)

    面向过程:


    创建一个类继承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 }
  • 相关阅读:
    oracle 查看运行中sql
    orcale 匿名代码块
    vsftpd 自动安装脚本
    js 第二篇 (DOM 操作)
    js 第一篇(常用交互方法)
    安装部署Solrcloud
    安装部署zookeeper集群
    zabbix-agent active 配置自动探测
    zabbix 3.2.4 安装
    python os模块 常用函数
  • 原文地址:https://www.cnblogs.com/xiaochi/p/8581075.html
Copyright © 2011-2022 走看看