[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还未修复)

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

相关推荐
V搜xhliang02462 分钟前
基于深度学习的地物类型的提取
开发语言·人工智能·python·深度学习·神经网络·学习·conda
DK七七4 分钟前
多端校园圈子论坛小程序,多个学校同时代理,校园小程序分展示后台管理源码
开发语言·前端·微信小程序·小程序·php
苹果酱05678 分钟前
C语言 char 字符串 - C语言零基础入门教程
java·开发语言·spring boot·mysql·中间件
老赵的博客15 分钟前
QSS 设置bug
前端·bug·音视频
Chikaoya15 分钟前
项目中用户数据获取遇到bug
前端·typescript·vue·bug
南城夏季16 分钟前
蓝领招聘二期笔记
前端·javascript·笔记
Huazie16 分钟前
来花个几分钟,轻松掌握 Hexo Diversity 主题配置内容
前端·javascript·hexo
代码小鑫24 分钟前
A032-基于Spring Boot的健康医院门诊在线挂号系统
java·开发语言·spring boot·后端·spring·毕业设计
训山32 分钟前
4000字浅谈Java网络编程
java·开发语言·网络
API快乐传递者33 分钟前
除了网页标题,还能用爬虫抓取哪些信息?
开发语言·爬虫·python