尝试用批处理代码弄一个模拟虚拟驾驶的东西,实现成功,下面请看代码。

勇敢前行
研究电子产品,对电子产品感兴趣,研究其他。喜欢自学研究。

@echo off


setlocal enabledelayedexpansion


title 虚拟驾驶模拟器


color 0a


mode con: cols=80 lines=25


:: 路线数据库


set "route1=长沙到北京:1280"


set "route2=广州到哈尔滨:3220"


set "route3=成都到上海:1960"


set "route4=昆明到乌鲁木齐:3910"


:: ASCII艺术图形


echo.


echo ██████╗ ██╗ ██╗███████╗██╗██████╗ ██████╗


echo ██╔════╝ ██║ ██║██╔════╝██║██╔══██╗██╔═══██╗


echo ██║ ███╗██║ ██║█████╗ ██║██║ ██║██║ ██║


echo ██║ ██║██║ ██║██╔══╝ ██║██║ ██║██║ ██║


echo ╚██████╔╝╚██████╔╝██║ ██║██████╔╝╚██████╔╝


echo ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚═════╝ ╚═════╝


echo.


:main_menu


cls


echo.


echo ================== 路线选择 ==================


echo.


echo 1. 京广线:长沙 -> 武汉 -> 郑州 -> 北京 (1280公里)


echo 2. 南北大通道:广州 -> 长沙 -> 武汉 -> 哈尔滨 (3220公里)


echo 3. 长江经济带:成都 -> 重庆 -> 武汉 -> 上海 (1960公里)


echo 4. 西部走廊:昆明 -> 成都 -> 兰州 -> 乌鲁木齐 (3910公里)


echo.


echo =============================================


echo.


set /p route=请选择路线编号:


if "%route%"=="1" set "total=1280" & set "path=长沙 武汉 郑州 北京"


if "%route%"=="2" set "total=3220" & set "path=广州 长沙 武汉 哈尔滨"


if "%route%"=="3" set "total=1960" & set "path=成都 重庆 武汉 上海"


if "%route%"=="4" set "total=3910" & set "path=昆明 成都 兰州 乌鲁木齐"


set "current_speed=0"


set "distance=0"


set "cruise=0"


set "start_time=%time%"


:driving_loop


cls


echo.


echo ■■■■■■■■■■■■■■ 仪表盘 ■■■■■■■■■■■■■■


echo.


echo 当前路段:!path!


echo.


echo 剩余里程:%total% 公里


echo 当前车速:!current_speed! 公里/小时


echo 行驶时间:%elapsed_time%


echo.


echo ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■


echo.


echo [操作选项]


echo 1. 加速(+20km/h) 2. 减速(-20km/h)


echo 3. 定速巡航 4. 退出驾驶


echo.


choice /c 1234 /n /m "请选择操作:"


set "input=%errorlevel%"


if %input% equ 1 set /a "current_speed+=20"


if %input% equ 2 set /a "current_speed-=20"


if %input% equ 3 set "cruise=1" & echo 已启用定速巡航模式


if %input% equ 4 goto end_journey


:: 速度限制(0-120km/h)


if !current_speed! lss 0 set "current_speed=0"


if !current_speed! gtr 120 set "current_speed=120"


:: 计算时间差


set "end_time=%time%"


call :calc_time_diff "%start_time%" "%end_time%" elapsed_time


:: 计算行驶距离(每秒更新)


set /a "hours=!elapsed_time::=*60+0!" 2>nul


set /a "hours=(hours)/3600"


set /a "distance=current_speed*hours"


set /a "total-=distance"


if %total% leq 0 (


echo.


echo ★★★★★ 到达目的地!★★★★★


echo 总耗时:!elapsed_time!


pause


exit


)


timeout /t 1 /nobreak >nul


goto driving_loop


:calc_time_diff


setlocal


set "start=%~1"


set "end=%~2"


set /a "start_h=!start:~0,2!*3600 + !start:~3,2!*60 + !start:~6,2!"


set /a "end_h=!end:~0,2!*3600 + !end:~3,2!*60 + !end:~6,2!"


set /a "diff=end_h - start_h"


if %diff% lss 0 set /a "diff+=86400"


set /a "hours=diff/3600"


set /a "minutes=(diff%%3600)/60"


set /a "seconds=diff%%60"


endlocal & set "%3=%hours%小时%minutes%分%seconds%秒"


goto :eof


:end_journey


echo.


echo 行程已终止,共行驶:!distance! 公里


pause


exit

发表于:2025-04-18 12:20
3个回复
您还没有登录,登录后才可回复。 登录 注册