79.QT解决迷宫问题(面向过程与面向对象)
面向过程:
创建一个类继承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
- #ifndef 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
- #ifndef 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
- #ifndef 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();
- }
- #include "dialog.h"
- 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();
- }
- #include "dialog.h"
79.QT解决迷宫问题(面向过程与面向对象)的更多相关文章
- 面向过程 vs 面向对象
从网上摘录了一些面向过程vs.面向对象的分析,先简单记录如下,稍后会继续整理. 为什么会出现面向对象分析方法? 因为现实世界太复杂多变,面向过程的分析方法无法实现. 面向过程 采用面向过程必须了解整个 ...
- python 面向过程和面向对象比较
面向过程 VS 面向对象 面向过程的程序设计:核心是过程二字,过程指的是解决问题的步骤,即先干什么再干什么......面向过程的设计就好比精心设计好一条流水线,是一种机械式的思维方式. 优点是:复杂度 ...
- python基础(23):面向过程与面向对象的优劣、初识面向对象
1. 面向过程与面向对象的优劣 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优点是:极大的降低了写程 ...
- C语言学习系列(二)面向过程和面向对象
一.基本定义 (一).面向过程(procedure oriented programming POP) 面向过程是分析解决问题的步骤,然后用函数把这些步骤一步一步的实现,然后在使用的时候一一调用则可. ...
- JS是面向过程、面向对象还是基于对象?面向对象的代码体现
一.问题 javascript是面向对象的,还是面向过程的?基于对象是什么意思? 对象: 指的是对某一类事物进行抽象,抽象出这一类事物共同的特征以及行为(也就是属性和方法),那些拥有这一共同属性和方法 ...
- C++笔记005:用面向过程和面向对象方法求解圆形面积
原创笔记,转载请注明出处! 点击[关注],关注也是一种美德~ 结束了第一个hello world程序后,我们来用面向过程和面向对象两个方法来求解圆的面积这个问题,以能够更清晰的体会面向对象和面向过程. ...
- PHP面向过程和面向对象
php程序编写分为面向过程和面向对象.两者在功能实现上没有区别,但是在代码编写上区别很大,面向过程的代码很乱,不易管理,而面向对象把常用的功能封装为一个类,这样代码清楚多了. 下面举个小例子说明一下: ...
- essential C++中关于面向过程和面向对象的说明
昨天在阅读essential C++中看到了一个关于面向过程和面向对象的区别的例子,感觉挺好的.记录下来.... 这个例子是关于照相机的.照相机有三个性质,一个是控制位置:通常使用3个浮点数据来表示其 ...
- PHP mysqli扩展整理,包括面向过程和面向对象的比较\事务控制\批量执行\预处理
相关文章:PHP的mysql扩展整理,操作数据库的实现过程分析 PHP PDO扩展整理,包括环境配置\基本增删改查\事务\预处理 介绍 mysqli是PHP程序与mysql数据库进行数据交互的桥梁, ...
随机推荐
- codeforces 544 D Destroying Roads 【最短路】
题意:给出n个点,m条边权为1的无向边,破坏最多的道路,使得从s1到t1,s2到t2的距离不超过d1,d2 因为最后s1,t1是连通的,且要破坏掉最多的道路,那么就是求s1到t1之间的最短路 用bfs ...
- 事件代理(event的target属性)
event的target属性 一个题:请通过事件代理实现当点击每一个li标签,弹出相应li标签内的内容 Event对象提供了一个属性叫target,可以返回事件的目标节点,我们称为事件源,也就是说,t ...
- iOS开发——根据数组中的字典中的某一元素排序
数组中的元素是字典,字典中的某一个元素,比如说姓名,现在需要按照姓名的首字母来排序,怎么搞? 做法很简单,在字典中加一个元素,保存姓名的首字母,然后用下面的方法排序. - (void)sortWifi ...
- C# 快捷使用自定义配置节点
C#除了appSettings和connectionStrings默认配置外还允许用户自定义使用配置.C# 提供3中简单的自定义配置,配置文件如下 <?xml version="1.0 ...
- 【 D3.js 入门系列 --- 2.1 】 关于怎样选择,插入,删除元素
本人的个人博客首页为: http://www.ourd3js.com/ ,csdn博客首页为:http://blog.csdn.net/lzhlzz/. 转载请注明出处,谢谢. 在D3.js中,选择 ...
- android 选取部分 log 的两种方法
Grep多个条件: android logcat -v time | grep -e A -e B 选取多个android log tag: android logcat -v time -s TAG ...
- 英语影视台词---三、Cinema Paradiso
英语影视台词---三.Cinema Paradiso 一.总结 一句话总结:天堂电影院 1.Alfredo: No, Toto. Nobody said it. This time it's all ...
- Python(五) 包、模块、函数与变量作用域
一.while循环与使用场景 CONDITION=1 while CONDITION <=5 : CONDITION +=1 print("hello") else: pri ...
- Json 序列化以及反序列化的三种方式(二)
1.什么是JSON? Json[javascript对象表示方法],它是一个轻量级的数据交换格式,我们可以很简单的来读取和写它,并且它很容易被计算机转化和生成,它是完全独立于语言的 2.Json支持下 ...
- .net 项目分层及规范
1.解决方案命名:公司简称+产品名称.如ABCSOft.BBS 2.解决方案文件夹:以数字排序例如:01.Web表示页面层:02.IBusinessLogic表示业务逻辑接口:03.Bussin ...