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 相关文章推荐
有关wxpython pyqt内存占用问题分析
Jun 09 Python
使用Python写一个贪吃蛇游戏实例代码
Aug 21 Python
Python 3.x读写csv文件中数字的方法示例
Aug 29 Python
Python三级菜单的实例
Sep 13 Python
python版简单工厂模式
Oct 16 Python
对numpy 数组和矩阵的乘法的进一步理解
Apr 04 Python
浅析python的优势和不足之处
Nov 20 Python
Python实现随机创建电话号码的方法示例
Dec 07 Python
python实现可逆简单的加密算法
Mar 22 Python
python实现tail实时查看服务器日志示例
Dec 24 Python
Python+OpenCV实现将图像转换为二进制格式
Jan 09 Python
Selenium浏览器自动化如何上传文件
Apr 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
codeigniter框架批量插入数据
2014/01/09 PHP
php通过baihui网API实现读取word文档并展示
2015/06/22 PHP
浅谈PHP中pack、unpack的详细用法
2018/03/12 PHP
动态加载jquery库的方法
2014/02/12 Javascript
整理AngularJS中的一些常用指令
2015/06/16 Javascript
javascript 组合按键事件监听实现代码
2017/02/21 Javascript
JS中数组与对象的遍历方法实例小结
2018/08/14 Javascript
[06:21]2014DOTA2国际邀请赛 庆祝VG首阶段领跑;B叔为挣牛排半夜整理情报
2014/07/13 DOTA
[51:17]Mski vs VGJ.S Supermajor小组赛C组 BO3 第三场 6.3
2018/06/04 DOTA
[19:26]TNC vs EG (BO3)
2018/06/07 DOTA
Python中正则表达式的用法实例汇总
2014/08/18 Python
进一步了解Python中的XML 工具
2015/04/13 Python
在Python中使用正则表达式的方法
2015/08/13 Python
Python采用Django开发自己的博客系统
2020/09/29 Python
详谈pandas中agg函数和apply函数的区别
2018/04/20 Python
利用pyinstaller打包exe文件的基本教程
2019/05/02 Python
PyQt5响应回车事件的方法
2019/06/25 Python
pygame实现贪吃蛇游戏(上)
2019/10/29 Python
Python 列表的清空方式
2020/01/13 Python
打包PyQt5应用时的注意事项
2020/02/14 Python
有趣的Python图片制作之如何用QQ好友头像拼接出里昂
2020/04/22 Python
html5新特性与用法大全
2018/09/13 HTML / CSS
中国旅游网站:同程旅游
2016/09/11 全球购物
美国最值得信赖的宠物药房:Allivet
2019/03/23 全球购物
澳大利亚在线购买葡萄酒:The Wine Collective
2020/02/20 全球购物
主要的Ajax框架都有什么
2013/11/14 面试题
车间操作工岗位职责
2013/12/19 职场文书
幼儿园教师培训制度
2014/01/16 职场文书
农村结婚典礼司仪主持词
2014/03/14 职场文书
融资租赁计划书
2014/04/29 职场文书
给学校的建议书范文
2014/05/15 职场文书
2014离婚协议书范文两篇
2014/09/15 职场文书
授权委托书(法人单位用)
2014/09/29 职场文书
Python Flask请求扩展与中间件相关知识总结
2021/06/11 Python
SQL之各种join小结详细讲解
2021/08/04 MySQL
Python使用socket去实现TCP客户端和TCP服务端
2022/04/12 Python