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获取GY-85九轴模块信息示例
Dec 05 Python
python实现socket端口重定向示例
Feb 10 Python
Python中 Lambda表达式全面解析
Nov 28 Python
Python md5与sha1加密算法用法分析
Jul 14 Python
python 3.6 +pyMysql 操作mysql数据库(实例讲解)
Dec 20 Python
Python3多进程 multiprocessing 模块实例详解
Jun 11 Python
python中将zip压缩包转为gz.tar的方法
Oct 18 Python
python 实现图片旋转 上下左右 180度旋转的示例
Jan 24 Python
用python生成(动态彩色)二维码的方法(使用myqr库实现)
Jun 24 Python
Python实现K折交叉验证法的方法步骤
Jul 11 Python
python GUI库图形界面开发之PyQt5打印控件QPrinter详细使用方法与实例
Feb 28 Python
使用jupyter notebook直接打开.md格式的文件
Apr 10 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函数常用用法小结
2010/02/08 PHP
php下批量挂马和批量清马代码
2011/02/27 PHP
php实现Linux服务器木马排查及加固功能
2014/12/29 PHP
网站防止被刷票的一些思路与方法
2015/01/08 PHP
php计算一个文件大小的方法
2015/03/30 PHP
JQuery 入门实例1
2009/06/25 Javascript
基于jquery的兼容各种浏览器的iframe自适应高度的脚本
2010/08/13 Javascript
jquery实现网站超链接和图片提示效果
2013/03/21 Javascript
JavaScript 开发工具webstrom使用指南
2014/12/09 Javascript
JQuery选择器、过滤器大整理
2015/05/26 Javascript
基于javascript制作微信聊天面板
2020/08/09 Javascript
Extjs实现下拉菜单效果
2016/04/01 Javascript
详解JavaScript中this关键字的用法
2016/05/26 Javascript
Bootstrap轮播图学习使用
2017/02/10 Javascript
es7学习教程之fetch解决异步嵌套问题的方法示例
2017/07/21 Javascript
浅谈angular4 ng-content 中隐藏的内容
2017/08/18 Javascript
javascript回调函数详解
2018/02/06 Javascript
react-native-video实现视频全屏播放的方法
2018/03/19 Javascript
jQuery实现小火箭返回顶部特效
2020/02/03 jQuery
javascrpt密码强度校验函数详解
2020/03/18 Javascript
详解ES6新增字符串扩张方法includes()、startsWith()、endsWith()
2020/05/12 Javascript
vue离开当前页面触发的函数代码
2020/09/01 Javascript
Python的Flask框架应用调用Redis队列数据的方法
2016/06/06 Python
Python PyAutoGUI模块控制鼠标和键盘实现自动化任务详解
2018/09/04 Python
transform python环境快速配置方法
2018/09/27 Python
python使用正则表达式来获取文件名的前缀方法
2018/10/21 Python
django 使用 PIL 压缩图片的例子
2019/08/16 Python
基于Python计算圆周率pi代码实例
2020/03/25 Python
Pandas之缺失数据的实现
2021/01/06 Python
HTML5语义化元素你真的用对了吗
2019/08/22 HTML / CSS
企划专员岗位职责
2013/12/09 职场文书
夜不归宿检讨书
2014/02/25 职场文书
2014年预算员工作总结
2014/12/05 职场文书
祝酒词范文
2015/08/12 职场文书
PyQt5爬取12306车票信息程序的实现
2021/05/14 Python
详解SQL的窗口函数
2022/04/21 Oracle