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学习笔记之os模块使用总结
Nov 03 Python
使用Python的Django框架实现事务交易管理的教程
Apr 20 Python
python 字典(dict)按键和值排序
Jun 28 Python
Python实现将不规范的英文名字首字母大写
Nov 15 Python
python入门教程之识别验证码
Mar 04 Python
python的pandas工具包,保存.csv文件时不要表头的实例
Jun 14 Python
python递归函数绘制分形树的方法
Jun 22 Python
python 寻找list中最大元素对应的索引方法
Jun 28 Python
Python Numpy库datetime类型的处理详解
Jul 13 Python
Python控制鼠标键盘代码实例
Dec 08 Python
Django+Django-Celery+Celery的整合实战
Jan 20 Python
Python实现灰色关联分析与结果可视化的详细代码
Mar 25 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
写一段简单的PHP建立文件夹代码
2015/01/06 PHP
php时间函数用法分析
2016/05/28 PHP
htm调用JS代码
2007/03/15 Javascript
jQuery 性能优化指南(3)
2009/05/21 Javascript
自己动手开发jQuery插件教程
2011/08/25 Javascript
JavaScript简单实现网页回到顶部功能
2013/11/12 Javascript
jquery实现效果比较好的table选中行颜色
2014/03/25 Javascript
jQuery1.9.1针对checkbox的调整方法(prop)
2014/05/01 Javascript
JavaScript页面模板库handlebars的简单用法
2015/03/02 Javascript
jQuery的css() 方法使用指南
2015/05/03 Javascript
jQuery实现表格行上移下移和置顶的方法
2015/05/22 Javascript
JavaScript中使用Math.PI圆周率属性的方法
2015/06/14 Javascript
JavaScript必知必会(十) call apply bind的用法说明
2016/06/08 Javascript
Google 地图事件实例讲解
2016/08/06 Javascript
微信页面倒计时代码(解决safari不兼容date的问题)
2016/12/13 Javascript
vue中七牛插件使用的实例代码
2017/07/28 Javascript
原生js 封装get ,post, delete 请求的实例
2017/08/11 Javascript
详解vue通过NGINX部署在子目录或者二级目录实践
2018/09/03 Javascript
trackingjs+websocket+百度人脸识别API实现人脸签到
2018/11/26 Javascript
如何为你的JS项目添加智能提示与类型检查详解
2019/03/12 Javascript
Node.js 深度调试方法解析
2020/07/28 Javascript
图解JS原型和原型链实现原理
2020/09/15 Javascript
JavaScript实现五子棋小游戏
2020/10/26 Javascript
在Django的上下文中设置变量的方法
2015/07/20 Python
python3获取当前文件的上一级目录实例
2018/04/26 Python
Django框架多表查询实例分析
2018/07/04 Python
python与C、C++混编的四种方式(小结)
2019/07/15 Python
Python无损压缩图片的示例代码
2020/08/06 Python
浅谈CSS3动画的回调处理
2016/07/21 HTML / CSS
魔声耳机官方网站:Monster是世界第一品牌的高性能耳机
2016/10/26 全球购物
澳大利亚现代波西米亚风格女装网站:Bohemian Traders
2018/04/16 全球购物
什么是继承
2013/12/07 面试题
农村党支部书记司法四风问题对照检查材料
2014/09/26 职场文书
2014年保洁员工作总结
2014/11/19 职场文书
具结保证书
2015/01/17 职场文书
社区党建工作总结2015
2015/05/13 职场文书