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 相关文章推荐
django基础之数据库操作方法(详解)
May 24 Python
Python3学习笔记之列表方法示例详解
Oct 06 Python
Mac中Python 3环境下安装scrapy的方法教程
Oct 26 Python
Python使用Selenium模块模拟浏览器抓取斗鱼直播间信息示例
Jul 18 Python
如何使用Python进行OCR识别图片中的文字
Apr 01 Python
Python后台开发Django会话控制的实现
Apr 15 Python
python3文件复制、延迟文件复制任务的实现方法
Sep 02 Python
Python识别html主要文本框过程解析
Feb 18 Python
python tqdm 实现滚动条不上下滚动代码(保持一行内滚动)
Feb 19 Python
Python通过正则库爬取淘宝商品信息代码实例
Mar 02 Python
python实现npy格式文件转换为txt文件操作
Jul 01 Python
python自动化之如何利用allure生成测试报告
May 02 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
漫威DC御用漫画家去世 他的表情包曾走红网络
2020/04/09 欧美动漫
德生PL330测评
2021/03/02 无线电
那些年一起学习的PHP(一)
2012/03/21 PHP
10款PHP开源商城系统汇总介绍
2015/07/23 PHP
关于PHP虚拟主机概念及如何选择稳定的PHP虚拟主机
2018/11/20 PHP
JS操作XML中DTD介绍及使用方法分析
2019/07/04 PHP
URI、URL和URN之间的区别与联系
2006/12/20 Javascript
浅谈javascript中基本包装类型
2015/06/03 Javascript
移动端js触摸事件详解
2016/09/18 Javascript
EasyUi 打开对话框后控件赋值及赋值后不显示的问题解决办法
2017/01/19 Javascript
在javascript中,null>=0 为真,null==0却为假,null的值详解
2017/02/22 Javascript
nodejs个人博客开发第五步 分配数据
2017/04/12 NodeJs
基于layer.js实现收货地址弹框选择然后返回相应的地址信息
2017/05/26 Javascript
微信小程序wepy框架笔记小结
2018/08/08 Javascript
一步一步的了解webpack4的splitChunk插件(小结)
2018/09/17 Javascript
js中获取URL参数的共用方法getRequest()方法实例详解
2018/10/24 Javascript
Angular单元测试之事件触发的实现
2020/01/20 Javascript
ES6箭头函数和扩展实例分析
2020/05/23 Javascript
[04:38]完美世界携手游戏风云打造 卡尔工作室饰品系统篇
2013/04/25 DOTA
使用python提取html文件中的特定数据的实现代码
2013/03/24 Python
python支持断点续传的多线程下载示例
2014/01/16 Python
Python绑定方法与非绑定方法详解
2017/08/18 Python
pyqt5自定义信号实例解析
2018/01/31 Python
Python 实现12306登录功能实例代码
2018/02/09 Python
美国新娘礼品店:The Paisley Box
2020/09/08 全球购物
使用索引有什么好处
2016/07/27 面试题
新员工欢迎词
2014/01/12 职场文书
装修致歉信
2014/01/15 职场文书
小学班级口号
2014/06/09 职场文书
大学生职业生涯规划大赛作品(精品)
2014/09/17 职场文书
导游欢迎词范文
2015/01/23 职场文书
爱心捐助活动总结
2015/05/09 职场文书
2016年教育局“我们的节日——端午节”主题活动总结
2016/04/01 职场文书
详细介绍python操作RabbitMq
2022/04/12 Python
CSS文本阴影 text-shadow 悬停效果详解
2022/05/25 HTML / CSS
项目中Nginx多级代理是如何获取客户端的真实IP地址
2022/05/30 Servers