qt-交通路口仿真

qt-交通路口仿真

  • 一、演示效果
  • 二、核心代码
  • 三、程序链接


一、演示效果

在这里插入图片描述

二、核心代码

#include "generator.h"Generator::Generator(SimulationScene *scene):m_scene(scene),m_mode(VEHICLEMETHOD::GO_THROUGH),m_running_state(false),m_VisionOn(false),m_IsInteraction(true)
{for(int i = 0 ; i < 4 ; ++i){m_timer.append( new QTimer());}this->connect(m_timer.at(0),SIGNAL(timeout()),this,SLOT(makeEastWest()));this->connect(m_timer.at(1),SIGNAL(timeout()),this,SLOT(makeNorthSouth()));this->connect(m_timer.at(2),SIGNAL(timeout()),this,SLOT(makeSouthNorth()));this->connect(m_timer.at(3),SIGNAL(timeout()),this,SLOT(makeWestEast()));//qsrand(static_cast<uint>(QTime(0,0,0).secsTo(QTime::currentTime())));
}Generator::Generator():m_number_N_S(0),m_number_S_N(0),m_number_W_E(0),m_number_E_W(0),m_time_N_S(0),m_time_S_N(0),m_time_W_E(0),m_time_E_W(0),m_mode(VEHICLEMETHOD::GO_THROUGH),m_running_state(false)
{for(int i = 0 ; i < 4 ; ++i){m_timer.append( new QTimer());}//qsrand(static_cast<uint>(QTime(0,0,0).secsTo(QTime::currentTime())));
}Generator::~Generator()
{delete m_timer.at(0);delete m_timer.at(1);delete m_timer.at(2);delete m_timer.at(3);
}void Generator::setMethod(const GENMETHOD& x)
{m_method = x;
}void Generator::startGenerator()
{m_timer.at(0)->start(m_time_E_W);m_timer.at(1)->start(m_time_N_S);m_timer.at(2)->start(m_time_S_N);m_timer.at(3)->start(m_time_W_E);}void Generator::stopGenerator()
{m_timer.at(0)->stop();m_timer.at(1)->stop();m_timer.at(2)->stop();m_timer.at(3)->stop();
}void Generator::startAutoGeneraion()
{setTimer(2500,2000,2600,3000);startGenerator();
}void Generator::setTimer(const int& N_S,const int& S_N,const int& E_W,const int& W_E)
{m_time_N_S = N_S;m_time_S_N = S_N;m_time_E_W = E_W;m_time_W_E = W_E;
}void Generator::makeNorthSouth()
{if(m_scene->getNumber(REGION_N_S) > MAX_N_S){return;}//qDebug()<<"Hello";switch (m_method) {case GEN_3:switch (qrand()%3){case 0:m_scene->addVehicle(VehiclesGenerator::getRightTurningVehicle(REGION_N_S,m_mode,m_VisionOn,m_IsInteraction));//m_number_N_S++;break;case 1:m_scene->addVehicle(VehiclesGenerator::getThroughVehicle(REGION_N_S,2,m_mode,m_VisionOn,m_IsInteraction));//m_number_N_S++;break;case 2:m_scene->addVehicle(VehiclesGenerator::getLeftTurningVehicle(REGION_N_S,m_mode,m_VisionOn,m_IsInteraction));//m_number_N_S++;break;}break;case GEN_5:switch (qrand()%5){case 0:m_scene->addVehicle(VehiclesGenerator::getRightTurningVehicle(REGION_N_S,m_mode,m_VisionOn,m_IsInteraction));//m_number_N_S++;break;case 1:m_scene->addVehicle(VehiclesGenerator::getThroughVehicle(REGION_N_S,1,m_mode,m_VisionOn,m_IsInteraction));//m_number_N_S++;break;case 2:m_scene->addVehicle(VehiclesGenerator::getThroughVehicle(REGION_N_S,2,m_mode,m_VisionOn,m_IsInteraction));//m_number_N_S++;break;case 3:m_scene->addVehicle(VehiclesGenerator::getThroughVehicle(REGION_N_S,3,m_mode,m_VisionOn,m_IsInteraction));//m_number_N_S++;break;case 4:m_scene->addVehicle(VehiclesGenerator::getLeftTurningVehicle(REGION_N_S,m_mode,m_VisionOn,m_IsInteraction));//m_number_N_S++;break;}break;case NO_TURN:switch (qrand()%3){case 0:m_scene->addVehicle(VehiclesGenerator::getThroughVehicle(REGION_N_S,1,m_mode,m_VisionOn,m_IsInteraction));//m_number_N_S++;break;case 1:m_scene->addVehicle(VehiclesGenerator::getThroughVehicle(REGION_N_S,2,m_mode,m_VisionOn,m_IsInteraction));//m_number_N_S++;break;case 2:m_scene->addVehicle(VehiclesGenerator::getThroughVehicle(REGION_N_S,3,m_mode,m_VisionOn,m_IsInteraction));//m_number_N_S++;break;}break;case ONLY_TURN:switch (qrand()%2) {case 0:m_scene->addVehicle(VehiclesGenerator::getLeftTurningVehicle(REGION_N_S,m_mode,m_VisionOn,m_IsInteraction));break;case 1:m_scene->addVehicle(VehiclesGenerator::getRightTurningVehicle(REGION_N_S,m_mode,m_VisionOn,m_IsInteraction));break;}break;}
}void Generator::makeSouthNorth()
{if(m_scene->getNumber(REGION_S_N) > MAX_S_N){return;}//qDebug()<<"Hello";switch (m_method) {case GEN_3:switch (qrand()%3){case 0:m_scene->addVehicle(VehiclesGenerator::getRightTurningVehicle(REGION_S_N,m_mode,m_VisionOn,m_IsInteraction));//m_number_S_N++;break;case 1:m_scene->addVehicle(VehiclesGenerator::getThroughVehicle(REGION_S_N,2,m_mode,m_VisionOn,m_IsInteraction));//m_number_S_N++;break;case 2:m_scene->addVehicle(VehiclesGenerator::getLeftTurningVehicle(REGION_S_N,m_mode,m_VisionOn,m_IsInteraction));//m_number_S_N++;break;}break;case GEN_5:switch (qrand()%5){case 0:m_scene->addVehicle(VehiclesGenerator::getRightTurningVehicle(REGION_S_N,m_mode,m_VisionOn,m_IsInteraction));//m_number_S_N++;break;case 1:m_scene->addVehicle(VehiclesGenerator::getThroughVehicle(REGION_S_N,1,m_mode,m_VisionOn,m_IsInteraction));//m_number_S_N++;break;case 2:m_scene->addVehicle(VehiclesGenerator::getThroughVehicle(REGION_S_N,2,m_mode,m_VisionOn,m_IsInteraction));//m_number_S_N++;break;case 3:m_scene->addVehicle(VehiclesGenerator::getThroughVehicle(REGION_S_N,3,m_mode,m_VisionOn,m_IsInteraction));//m_number_S_N++;break;case 4:m_scene->addVehicle(VehiclesGenerator::getLeftTurningVehicle(REGION_S_N,m_mode,m_VisionOn,m_IsInteraction));//m_number_S_N++;break;}break;case NO_TURN:switch (qrand()%3){case 0:m_scene->addVehicle(VehiclesGenerator::getThroughVehicle(REGION_S_N,1,m_mode,m_VisionOn,m_IsInteraction));//m_number_N_S++;break;case 1:m_scene->addVehicle(VehiclesGenerator::getThroughVehicle(REGION_S_N,2,m_mode,m_VisionOn,m_IsInteraction));//m_number_N_S++;break;case 2:m_scene->addVehicle(VehiclesGenerator::getThroughVehicle(REGION_S_N,3,m_mode,m_VisionOn,m_IsInteraction));//m_number_N_S++;break;}break;case ONLY_TURN:switch (qrand()%2) {case 0:m_scene->addVehicle(VehiclesGenerator::getLeftTurningVehicle(REGION_S_N,m_mode,m_VisionOn,m_IsInteraction));break;case 1:m_scene->addVehicle(VehiclesGenerator::getRightTurningVehicle(REGION_S_N,m_mode,m_VisionOn,m_IsInteraction));break;}break;}
}void Generator::makeWestEast()
{if(m_scene->getNumber(REGION_W_E) > MAX_W_E){return;}//qDebug()<<"Hello";switch (m_method) {case GEN_3:switch (qrand()%3){case 0:m_scene->addVehicle(VehiclesGenerator::getRightTurningVehicle(REGION_W_E,m_mode,m_VisionOn,m_IsInteraction));//m_number_W_E++;break;case 1:m_scene->addVehicle(VehiclesGenerator::getThroughVehicle(REGION_W_E,2,m_mode,m_VisionOn,m_IsInteraction));//m_number_W_E++;break;case 2:m_scene->addVehicle(VehiclesGenerator::getLeftTurningVehicle(REGION_W_E,m_mode,m_VisionOn,m_IsInteraction));//m_number_W_E++;break;}break;case GEN_5:switch (qrand()%5){case 0:m_scene->addVehicle(VehiclesGenerator::getRightTurningVehicle(REGION_W_E,m_mode,m_VisionOn,m_IsInteraction));//m_number_W_E++;break;case 1:m_scene->addVehicle(VehiclesGenerator::getThroughVehicle(REGION_W_E,1,m_mode,m_VisionOn,m_IsInteraction));//m_number_W_E++;break;case 2:m_scene->addVehicle(VehiclesGenerator::getThroughVehicle(REGION_W_E,2,m_mode,m_VisionOn,m_IsInteraction));//m_number_W_E++;break;case 3:m_scene->addVehicle(VehiclesGenerator::getThroughVehicle(REGION_W_E,3,m_mode,m_VisionOn,m_IsInteraction));//m_number_W_E++;break;case 4:m_scene->addVehicle(VehiclesGenerator::getLeftTurningVehicle(REGION_W_E,m_mode,m_VisionOn,m_IsInteraction));//m_number_W_E++;break;}break;case NO_TURN:switch (qrand()%3){case 0:m_scene->addVehicle(VehiclesGenerator::getThroughVehicle(REGION_W_E,1,m_mode,m_VisionOn,m_IsInteraction));//m_number_N_S++;break;case 1:m_scene->addVehicle(VehiclesGenerator::getThroughVehicle(REGION_W_E,2,m_mode,m_VisionOn,m_IsInteraction));//m_number_N_S++;break;case 2:m_scene->addVehicle(VehiclesGenerator::getThroughVehicle(REGION_W_E,3,m_mode,m_VisionOn,m_IsInteraction));//m_number_N_S++;break;}break;case ONLY_TURN:switch (qrand()%2) {case 0:m_scene->addVehicle(VehiclesGenerator::getLeftTurningVehicle(REGION_W_E,m_mode,m_VisionOn,m_IsInteraction));break;case 1:m_scene->addVehicle(VehiclesGenerator::getRightTurningVehicle(REGION_W_E,m_mode,m_VisionOn,m_IsInteraction));break;}break;}
}void Generator::makeEastWest()
{if(m_scene->getNumber(REGION_E_W) > MAX_E_W){return;}//qDebug()<<"Hello";switch (m_method) {case GEN_3:switch (qrand()%3){case 0:m_scene->addVehicle(VehiclesGenerator::getRightTurningVehicle(REGION_E_W,m_mode,m_VisionOn,m_IsInteraction));//m_number_E_W++;break;case 1:m_scene->addVehicle(VehiclesGenerator::getThroughVehicle(REGION_E_W,2,m_mode,m_VisionOn,m_IsInteraction));//m_number_E_W++;break;case 2:m_scene->addVehicle(VehiclesGenerator::getLeftTurningVehicle(REGION_E_W,m_mode,m_VisionOn,m_IsInteraction));//m_number_E_W++;break;}break;case GEN_5:switch (qrand()%5){case 0:m_scene->addVehicle(VehiclesGenerator::getRightTurningVehicle(REGION_E_W,m_mode,m_VisionOn,m_IsInteraction));//m_number_E_W++;break;case 1:m_scene->addVehicle(VehiclesGenerator::getThroughVehicle(REGION_E_W,1,m_mode,m_VisionOn,m_IsInteraction));//m_number_E_W++;break;case 2:m_scene->addVehicle(VehiclesGenerator::getThroughVehicle(REGION_E_W,2,m_mode,m_VisionOn,m_IsInteraction));//m_number_E_W++;break;case 3:m_scene->addVehicle(VehiclesGenerator::getThroughVehicle(REGION_E_W,3,m_mode,m_VisionOn,m_IsInteraction));//m_number_E_W++;break;case 4:m_scene->addVehicle(VehiclesGenerator::getLeftTurningVehicle(REGION_E_W,m_mode,m_VisionOn,m_IsInteraction));//m_number_E_W++;break;}break;case NO_TURN:switch (qrand()%3){case 0:m_scene->addVehicle(VehiclesGenerator::getThroughVehicle(REGION_E_W,1,m_mode,m_VisionOn,m_IsInteraction));//m_number_N_S++;break;case 1:m_scene->addVehicle(VehiclesGenerator::getThroughVehicle(REGION_E_W,2,m_mode,m_VisionOn,m_IsInteraction));//m_number_N_S++;break;case 2:m_scene->addVehicle(VehiclesGenerator::getThroughVehicle(REGION_E_W,3,m_mode,m_VisionOn,m_IsInteraction));//m_number_N_S++;break;}break;case ONLY_TURN:switch (qrand()%2) {case 0:m_scene->addVehicle(VehiclesGenerator::getLeftTurningVehicle(REGION_E_W,m_mode,m_VisionOn,m_IsInteraction));break;case 1:m_scene->addVehicle(VehiclesGenerator::getRightTurningVehicle(REGION_E_W,m_mode,m_VisionOn,m_IsInteraction));break;}break;}
}void Generator::setMode(const VEHICLEMETHOD &mode)
{m_mode = mode;
}void Generator::setVisionOn(const bool &vision)
{m_VisionOn = vision;
}void Generator::setInteraction(const bool &interact)
{m_IsInteraction = interact;
}void Generator::setScene(SimulationScene *scene)
{m_scene = scene;
}void Generator::turnOn()
{m_running_state = true;
}void Generator::turnOff()
{m_running_state = false;
}

三、程序链接

https://download.csdn.net/download/u013083044/88850953

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/479986.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

※【回溯】【深度优先前序】Leetcode 257. 二叉树的所有路径

※【回溯】【深度优先前序】Leetcode 257. 二叉树的所有路径 解法0 迭代法解法1 深度优先 前序解法2 深度优先 前序 添加了StringBulider ---------------&#x1f388;&#x1f388;257. 二叉树的所有路径 题目链接&#x1f388;&#x1f388;------------------- 解法0 迭代法…

SpringAop是什么?

简单介绍&#xff1a; AOP&#xff1a;Aspect Oriented Programming (面向切面编程、面向方面编程)&#xff0c;其实就是面向特定方法编程。 场景&#xff1a; 比如现在有一个需求&#xff0c;我要统计每一个业务方法的耗时时长&#xff0c; 我们只需在业务方法的前面获取一个…

算法通关村-----继续看回溯问题

复原IP地址 问题描述 有效 IP 地址 正好由四个整数&#xff08;每个整数位于 0 到 255 之间组成&#xff0c;且不能含有前导 0&#xff09;&#xff0c;整数之间用 ‘.’ 分隔。 例如&#xff1a;“0.1.2.201” 和 “192.168.1.1” 是 有效 IP 地址&#xff0c;但是 “0.011.…

MAC端Terminus 绿色版下载【一键安装,即可使用】

Termius Mac 是一款非常好用而且漂亮的SSH客户端&#xff0c;能快速远程控制服务器 现在呢&#xff0c;很多小伙伴&#xff0c;都开始使用这个软件啦 但是对于mac系统来说&#xff1a; 这个软件不要在苹果app store下载&#xff0c;不能实现传输功能这个软件目前有7天适用期&a…

MybatisPlus多表联查-分页关联查询+根据id获取多表联查后的单行数据

分页关联查询 需求分析 有两张表w以及d&#xff0c;需要w的一些字段以及d的一些字段在前端显示 此时就需要用到关联查询&#xff0c;查询到的数据放入视图类&#xff0c;显示在前端 项目结构 视图类 package com.wedu.modules.tain.entity.vo;import lombok.Data;import ja…

SpringBoot常见问题

1 引言 Spring Boot是一个基于Spring框架的快速开发脚手架&#xff0c;它简化了Spring应用的初始化和搭建过程&#xff0c;提供了众多便利的功能和特性&#xff0c;比如自动配置、嵌入式Tomcat等&#xff0c;让开发人员可以更加专注于业务逻辑的实现。   Spring Boot还提供了…

Linux:Jenkins:GitLab+Maven+Jenkins的部署(1)

1.环境 我这里准备了三台centos7 1.用于部署gitlab 运行内存&#xff1a;6G 名字&#xff1a;Jenkins-GitLab 192.168.6.1 2.用于部署jenkins 运行内存&#xff1a;2G 名字&#xff1a;Jenkins-server 192.168.6.2 3.用于打包测试…

你真的懂串口通信吗?

一、什么是串口通讯&#xff1f; 串行通讯是指仅用一根接收线和一根发送线就能将数据以位进行传输的一种通讯方式。尽管串行通讯的比按字节传输的并行通信慢&#xff0c;但是串口可以在仅仅使用两根线的情况下就能实现数据的传输。 典型的串口通信使用3根线完成&#xff0c;分…

网络安全--网鼎杯2018漏洞复现(二次注入)

一、环境&#xff1a;在线测试平台 BUUCTF在线评测 (buuoj.cn) 二、进入界面先尝试万能账号 1or11# 换格式 hais1bux1 11or11# 三、万能的不行那我们就得想注册了&#xff0c;去register.php去看看 注册个账号 发现用户名回显&#xff0c;猜测考点为用户名处二次注入&…

《戴森球计划》好玩吗?《戴森球计划》怎么在苹果电脑上安装 戴森球计划攻略 Mac游戏推荐

《戴森球计划》是一款具有强大现实科学基础的模拟策略游戏&#xff0c;玩家的目标是构建能源效率极高的戴森球以解决能源问题。游戏的背景设定启发于科幻作品中的戴森球概念。游戏采用逼真的物理模拟&#xff0c;玩家需要合理规划资源&#xff0c;以应对复杂的能源危机。那么《…

Open3D三维重建

原始点云&#xff1a; alpha_shape算法 import open3d as o3dpcd o3d.io.read_point_cloud("airplane_0001.pcd") mesh o3d.geometry.TriangleMesh.create_from_point_cloud_alpha_shape(pcd, alpha0.1) o3d.visualization.draw_geometries([mesh], mesh_show_b…

【贪心算法】代码随想录算法训练营第三十七天 |738.单调递增的数字,968.监控二叉树,总结(待补充)

738.单调递增的数字 1、题目链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 2、文章讲解&#xff1a;代码随想录 3、题目&#xff1a; 给定一个非负整数 N&#xff0c;找出小于或等于 N 的最大的整数&#xff0c;同时这个整数需要…