[OC]萝卜圈玩行车记录仪

图1-1,你的手动小车

代码是

python 复制代码
#机器人驱动主程序
#请在main中编写您自己的机器人驱动代码
import tkinter as tk
import turtle
v=0 # 速度
acc=False;slow=False;left=False;right=False # 按键状态
step=0.5 # 一次速度变化量
def keyup_press(event):
    global acc;acc=True
def keyup_release(event):
    global acc;acc=False
def keydown_press(event):
    global slow;slow=True
def keydown_release(event):
    global slow;slow=False
def keyleft_press(event):
    global left;left=True
def keyleft_release(event):
    global left;left=False
def keyright_press(event):
    global right;right=True
def keyright_release(event):
    global right;right=False
def stop_all(event):
    global v,acc,slow,left,right
    v=0;acc=slow=left=right=False
def main():
    print("你知道吗,这个的作者其实是溥哥")
    turtle.pensize(5)
    turtle.color('green')
    turtle.setup(width=0.2,height=0.3,startx=100,starty=100)
    turtle.penup()
    global v
    root=tk.Tk()
    root.bind_all("<KeyPress-Up>",keyup_press)
    root.bind_all("<KeyPress-Down>",keydown_press)
    root.bind_all("<KeyPress-Left>",keyleft_press)
    root.bind_all("<KeyPress-Right>",keyright_press)
    root.bind_all("<KeyRelease-Up>",keyup_release)
    root.bind_all("<KeyRelease-Down>",keydown_release)
    root.bind_all("<KeyRelease-Left>",keyleft_release)
    root.bind_all("<KeyRelease-Right>",keyright_release)
    root.bind_all("<KeyPress-Q>",stop_all)
    root.bind_all("<KeyPress-q>",stop_all)
    _v=tk.StringVar();_operations=tk.StringVar()
    tk.Label(root,text="机器人控制面板",font=(None,0,"bold")).pack()
    tk.Label(root,textvariable=_v).pack()
    tk.Label(root,textvariable=_operations).pack()

    while True:
        x=300#比例尺,大小详,小大略
        if acc:v+=step
        if slow:v-=step

        if left: # 左转
            robot_drv.set_motors(1,-3,2,int(v),3,-3,4,int(v))
        elif right:
            robot_drv.set_motors(1,int(v),2,-3,3,int(v),4,-3)
        else:
            robot_drv.set_motors(1,int(v),2,int(v),3,int(v),4,int(v))
        root.update()
        turtle.goto(int(robot_drv.get_gps(32)[0]/x),int(robot_drv.get_gps(32)[1]/x))
        turtle.pendown()

        _v.set("速度: %d" % v)
        _op="当前操作: "
        if acc:_op+="加速 "
        if slow:_op+="减速 "
        if left:_op+="左转 "
        if right:_op+="右转 "
        _operations.set(_op)

# *********************************************
# 以下为初始化代码,请不要修改或者删除
# *********************************************
import sys
import irobotq_robotdriver as robot_drv

if __name__ == '__main__':

    try:
        ret=robot_drv.init(sys.argv[1],sys.argv[2],int(sys.argv[3]))
        if(ret == 0):
            main()
            robot_drv.over()
            print("机器人程序运行结束")
        else:
            print('初始化错误,错误码:%d' % ret)
        print('按任意键退出')
        input()
    except Exception as e:
        import traceback;traceback.print_exc()
        print('按任意键退出')
        input()

原理解释:手动控制之前发过

重点是海龟库,应用了海龟库的坐标绘画和画笔粗细及颜色调节还有窗口大小

tips:python模式仅限于1.6.1.8以上(不包括1.6.2.2和1.6.2.4版本,此bug还未修复)

更改比例尺大小,根据不同地图调节

相关推荐
用户01360875668819 小时前
前端实现文件上传功能
前端
咖啡の猫19 小时前
Vue-github 用户搜索案例
前端·vue.js·github
yong999019 小时前
响应式布局新利器:CSS Grid 的 grid-template-areas 实战
前端·css
咖啡の猫19 小时前
Vue过度与动画
前端·javascript·vue.js
IT_陈寒19 小时前
Python数据处理速度慢?5行代码让你的Pandas提速300% 🚀
前端·人工智能·后端
蒜香拿铁19 小时前
Angular【起步】
前端·javascript·angular.js
护国神蛙19 小时前
HTTP 重定向踩坑实录:307、301、308 问题排查全指南
前端·网络协议
初心丨哈士奇19 小时前
前端Vibe Coding探索:Cursor+MCP打造沉浸式开发流(使用MCP与Cursor Rules让Vibe Coding更快速与精准)
前端·人工智能
徐凤年lll19 小时前
python 初学2
开发语言·python
2301_8012522220 小时前
Mybatis的添加和修改功能
java·开发语言·mybatis