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函数式编程指南(四):生成器详解
Jun 24 Python
详解Python编程中包的概念与管理
Oct 16 Python
Python基于递归和非递归算法求两个数最大公约数、最小公倍数示例
May 21 Python
Django unittest 设置跳过某些case的方法
Dec 26 Python
python实现手机销售管理系统
Mar 19 Python
python制作简单五子棋游戏
Jun 18 Python
python cumsum函数的具体使用
Jul 29 Python
Python函数中的可变长参数详解
Sep 12 Python
详解Django CAS 解决方案
Oct 30 Python
python GUI库图形界面开发之PyQt5信号与槽机制、自定义信号基础介绍
Feb 25 Python
详解Python直接赋值,深拷贝和浅拷贝
Jul 09 Python
python自动化测试三部曲之request+django实现接口测试
Oct 07 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多种序列化与反序列化的方法
2013/06/06 PHP
php中使用GD库做验证码
2016/03/31 PHP
PHP实现数组向任意位置插入,删除,替换数据操作示例
2019/04/05 PHP
如何让您的中波更粗更长 - 中波框形天线制作
2021/03/10 无线电
js停止输出代码
2008/07/20 Javascript
输入框的字数时时统计—关于 onpropertychange 和 oninput 使用
2011/10/21 Javascript
jQuery事件 delegate()使用方法介绍
2012/10/30 Javascript
Js,alert出现乱码问题的解决方法
2013/06/19 Javascript
分享Javascript中最常用的55个经典小技巧
2013/11/29 Javascript
js数组去重的常用方法总结
2014/01/24 Javascript
用JavaScript判断CSS浏览器类型前缀的两种方法
2015/10/08 Javascript
Angular中$compile源码分析
2016/01/28 Javascript
Bootstrap Multiselect 常用组件实现代码
2017/07/09 Javascript
解决vue2.0路由跳转未匹配相应用路由避免出现空白页面的问题
2018/08/24 Javascript
浅谈js中的bind
2019/03/18 Javascript
小程序实现搜索框功能
2020/03/26 Javascript
javascript实现京东快递单号的查询效果
2020/11/30 Javascript
python获取指定目录下所有文件名列表的方法
2015/05/20 Python
Python入门之三角函数全解【收藏】
2017/11/08 Python
python 读取.csv文件数据到数组(矩阵)的实例讲解
2018/06/14 Python
python顺序的读取文件夹下名称有序的文件方法
2018/07/11 Python
Python元组 tuple的概念与基本操作详解【定义、创建、访问、计数、推导式等】
2019/10/30 Python
Django权限设置及验证方式
2020/05/13 Python
详解python3类型注释annotations实用案例
2021/01/20 Python
Sneaker Studio乌克兰:购买运动鞋
2018/03/26 全球购物
StubHub澳大利亚:购买或出售您的门票
2019/08/01 全球购物
运动会开幕式邀请函
2014/02/03 职场文书
护理学应聘自荐书范文
2014/02/05 职场文书
求职信模板
2014/05/23 职场文书
物业管理专业自荐信
2014/07/01 职场文书
2014国庆节餐厅促销活动策划方案
2014/09/16 职场文书
2014年高二班主任工作总结
2014/12/16 职场文书
二婚主持词
2015/06/30 职场文书
2019入党申请书格式
2019/06/25 职场文书
你会写报告?产品体验报告到底该怎么写?
2019/08/14 职场文书
springBoot基于webSocket实现扫码登录
2021/06/22 Java/Android