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中用Descriptor实现类级属性(Property)详解
Sep 18 Python
Python通过PIL获取图片主要颜色并和颜色库进行对比的方法
Mar 19 Python
详解Python操作RabbitMQ服务器消息队列的远程结果返回
Jun 30 Python
python中requests库session对象的妙用详解
Oct 30 Python
influx+grafana自定义python采集数据和一些坑的总结
Sep 17 Python
Python实现的排列组合、破解密码算法示例
Apr 12 Python
Python操作SQLite/MySQL/LMDB数据库的方法
Nov 07 Python
Python实现图片批量加入水印代码实例
Nov 30 Python
jupyter notebook清除输出方式
Apr 10 Python
python实现批量命名照片
Jun 18 Python
如何使用Cython对python代码进行加密
Jul 08 Python
Docker如何部署Python项目的实现详解
Oct 26 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学习之数组的定义和填充
2011/04/17 PHP
PHP实现登录搜狐广告获取广告联盟数据的方法【附demo源码】
2016/10/14 PHP
替换php字符串中的单引号为双引号的方法
2017/02/16 PHP
CI框架(CodeIgniter)操作redis的方法详解
2018/01/25 PHP
自制轻量级仿jQuery.boxy对话框插件代码
2010/10/26 Javascript
jQuery 过滤not()与filter()实例代码
2012/05/10 Javascript
jquery struts 验证唯一标识(公用方法)
2013/03/27 Javascript
JS中的log对象获取以及debug的写法介绍
2014/03/03 Javascript
jquery禁用右键单击功能屏蔽F5刷新
2014/03/17 Javascript
jquery 显示*天*时*分*秒实现时间计时器
2014/05/07 Javascript
JavaScript中Math对象的方法介绍
2017/01/05 Javascript
canvas仿iwatch时钟效果
2017/03/06 Javascript
js判断PC端与移动端跳转
2020/12/24 Javascript
Vue.js tab实现选项卡切换
2017/05/16 Javascript
使用OPENLAYERS3实现点选的方法
2020/09/24 Javascript
Three.js如何实现雾化效果示例代码
2017/09/27 Javascript
JavaScript显式数据类型转换详解
2019/03/18 Javascript
解决Angularjs异步操作后台请求用$q.all排列先后顺序问题
2019/11/29 Javascript
python迭代器的使用方法实例
2013/11/21 Python
跟老齐学Python之永远强大的函数
2014/09/14 Python
python实现线程池的方法
2015/06/30 Python
编写Python爬虫抓取豆瓣电影TOP100及用户头像的方法
2016/01/20 Python
python中requests小技巧
2017/05/10 Python
Python批处理删除和重命名文件夹的实例
2018/07/11 Python
Python搭建HTTP服务过程图解
2019/12/14 Python
使用HTML5进行SVG矢量图形绘制的入门教程
2016/02/19 HTML / CSS
Html5导航栏吸顶方案原理与对比实现
2020/06/10 HTML / CSS
amazeui时间组件的实现示例
2020/08/18 HTML / CSS
在线购买廉价折扣书籍和小说:BookOutlet.com
2018/02/19 全球购物
坚定理想信念心得体会
2014/03/11 职场文书
感恩父母的演讲稿
2014/05/06 职场文书
破坏寝室公物检讨书
2014/11/17 职场文书
顶岗实习计划书
2015/01/16 职场文书
银行求职信范文怎么写
2015/03/20 职场文书
医药公司开票员岗位职责
2015/04/15 职场文书
村级干部党员公开承诺事项
2015/05/04 职场文书