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之有点简约的元组
Sep 24 Python
详解Python中contextlib上下文管理模块的用法
Jun 28 Python
python 读取excel文件生成sql文件实例详解
May 12 Python
Python数据结构之单链表详解
Sep 12 Python
简单了解OpenCV是个什么东西
Nov 10 Python
Django中STATIC_ROOT和STATIC_URL及STATICFILES_DIRS浅析
May 08 Python
如何用Python合并lmdb文件
Jul 02 Python
对python 多个分隔符split 的实例详解
Dec 20 Python
Python3.5运算符操作实例详解
Apr 25 Python
Python Selenium参数配置方法解析
Jan 19 Python
Python同时处理多个异常的方法
Jul 28 Python
关于pycharm 切换 python3.9 报错 ‘HTMLParser‘ object has no attribute ‘unescape‘ 的问题
Nov 24 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+MySQL5.0中文乱码解决方法
2006/11/20 PHP
php csv操作类代码
2009/12/14 PHP
php curl 登录163邮箱并抓取邮箱好友列表的代码(经测试)
2011/04/07 PHP
PHP 获取远程网页内容的代码(fopen,curl已测)
2011/06/06 PHP
php设计模式 Decorator(装饰模式)
2011/06/26 PHP
PHP实现的一致性哈希算法完整实例
2015/11/14 PHP
PHP实现批量上传单个文件
2015/12/29 PHP
PHP6新特性分析
2016/03/03 PHP
ExtJS Window 最小化的一种方法
2009/11/18 Javascript
JavaScript DOM 学习第七章 表单的扩展
2010/02/19 Javascript
jQuery ajax serialize() 方法使用示例
2014/11/02 Javascript
浅谈js的setInterval事件
2014/12/05 Javascript
jQuery原理系列-常用Dom操作详解
2016/06/07 Javascript
jQuery实例—选项卡的简单实现(js源码和jQuery)
2016/06/14 Javascript
jQuery自制提示框tooltip改进版
2016/08/01 Javascript
Bootstrap选项卡动态切换效果
2016/11/28 Javascript
微信小程序 ecshop地址三级联动实现实例代码
2017/02/28 Javascript
微信小程序使用toast消息对话框提示用户忘记输入用户名或密码功能【附源码下载】
2017/12/09 Javascript
Vue利用canvas实现移动端手写板的方法
2018/05/03 Javascript
浅谈layui 数据表格前后台传值的问题
2019/09/12 Javascript
JS实现表单中点击小眼睛显示隐藏密码框中的密码
2020/04/13 Javascript
ssm+vue前后端分离框架整合实现(附源码)
2020/07/08 Javascript
JavaScript 获取滚动条位置并将页面滑动到锚点
2021/02/08 Javascript
Python Deque 模块使用详解
2014/07/04 Python
分析python动态规划的递归、非递归实现
2018/03/04 Python
Python简单实现查找一个字符串中最长不重复子串的方法
2018/03/26 Python
css 元素选择器的简单实例
2016/05/23 HTML / CSS
轻金属冶金专业毕业生自荐信
2013/11/02 职场文书
小学少先队活动方案
2014/02/18 职场文书
食品安全汇报材料
2014/08/18 职场文书
2015元旦家电促销活动策划方案
2014/12/09 职场文书
婚庆答谢词
2015/01/04 职场文书
党小组考察意见
2015/06/02 职场文书
2015高中教师个人工作总结
2015/07/21 职场文书
三种方式清除vue路由跳转router-link的历史记录
2022/04/10 Vue.js
HTML实现仿Windows桌面主题特效的实现
2022/06/28 HTML / CSS