【Python全栈】Python实现交通信号灯

文章目录

  • 一、实现过程
      • 1. 导入必要的库和初始化Pygame
      • 2. 定义颜色和屏幕尺寸
      • 3. 创建交通信号灯、行人和车辆类
      • 4. 定义绘制函数draw
      • 5. 实例化交通信号灯、行人和车辆对象
      • 6. 创建并启动线程
      • 7. 游戏循环
  • 二、代码

一、实现过程

1. 导入必要的库和初始化Pygame

  • 导入Pygame库并初始化,设置屏幕尺寸和标题。

2. 定义颜色和屏幕尺寸

  • 定义了一些颜色常量和屏幕尺寸。

3. 创建交通信号灯、行人和车辆类

  • TrafficLight类:包含一个change_color方法,用于模拟交通信号灯的颜色变化。
  • Pedestrian类:包含一个move方法,用于模拟行人的移动。
  • Car类:包含一个move方法,用于模拟车辆的移动。

4. 定义绘制函数draw

  • 在屏幕上绘制交通信号灯、行人和车辆。

5. 实例化交通信号灯、行人和车辆对象

  • 创建TrafficLight、Pedestrian和Car对象。

6. 创建并启动线程

  • 使用threading库创建并启动交通信号灯、行人和车辆的线程。

7. 游戏循环

  • 在游戏循环中,检测退出事件并调用draw函数更新屏幕。

二、代码

import pygame
import time
import threading# 初始化Pygame
pygame.init()# 设置屏幕尺寸
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
pygame.display.set_caption("Traffic Simulator")# 定义颜色
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
RED = (255, 0, 0)
GREEN = (0, 255, 0)
YELLOW = (255, 255, 0)# 交通信号灯类
class TrafficLight:def __init__(self):self.color = GREENdef change_color(self):while True:self.color = REDtime.sleep(5)  # 红灯持续5秒self.color = GREENtime.sleep(5)  # 绿灯持续5# 行人类
class Pedestrian:def __init__(self):self.position = (100, 300)  # 初始位置def move(self):while True:# 行人移动逻辑time.sleep(2)# 车辆类
class Car:def __init__(self):self.position = (700, 300)  # 初始位置def move(self):while True:# 车辆移动逻辑time.sleep(1)# 绘制函数
def draw():screen.fill(WHITE)pygame.draw.circle(screen, traffic_light.color, (SCREEN_WIDTH//2, SCREEN_HEIGHT//2 - 100), 50)  # 画交通信号灯pygame.draw.rect(screen, BLACK, (pedestrian.position[0], pedestrian.position[1], 20, 20))  # 画行人pygame.draw.rect(screen, BLACK, (car.position[0], car.position[1], 40, 20))  # 画车辆pygame.display.flip()# 实例化交通信号灯、行人和车辆对象
traffic_light = TrafficLight()
pedestrian = Pedestrian()
car = Car()# 创建并启动线程
traffic_thread = threading.Thread(target=traffic_light.change_color)
pedestrian_thread = threading.Thread(target=pedestrian.move)
car_thread = threading.Thread(target=car.move)traffic_thread.start()
pedestrian_thread.start()
car_thread.start()# 游戏循环
clock = pygame.time.Clock()
running = True
while running:for event in pygame.event.get():if event.type == pygame.QUIT:running = Falsedraw()clock.tick(60)pygame.quit()

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

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

相关文章

硬件知识:点亮led

怎么做 1、看原理图,去顶控制LED的引脚 1.1led 1.2gpio 1、使能gpio模块,设置Power/clock control,向gpio模块提供电源和时钟 2.设置引脚模式为gpio模式 3.设置方向output/input4、读取引脚,获得当前电频到底是低电平/高电平;这…

ES集群部署的核心步骤

文章目录 引言I ES集群部署前期工作II 部署ES2.1 配置安全组2.2 创建ES用户和组2.3 下载安装ES2.4 修改内存相关配置III es集群添加用户安全认证功能3.1 生成 elastic-certificates.p123.2 创建 Elasticsearch 集群密码3.2 设置kibana的 elasticsearch帐号角色和密码3.3 logsta…

maya 遍历所有子节点

目录 MEL遍历所有子节点 python遍历所有子节点 MEL遍历所有子节点 // 定义一个递归函数来遍历所有子节点 proc traverseAllChildren(string $node) {// 获取直接子节点string $children[] listRelatives -children $node;// 遍历所有直接子节点for ($child in $children) {…

社会公益第三方评估

本文由群狼调研(公众项目第三方评估)出品,欢迎转载,请注明出处。社会公益第三方评估是由独立的组织或机构进行的对社会公益项目的评估和监督。这些第三方评估机构通常是独立于项目实施者和受益者的中立机构,旨在提供客…

LeetCode热题Hot100 - 正则表达式匹配

一刷~ 给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 . 和 * 的正则表达式匹配。 . 匹配任意单个字符* 匹配零个或多个前面的那一个元素 所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。 有几个用例超时,容我三思…

数据库:Redis数据库

一、非关系型数据库 1.什么是非关系型数据库 非关系型数据库(Non-relational Database)又称NoSQL数据库是一种不同于传统关系型数据库管理系统(RDBMS)的数据存储解决方案。NoSQL这个术语最初意味着"Not Only SQL"&…

静态资源不加载是否会影响性能吗

静态资源不加载或加载缓慢确实可能会影响网站或应用的性能。静态资源,如CSS、JavaScript、图片等,是网页的重要组成部分,它们负责网页的样式、交互和视觉效果。 如果静态资源不加载或加载失败,用户可能会看到一个没有样式或交互的…

1999-2022年上市公司员工人数数据

1999-2022年上市公司员工人数数据 1、时间:1999-2022年 2、指标:证券代码、时间、员工人数 3、来源:整理自csmar 4、范围:上市公司 5、指标解释: 上市公司员工人数是衡量公司规模和发展状的重要指标。该数据直接…

阿赵UE学习笔记——24、动画播放控制

阿赵UE学习笔记目录   大家好,我是阿赵。   继续学习虚幻引擎的使用。关于UE的动画系统,之前学习了很多,包括动画合成或者动画蒙太奇等,实际上最后得到的都是一个动画片段。那么这些动画片段,是需要怎样播放控制呢…

babyAGI(6)-babyCoder源码阅读2任务描述部分

废话不多说,我们直接看task的prompt 这里需要注意的是,每个openai_call的temperature都不相同,这也是开发程序时需要调整和关注的一点 1. 初始化代码任务agent 作为babycoder的第一个angent,整个prompt编写的十分值得学习 整个p…

Taro多行文本最多展示5行,超出“查看更多”展示,点击弹层

Taro中,页面需求: 多行文本,展示最多展示5行,超出5行,展示“查看更多”按钮,点击弹层展示文本详细信息。 弹层代码就不说了,着重说一下怎么获取区域高度~ 1.区域设置max-height&am…

ArcGIS Pro打不开Excel?Microsoft驱动程序安装不上?

刚用ArcGIS pro的朋友们可能经常在打开xls或者xlsx文件的时候都会提示,未安装所需的Microsoft驱动程序。 怎么办呢?当然,按照提示装一下驱动就会好吗?有什么状况会出现?有什么临时替代方案呢? 全文目录&a…

为什么要选择第三方软件测试机构?CMA、CNAS第三方软件测试机构推荐

第三方软件测试机构是独立于软件开发方和软件使用方的中立机构,致力于对软件产品进行全面、客观、专业的测试和评估,为软件开发方和使用方提供全面的技术支持和服务。 一、为什么要选择第三方软件测试机构   1、专业性强:拥有专业的测试团…

程序员的认知风格与思维特点

1 程序员的认知风格与思维特点 程序员的认知风格与思维特点,是他们在编程过程中展现出来的独特 目录 1 程序员的认知风格与思维特点 1.1 逻辑思维与抽象思维能力 1.2 空间思维与模式识别能力 1.3 系统思维与问题分解能力 1.4 案例与数据 1.5 总结 2 逻辑思…

实验4-10:判断IP地址的有效性

实验4-10:判断IP地址的有效性 输入一个IPv4格式的IP地址,判断地址的有效性。 IPv4格式的地址由4组十进制数构成,数据由句点间隔,每组数据的范围介于0~255之间。 例如: 202.118.11.24 为有效IP地址, 而 202…

QT实现windows下获取CPU、内存及磁盘信息

一.目的 QT代码实现windows下获取CPU、内存及磁盘信息。 二.代码实现 1.获取CPU和内存信息 #include <Windows.h> // 获取CPU信息 SYSTEM_INFO systemInfo; GetSystemInfo(&systemInfo); qDebug() << "CPU Architecture:" << (systemInfo.wP…

基本电路理论-电流和电压的参考方向

&#x1f308;个人主页&#xff1a;会编程的果子君 &#x1f4ab;个人格言:“成为自己未来的主人~” 电流及参考方向 电流&#xff1a;带电粒子有规则的定向移动 电流强度&#xff1a;单位时间内通过导体横截面的电荷量&#xff0c;即&#xff1a;idq/dt 单位&#xff1a…

Vue3_2024_7天【回顾上篇watch常见的后两种场景】完

随笔&#xff1a;这年头工作不好找咯&#xff0c;大家有学历提升的赶快了&#xff0c;还有外出人多注意身体&#xff0c;没错我在深圳这边阳了&#xff0c;真的绝啊&#xff0c;最尴尬的还给朋友传染了&#xff01;&#xff01;&#xff01; 之前三种的监听情况&#xff0c;监听…

C# 委托与事件 终章

C# 委托与事件 浅尝 C# 委托与事件 深入 委托 委托有什么用&#xff1f; 将函数作为函数的参数传递声明事件并用来注册 强类型委托 Action<T1> Func<T1, TResult>事件 希望一个类的某些成员在发生变化时能被外界观测到 CollctionChangedTextChanged 标准.Ne…

【Qt 学习笔记】Qt 背景介绍

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;Qt 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ Qt 背景介绍 文章编号&#xff1a;Qt 学习笔记 / 01 文章目录 Qt 背景…