python用海龟绘图写贪吃蛇游戏


Posted in Python onJune 18, 2021

一个简单的贪吃蛇程序,供大家参考,具体内容如下

如图显示

python用海龟绘图写贪吃蛇游戏

导入海龟绘图库

from turtle import *
from random import randrange

常量设置

food_x = randrange(-20, 20) * 20
food_y = randrange(-20, 20) * 20
snack = [[0, 0], [20, 0], [40, 0], [40, 20]]
dir_x = 20
dir_y = 0

主函数

if __name__ == '__main__':
    # 设置主窗口的大小和位置
    # width,height,startx,starty(初始位置距离屏幕左边和右边多少,默认中间)
    setup(800, 800)
    # 禁用海龟动画
    tracer(False)
    loop_view()
    listen()
    onkey(lambda: control(0, 20), "w")
    onkey(lambda: control(0, -20), "s")
    onkey(lambda: control(-20, 0), "a")
    onkey(lambda: control(20, 0), "d")
    # 开始事件循环
    # 调用 Tkinter 的 mainloop 函数
    # 必须作为一个海龟绘图程序的结束语句
    done()

画正方形

def draw_square(x, y, size, color_name):
    '''
    画正方形
    :param x 表示在画布的x位置
    :param y 表示画布的y位置
    :param size 表示正方形的长度
    :param color_name 表示正方形的颜色
    :return
    '''

    # 画笔抬起,移动的时候不画线
    up()
    # 是海龟不可见
    ht()
    # 将海龟移动到这个位置
    goto(x, y)

    # 画笔落下 -- 移动时将画线
    down()
    color("red", color_name)
    begin_fill()
    forward(size)
    left(90)
    forward(size)
    left(90)
    forward(size)
    left(90)
    forward(size)
    left(90)
    end_fill()

    pass

在画布上画食物和蛇

def loop_view():
    '''
    循环界面
    '''
    global food_x, food_y
    if not is_zhangqiang():
        return

    snack.append([snack[-1][0] + dir_x, snack[-1][1] + dir_y])
    if snack[-1][0] != food_x or snack[-1][1] != food_y:
        snack.pop(0)
    else:
        food_x = randrange(-20, 20) * 20
        food_y = randrange(-20, 20) * 20
    clear()
    # 画食物
    draw_square(food_x, food_y, 20, "red")
    # 画蛇
    for s in range(len(snack)):
        if s == len(snack) - 1:
            draw_square(snack[s][0], snack[s][1], 20, "yellow")
            continue
        draw_square(snack[s][0], snack[s][1], 20, "black")



    ontimer(loop_view, 100)
    # 执行一次 TurtleScreen 刷新。在禁用追踪时使用
    update()

控制方向

def control(x,y):
    global dir_x, dir_y
    dir_x = x
    dir_y = y

碰撞检测

def is_zhangqiang():
    if -400 <= snack[-1][0] <= 380 and -400 <= snack[-1][1] <= 380:
        return True
    else:
        return False

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python urlopen 使用小示例
Sep 06 Python
低版本中Python除法运算小技巧
Apr 05 Python
python中的装饰器详解
Apr 13 Python
用Python写一个无界面的2048小游戏
May 24 Python
Python中利用Scipy包的SIFT方法进行图片识别的实例教程
Jun 03 Python
Python实现抓取网页生成Excel文件的方法示例
Aug 05 Python
python cx_Oracle的基础使用方法(连接和增删改查)
Nov 19 Python
java中两个byte数组实现合并的示例
May 09 Python
对Python Pexpect 模块的使用说明详解
Feb 14 Python
Python学习笔记之lambda表达式用法详解
Aug 08 Python
django实现web接口 python3模拟Post请求方式
Nov 19 Python
python 安装移动复制第三方库操作
Jul 13 Python
Python使用海龟绘图实现贪吃蛇游戏
Jun 18 #Python
Python turtle实现贪吃蛇游戏
python中%格式表达式实例用法
Jun 18 #Python
如何用python清洗文件中的数据
Jun 18 #Python
Python中glob库实现文件名的匹配
python中的装饰器该如何使用
Jun 18 #Python
Python预测分词的实现
You might like
Yii框架表单提交验证功能分析
2017/01/07 PHP
thinkPHP框架中执行原生SQL语句的方法
2017/10/25 PHP
在Laravel的Model层做数据缓存的实现
2019/09/26 PHP
限制文本字节数js代码
2007/03/06 Javascript
认识延迟时间为0的setTimeout
2008/05/16 Javascript
chrome原生方法之数组
2011/11/30 Javascript
js使用函数绑定技术改变事件处理程序的作用域
2011/12/26 Javascript
javascript按位非运算符的使用方法
2013/11/14 Javascript
使用node.js 获取客户端信息代码分享
2014/11/26 Javascript
javascript实现炫酷的拖动分页
2015/05/11 Javascript
jquery制作属于自己的select自定义样式
2015/11/23 Javascript
JavaScript中的事件委托及好处
2016/07/12 Javascript
javascript使用递归算法求两个数字组合功能示例
2017/01/03 Javascript
关于Bootstrap按钮组件消除黄框的方法
2017/05/19 Javascript
详解利用 Express 托管静态文件的方法
2017/09/18 Javascript
NodeJs实现定时任务的示例代码
2017/12/05 NodeJs
纯JS实现出生日期[年月日]下拉菜单效果
2018/06/01 Javascript
vue中如何让子组件修改父组件数据
2018/06/14 Javascript
使用Vue.js 和Chart.js制作绚丽多彩的图表
2019/06/15 Javascript
Vue引入Stylus知识点总结
2020/01/16 Javascript
jquery绑定事件 bind和on的用法与区别分析
2020/05/22 jQuery
[02:28]DOTA2 2015国际邀请赛中国区预选赛首日现场百态
2015/05/26 DOTA
Python中类的定义、继承及使用对象实例详解
2015/04/30 Python
Python统计文件中去重后uuid个数的方法
2015/07/30 Python
python中requests爬去网页内容出现乱码问题解决方法介绍
2017/10/25 Python
python3 实现对图片进行局部切割的方法
2018/12/05 Python
Python+OpenCV感兴趣区域ROI提取方法
2019/01/10 Python
什么是python的列表推导式
2020/05/26 Python
Ooni英国官网:披萨烤箱
2020/05/31 全球购物
请假条怎么写
2014/04/10 职场文书
医院护士见习期自我鉴定
2014/04/10 职场文书
竞选劳动委员演讲稿
2014/04/28 职场文书
购房公证委托书(2014版)
2014/09/12 职场文书
2014年机关后勤工作总结
2014/12/16 职场文书
环境建议书
2015/02/04 职场文书
Python批量将csv文件转化成xml文件的实例
2021/05/10 Python