面向过程:


创建一个类继承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. Swift学习笔记(3):基本运算符

    目录: 运算符 元组比较 空和运算符 区间运算符 运算符 +, -, *, /, %, =, +=, -=, *=, /= 算术运算符 >, <, ==, >=, <=, != ...

  2. Android 自定义的开关按钮——SwitchButton

    本文转自:http://blog.csdn.net/swust_chenpeng/article/details/19967501 我将原文的控件进行了一些修改,去掉了原来控件的外边框,只留下重要的遮 ...

  3. <Sicily>Funny Game

    一.题目描述 Two players, Singa and Suny, play, starting with two natural numbers. Singa, the first player ...

  4. UVa 12661 Funny Car Racing【 dijkstra 】

    题意:给出n个点,m条路,每条路用5个整数表示u,v,a,b,t u表示这条路的起点,v表示终点,a表示打开时间,b表示关闭时间,t表示通过这条道路需要的时间 看的紫书,因为边权不再仅仅是路上的时间, ...

  5. 用SAXReader解析xml文档【转】

    来源:http://blog.csdn.net/seayqrain/article/details/5024068 使用SAXReader需要导入dom4j-full.jar包. dom4j是一个Ja ...

  6. [HNOI2012]矿场搭建(割点)

    [HNOI2012]矿场搭建 题目描述 煤矿工地可以看成是由隧道连接挖煤点组成的无向图.为安全起见,希望在工地发生事故时所有挖煤点的工人都能有一条出路逃到救援出口处.于是矿主决定在某些挖煤点设立救援出 ...

  7. Java排序算法(二):简单选择排序

    [基本思想] 在要排序的一组数中.选出最小的一个数与第一个位置的数交换:然后在剩下的数中再找出最小的与第二个位置的数交换,如此循环至倒数第二个数和最后一个数比較为止. 算法关键:找到最小的那个数.并用 ...

  8. HDU 5373(2015多校7)-The shortest problem(模拟%11)

    题目地址:pid=5373">HDU 5373 题意:给你一个数n和操作次数t,每次操作将n的各位数之和求出来放在n的末尾形成新的n,问t次操作后得到的n能否够被11整除. 思路:就是 ...

  9. [Recompose] Refactor React Render Props to Streaming Props with RxJS and Recompose

    This lesson takes the concept of render props and migrates it over to streaming props by keeping the ...

  10. python学习之--SyntaxError: Non-ASCII character '\xe5'

    在安装好eclipse之后试了一下 创建了了一个pydev project package.module 在test.py中编写最简单的命令 print "helloworld" ...