面向过程:


创建一个类继承dialog,mydialog,添加两个变量

 #ifndef MYDIALOG_H
#define MYDIALOG_H #include <QDialog>> class mydialog : public QDialog
{
public:
mydialog();
int id;//代表白色可以走,1代表人物,红色,2代表障碍,黑色
int AI; public:
void setcolor();
}; #endif // MYDIALOG_H

main.cpp中初始化

 #include "dialog.h"
#include <QApplication>
#include "mydialog.h" //矩阵数组
mydialog *p[][];
int i=;
int j = ; int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Dialog w;
w.show();
w.move(,); //设置颜色(背景为红色)
QPalette colorit(w.palette());
colorit.setColor(QPalette::Background,Qt::red);
w.setPalette(colorit); //绘制窗口
for(int i=;i<;i++)
{
for(int j = ;j<;j++)
{
p[i][j] = new mydialog;
p[i][j]->resize(,);
p[i][j]->move(j*,i*);
p[i][j]->show();
p[i][j]->id = ;
p[i][j]->AI=;
QPalette colorit(p[i][j]->palette());
colorit.setColor(QPalette::Background,Qt::white);
p[i][j]->setPalette(colorit);
}
}
//设置当前位置
{
p[i][j]->id = ;
QPalette colorit(p[][]->palette());
colorit.setColor(QPalette::Background,Qt::red);
p[i][j]->setPalette(colorit);
}
//设置障碍
{
p[][]->id = ;
QPalette colorit(p[][]->palette());
colorit.setColor(QPalette::Background,Qt::black);
p[][]->setPalette(colorit);
}
{
p[][]->id = ;
QPalette colorit(p[][]->palette());
colorit.setColor(QPalette::Background,Qt::black);
p[][]->setPalette(colorit);
} return a.exec();
}

dialog.cpp中实现按钮的操作

 #include "dialog.h"
#include "ui_dialog.h"
#include "mydialog.h" //引用外部变量
extern int i;
extern int j;
extern mydialog *p[][]; Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
} Dialog::~Dialog()
{
delete ui;
} void Dialog::on_pushButton_clicked()
{
//up
if(i->= && p[i-][j]->id<)
{
QPalette colorit(p[i][j]->palette());
colorit.setColor(QPalette::Background,Qt::white);
p[i][j]->setPalette(colorit);
p[i][j]->id = ;
i-=;
{
QPalette colorit(p[i][j]->palette());
colorit.setColor(QPalette::Background,Qt::red);
p[i][j]->setPalette(colorit);
p[i][j]->id = ;
}
}
} void Dialog::on_pushButton_4_clicked()
{
//down
if(i+< && p[i+][j]->id<)
{
QPalette colorit(p[i][j]->palette());
colorit.setColor(QPalette::Background,Qt::white);
p[i][j]->setPalette(colorit);
p[i][j]->id = ;
i+=;
{
QPalette colorit(p[i][j]->palette());
colorit.setColor(QPalette::Background,Qt::red);
p[i][j]->setPalette(colorit);
p[i][j]->id = ;
}
}
} void Dialog::on_pushButton_2_clicked()
{
//left
if(j->= && p[i][j-]->id<)
{
QPalette colorit(p[i][j]->palette());
colorit.setColor(QPalette::Background,Qt::white);
p[i][j]->setPalette(colorit);
p[i][j]->id = ;
j-=;
{
QPalette colorit(p[i][j]->palette());
colorit.setColor(QPalette::Background,Qt::red);
p[i][j]->setPalette(colorit);
p[i][j]->id = ;
}
}
} void Dialog::on_pushButton_3_clicked()
{
//right
if(j+< && p[i][j+]->id<)
{
QPalette colorit(p[i][j]->palette());
colorit.setColor(QPalette::Background,Qt::white);
p[i][j]->setPalette(colorit);
p[i][j]->id = ;
j+=;
{
QPalette colorit(p[i][j]->palette());
colorit.setColor(QPalette::Background,Qt::red);
p[i][j]->setPalette(colorit);
p[i][j]->id = ;
}
}
}

面向对象:

  • mg.h

     #ifndef MG_H
    #define MG_H
    #include "mydialog.h" class mg
    {
    private:
    //位置
    int i;
    int j;
    //宽度,深度
    int width;
    int depth;
    mydialog ***ppp;
    public:
    mg(int w,int d);
    ~mg();
    void up();
    void down();
    void left();
    void right();
    void setnotrun(int x,int y); }; #endif // MG_H
  • mg.cpp
     #include "mg.h"
    
     mg::mg(int w,int d)
    {
    //设置长度和宽度
    this->width = w;
    this->depth = d;
    this->ppp = new mydialog **[this->depth];//开辟二级指针数组
    for(int i=;i<this->depth;i++)
    {
    this->ppp[i] = new mydialog *[this->width];
    //j代表的是每一行的第几个
    for(int j=;j<this->width;j++)
    {
    this->ppp[i][j] = new mydialog;
    this->ppp[i][j]->resize(,);
    // 前面乘的是列 后面乘的是行
    this->ppp[i][j]->move(i*,j*);
    this->ppp[i][j]->show(); QPalette colorit(this->ppp[i][j]->palette());
    colorit.setColor(QPalette::Background,Qt::white);
    this->ppp[i][j]->setPalette(colorit);
    this->ppp[i][j]->id = ;
    }
    } //初始化初始位置
    QPalette colorit(this->ppp[][]->palette());
    colorit.setColor(QPalette::Background,Qt::red);
    this->ppp[][]->setPalette(colorit);
    this->ppp[][]->id = ;
    //标识位置
    this->i = ;
    this->j = ;
    } mg::~mg()
    {
    for(int i=;i<this->depth;i++)
    {
    for(int j=;j<this->width;j++)
    {
    delete this->ppp[i][j];
    }
    delete [] this->ppp[i];
    }
    delete[] this->ppp;
    } void mg::up()
    {
    if(j->= && ppp[i][j-]->id<)
    {
    QPalette colorit(ppp[i][j]->palette());
    colorit.setColor(QPalette::Background,Qt::white);
    ppp[i][j]->setPalette(colorit);
    ppp[i][j]->id = ;
    j-=;
    {
    QPalette colorit(ppp[i][j]->palette());
    colorit.setColor(QPalette::Background,Qt::red);
    ppp[i][j]->setPalette(colorit);
    ppp[i][j]->id = ;
    }
    } } void mg::down()
    {
    if(j+<this->width && ppp[i][j+]->id<)
    {
    QPalette colorit(ppp[i][j]->palette());
    colorit.setColor(QPalette::Background,Qt::white);
    ppp[i][j]->setPalette(colorit);
    ppp[i][j]->id = ;
    j+=;
    {
    QPalette colorit(ppp[i][j]->palette());
    colorit.setColor(QPalette::Background,Qt::red);
    ppp[i][j]->setPalette(colorit);
    ppp[i][j]->id = ;
    }
    }
    } void mg::left()
    {
    if(i->= && ppp[i-][j]->id<)
    {
    QPalette colorit(ppp[i][j]->palette());
    colorit.setColor(QPalette::Background,Qt::white);
    ppp[i][j]->setPalette(colorit);
    ppp[i][j]->id = ;
    i-=;
    {
    QPalette colorit(ppp[i][j]->palette());
    colorit.setColor(QPalette::Background,Qt::red);
    ppp[i][j]->setPalette(colorit);
    ppp[i][j]->id = ;
    }
    }
    } void mg::right()
    { if(i+<this->depth && ppp[i+][j]->id<)
    {
    QPalette colorit(ppp[i][j]->palette());
    colorit.setColor(QPalette::Background,Qt::white);
    ppp[i][j]->setPalette(colorit);
    ppp[i][j]->id = ;
    i+=;
    {
    QPalette colorit(ppp[i][j]->palette());
    colorit.setColor(QPalette::Background,Qt::red);
    ppp[i][j]->setPalette(colorit);
    ppp[i][j]->id = ;
    }
    }
    } //设置障碍
    void mg::setnotrun(int x, int y)
    {
    if((x>= && x<this->width) && (y>= && y<this->depth))
    {
    QPalette colorit(ppp[x][y]->palette());
    colorit.setColor(QPalette::Background,Qt::black);
    ppp[y][x]->setPalette(colorit);
    ppp[y][x]->id = ;
    }
    }
  • mydialog.h
     #ifndef MYDIALOG_H
    #define MYDIALOG_H #include <QDialog>> class mydialog : public QDialog
    {
    public:
    mydialog();
    int id;//代表白色可以走,1代表人物,红色,2代表障碍,黑色
    int AI; public:
    void setcolor();
    }; #endif // MYDIALOG_H
  • mydialog.cpp
     #include "mydialog.h"
    
     mydialog::mydialog()
    { }
  • dialog.h
     #ifndef DIALOG_H
    #define DIALOG_H #include <QDialog>
    #include"mg.h" namespace Ui {
    class Dialog;
    } class Dialog : public QDialog
    {
    Q_OBJECT public:
    explicit Dialog(QWidget *parent = );
    ~Dialog(); private slots:
    void on_pushButton_clicked(); void on_pushButton_4_clicked(); void on_pushButton_2_clicked(); void on_pushButton_3_clicked(); private:
    Ui::Dialog *ui;
    mg *pm;
    }; #endif // DIALOG_H
  • dialog.cpp
     #include "dialog.h"
    #include "ui_dialog.h"
    #include "mydialog.h"
    #include "mg.h" //引用外部变量
    extern mg *m; Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
    {
    pm = new mg(,);
    pm->setnotrun(,);
    pm->setnotrun(,);
    ui->setupUi(this);
    } Dialog::~Dialog()
    {
    delete ui;
    } void Dialog::on_pushButton_clicked()
    {
    //up
    //m->up();
    pm->up();
    } void Dialog::on_pushButton_4_clicked()
    {
    //down
    //m->down();
    pm->down();
    } void Dialog::on_pushButton_2_clicked()
    {
    //left
    // m->left();
    pm->left();
    } void Dialog::on_pushButton_3_clicked()
    {
    //right
    // m->right();
    pm->right();
    }
  • main.cpp
     #include "dialog.h"
    #include <QApplication>
    #include "mydialog.h"
    #include "mg.h" mg *m; int main(int argc, char *argv[])
    {
    QApplication a(argc, argv);
    Dialog w;
    w.show();
    w.move(,); //设置颜色(背景为红色)
    QPalette colorit(w.palette());
    colorit.setColor(QPalette::Background,Qt::red);
    w.setPalette(colorit); //矩阵数组
    //mg *m = new mg(6,8); return a.exec();
    }

79.QT解决迷宫问题(面向过程与面向对象)的更多相关文章

  1. 面向过程 vs 面向对象

    从网上摘录了一些面向过程vs.面向对象的分析,先简单记录如下,稍后会继续整理. 为什么会出现面向对象分析方法? 因为现实世界太复杂多变,面向过程的分析方法无法实现. 面向过程 采用面向过程必须了解整个 ...

  2. python 面向过程和面向对象比较

    面向过程 VS 面向对象 面向过程的程序设计:核心是过程二字,过程指的是解决问题的步骤,即先干什么再干什么......面向过程的设计就好比精心设计好一条流水线,是一种机械式的思维方式. 优点是:复杂度 ...

  3. python基础(23):面向过程与面向对象的优劣、初识面向对象

    1. 面向过程与面向对象的优劣 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优点是:极大的降低了写程 ...

  4. C语言学习系列(二)面向过程和面向对象

    一.基本定义 (一).面向过程(procedure oriented programming POP) 面向过程是分析解决问题的步骤,然后用函数把这些步骤一步一步的实现,然后在使用的时候一一调用则可. ...

  5. JS是面向过程、面向对象还是基于对象?面向对象的代码体现

    一.问题 javascript是面向对象的,还是面向过程的?基于对象是什么意思? 对象: 指的是对某一类事物进行抽象,抽象出这一类事物共同的特征以及行为(也就是属性和方法),那些拥有这一共同属性和方法 ...

  6. C++笔记005:用面向过程和面向对象方法求解圆形面积

    原创笔记,转载请注明出处! 点击[关注],关注也是一种美德~ 结束了第一个hello world程序后,我们来用面向过程和面向对象两个方法来求解圆的面积这个问题,以能够更清晰的体会面向对象和面向过程. ...

  7. PHP面向过程和面向对象

    php程序编写分为面向过程和面向对象.两者在功能实现上没有区别,但是在代码编写上区别很大,面向过程的代码很乱,不易管理,而面向对象把常用的功能封装为一个类,这样代码清楚多了. 下面举个小例子说明一下: ...

  8. essential C++中关于面向过程和面向对象的说明

    昨天在阅读essential C++中看到了一个关于面向过程和面向对象的区别的例子,感觉挺好的.记录下来.... 这个例子是关于照相机的.照相机有三个性质,一个是控制位置:通常使用3个浮点数据来表示其 ...

  9. PHP mysqli扩展整理,包括面向过程和面向对象的比较\事务控制\批量执行\预处理

    相关文章:PHP的mysql扩展整理,操作数据库的实现过程分析  PHP PDO扩展整理,包括环境配置\基本增删改查\事务\预处理 介绍 mysqli是PHP程序与mysql数据库进行数据交互的桥梁, ...

随机推荐

  1. JDK5新特性:可变参数方法

    JDK1.5增加可变参方法,其定义格式为: 访问修饰符 返回值类型 方法标识符(参数类型 参数标识符1,参数类型 参数标识符2,参数类型...参数标识符){} 如可能要定义一个求和功能的方法,但求和的 ...

  2. Vuejs componet

    Vuejs  componet <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "ht ...

  3. twig 模板引擎使渲染视图更加优雅

    在使用 laravel 的时候接触过 blade 模板引擎.在学习的时候,接触到了另外一个强大的模板引擎:twig 官网:https://twig.sensiolabs.org/ 中文手册:http: ...

  4. 关于PHPExcel上传Excel单元格富文本和时间类型读取数据问题

    当用PHPExcel做Excel上传文件读取数据时,print_r出来的数据,竟然发现其中有几个单元格返回的是PHPExcel富文本对象,而且时间类型的单元格返回的是一个不是时间戳的五位数.就像下图那 ...

  5. [Bug]Python3.x AttributeError: libtest.so: undefined symbol: fact

    写kNN,需要在python中实现kd-tree 思考了一下,在python下写这种算法类的东西,还是十分别扭 于是希望用ctypes调用一下c++动态加载库 于是尝试实现一下 // test.cpp ...

  6. AWK的介绍学习

    第一节.awk的工作流程和基本用法 1.awk介绍 awk是一种报表生成器,就是对文件进行格式化处理的,这里的格式化不是文件系统的格式化,而是对文件内容进行各种"排版",进而格式化 ...

  7. linux命令find命令详解

    find 查找文件 find 哪里 什么类型 什么名字 -maxdepth 最大的深度 查找目录的最大深度    find -maxdepth 1 -type d -type 找什么类型的 f fil ...

  8. dstat---统计磁盘,CPU,IO,等相关信息

    dstat命令是一个用来替换vmstat.iostat.netstat.nfsstat和ifstat这些命令的工具,是一个全能系统信息统计工具.与sysstat相比,dstat拥有一个彩色的界面,在手 ...

  9. Object-C,四则运算计算器

    下面是是一个比较复杂的类. 定义一个四则运算计算器Caculator的接口和实现. 在main函数中,让用户输入四则运算表达式,比如a+b,a-b. 最后,在控制台输出结果. 用到的语法:接口.类的定 ...

  10. HDU 4862 Jump 费用流

    又是一个看了题解以后还坑了一天的题…… 结果最后发现是抄代码的时候少写了一个负号. 题意: 有一个n*m的网格,其中每个格子上都有0~9的数字.现在你可以玩K次游戏. 一次游戏是这样定义的: 你可以选 ...