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实现进程间通信简单实例
Jul 23 Python
Python中获取对象信息的方法
Apr 27 Python
python根据日期返回星期几的方法
Jul 06 Python
使用FastCGI部署Python的Django应用的教程
Jul 22 Python
利用Celery实现Django博客PV统计功能详解
May 08 Python
Windows下anaconda安装第三方包的方法小结(tensorflow、gensim为例)
Apr 05 Python
基于python的多进程共享变量正确打开方式
Apr 28 Python
Django model序列化为json的方法示例
Oct 16 Python
Python实现非正太分布的异常值检测方式
Dec 09 Python
Python如何使用字符打印照片
Jan 03 Python
使用Python第三方库pygame写个贪吃蛇小游戏
Mar 06 Python
python 利用matplotlib在3D空间绘制二次抛物面的案例
Feb 06 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之require/include顺序 推荐
2011/01/02 PHP
php中解析带中文字符的url函数分享
2015/01/20 PHP
thinkPHP的表达式查询用法详解
2016/09/14 PHP
Jquery幻灯片特效代码分享--打开页面随机选择切换方式(3)
2015/08/15 Javascript
通过js获取上传的图片信息(临时保存路径,名称,大小)然后通过ajax传递给后端的方法
2015/10/01 Javascript
基于JavaScript实现Json数据根据某个字段进行排序
2015/11/24 Javascript
jquery模拟实现鼠标指针停止运动事件
2016/01/12 Javascript
Jquery给当前页或者跳转后页面的导航栏添加选中后样式的实例
2016/12/08 Javascript
使用react-router4.0实现重定向和404功能的方法
2017/08/28 Javascript
JavaScript对象的浅拷贝与深拷贝实例分析
2018/07/25 Javascript
简单了解node npm cnpm的具体使用方法
2019/02/27 Javascript
微信小程序—setTimeOut定时器的问题及解决
2019/07/26 Javascript
vue 指令和过滤器的基本使用(品牌管理案例)
2019/11/04 Javascript
Webpack5正式发布,有哪些新特性
2020/10/12 Javascript
Vue解决移动端弹窗滚动穿透问题
2020/12/15 Vue.js
Python高效编程技巧
2013/01/07 Python
简单的连接MySQL与Python的Bottle框架的方法
2015/04/30 Python
Python中条件判断语句的简单使用方法
2015/08/21 Python
[原创]使用豆瓣提供的国内pypi源
2017/07/02 Python
python模块之time模块(实例讲解)
2017/09/13 Python
Python引用计数操作示例
2018/08/23 Python
详解Python Matplot中文显示完美解决方案
2019/03/07 Python
python绘制已知点的坐标的直线实例
2019/07/04 Python
Python 列表去重去除空字符的例子
2019/07/20 Python
python实现计算图形面积
2021/02/22 Python
CPB肌肤之钥美国官网:Clé de Peau Beauté
2017/09/05 全球购物
高性能装备提升营地:Kammok
2019/02/27 全球购物
美国户外烹饪产品购物网站:Outdoor Cooking
2020/01/10 全球购物
运动会通讯稿400字
2014/01/28 职场文书
项目合作协议书
2014/04/16 职场文书
职务说明书范文
2014/05/07 职场文书
行政人事主管岗位职责
2015/04/11 职场文书
十一月早安语录:把心放轻,人生就是一朵自在的云
2019/11/04 职场文书
sql server 累计求和实现代码
2022/02/28 SQL Server
Java中的继承、多态以及封装
2022/04/11 Java/Android
MySQL远程无法连接的一些常见原因总结
2022/09/23 MySQL