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中使用第三方库xlrd来写入Excel文件示例
Apr 05 Python
使用Python对IP进行转换的一些操作技巧小结
Nov 09 Python
python模块简介之有序字典(OrderedDict)
Dec 01 Python
python 爬虫一键爬取 淘宝天猫宝贝页面主图颜色图和详情图的教程
May 22 Python
基于随机梯度下降的矩阵分解推荐算法(python)
Aug 31 Python
一看就懂得Python的math模块
Oct 21 Python
对Python random模块打乱数组顺序的实例讲解
Nov 08 Python
django 信号调度机制详解
Jul 19 Python
如何基于python实现脚本加密
Dec 28 Python
Python如何使用27行代码绘制星星图
Jul 20 Python
python代码能做成软件吗
Jul 24 Python
windows下python 3.9 Numpy scipy和matlabplot的安装教程详解
Nov 28 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初始化对象和析构函数的简单实例
2014/03/11 PHP
ThinkPHP模板替换与系统常量及应用实例教程
2014/08/22 PHP
PHP处理大量表单字段的便捷方法
2015/02/07 PHP
PHP的反射机制实例详解
2017/03/29 PHP
php编程实现简单的网页版计算器功能示例
2017/04/26 PHP
Laravel5.7框架安装与使用学习笔记图文详解
2019/04/02 PHP
laravel框架模板之公共模板、继承、包含实现方法分析
2019/08/30 PHP
JS对象与JSON格式数据相互转换
2012/02/20 Javascript
jQuery根据纬度经度查看地图处理程序
2013/05/08 Javascript
禁止拷贝网页内容的js代码
2014/01/22 Javascript
Javascript封装DOMContentLoaded事件实例
2014/06/12 Javascript
引用其它js时如何同时处理多个window.onload事件
2014/09/02 Javascript
用javascript实现自动输出网页文本
2015/07/30 Javascript
jquery结婚电子请柬特效源码分享
2015/08/21 Javascript
Bootstrap源码解读媒体对象、列表组和面板(10)
2016/12/26 Javascript
详解vuejs之v-for列表渲染
2017/06/22 Javascript
浅谈angular4实际项目搭建总结
2017/12/01 Javascript
看看“疫苗查询”小程序有温度的代码
2018/07/31 Javascript
基于nodejs的微信JS-SDK简单应用实现
2019/05/21 NodeJs
基于JS实现视频上传显示进度条
2020/05/12 Javascript
通过实例解析JavaScript常用排序算法
2020/09/02 Javascript
python访问sqlserver示例
2014/02/10 Python
Python内建数据结构详解
2016/02/03 Python
11个Python3字典内置方法大全与示例汇总
2019/05/13 Python
python web框架 django wsgi原理解析
2019/08/20 Python
Python基本语法之运算符功能与用法详解
2019/10/22 Python
Django配置Bootstrap, js实现过程详解
2020/10/13 Python
HTML高亮关键字的实现代码
2018/10/22 HTML / CSS
图片上传插件ImgUploadJS:用HTML5 File API 实现截图粘贴上传、拖拽上传
2016/01/20 HTML / CSS
ghd官网:英国ghd直发器品牌
2018/05/04 全球购物
大专生工程监理求职信
2013/10/04 职场文书
毕业生自我鉴定
2013/11/05 职场文书
导师工作推荐信范文
2014/05/17 职场文书
天下第一关导游词
2015/02/06 职场文书
Redis如何使用乐观锁(CAS)保证数据一致性
2022/03/25 Redis
PHP面试题 wakeup魔法 Ezpop pop序列化与反序列化
2022/04/11 PHP