2024-07-31 紧急救援小车

import tkinter as tk

class CarAnimation:
    def __init__(self, master):
        self.master = master
        self.master.title("智能救援 - 多车道小车行驶动画,优先级越高,速度越快,走左侧快车道")
        
        # 设置窗口尺寸
        self.master.geometry("1450x900")
        
        # 创建Canvas
        self.canvas = tk.Canvas(self.master, width=1400, height=800, bg='white')
        self.canvas.pack()
        
        # 加载小车图像
        self.car_image1 = tk.PhotoImage(file=r"G:\old_desktop\个人\car1.png")
        self.car_image2 = tk.PhotoImage(file=r"G:\old_desktop\个人\car2.png")
        self.car_image3 = tk.PhotoImage(file=r"G:\old_desktop\个人\car3.png")
        
        # 初始化车辆数据
        self.cars = [
            {'x': 50, 'y': 100, 'speed': 1, 'priority': 1},
            {'x': 50, 'y': 200, 'speed': 1, 'priority': 1},
            {'x': 50, 'y': 300, 'speed': 1, 'priority': 1}
        ]
        self.cars_graphics = []
        
        # 创建小车图形
        self.cars_graphics.append(self.canvas.create_image(50, 100, image=self.car_image1, anchor=tk.NW))
        self.cars_graphics.append(self.canvas.create_image(50, 200, image=self.car_image2, anchor=tk.NW))
        self.cars_graphics.append(self.canvas.create_image(50, 300, image=self.car_image3, anchor=tk.NW))
        # 创建按钮
        self.priority_buttons = []
        for i in range(3):
            button = tk.Button(self.master, text=f"提高第{i+1}辆车优先级", command=lambda i=i: self.change_priority(i))
            button.pack(side=tk.LEFT, padx=10)
            self.priority_buttons.append(button)
        # 开始动画
        self.animate()
    
    def animate(self):
        # 更新所有车辆的位置
        for i, car in enumerate(self.cars):
            car['x'] += car['speed'] *(1+ car['priority']/20 )
            self.canvas.coords(self.cars_graphics[i], car['x'], car['y'])
            # 检查边界
            if car['x'] >=1200:
                car['x'] = 1200
                car['speed'] = 0

        # 每隔10毫秒更新一次
        self.master.after(10, self.animate)
    
    def change_priority(self, car_index):
        # 提高指定车辆的优先级
        current_priority = self.cars[car_index]['priority']
        new_priority = current_priority +1
        self.cars[car_index]['priority'] = new_priority
        
        # 按照优先级排序车辆
        sorted_cars = sorted(self.cars, key=lambda x: x['priority'])
        y_positions = [300, 200, 100]
        
        for i, car in enumerate(sorted_cars):
            car['y'] = y_positions[i]
            self.canvas.coords(self.cars_graphics[self.cars.index(car)], car['x'], car['y'])
    
if __name__ == "__main__":
    root = tk.Tk()
    app = CarAnimation(root)
    root.mainloop()

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容