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 相关文章推荐
Perl中著名的Schwartzian转换问题解决实现
Jun 02 Python
python3操作微信itchat实现发送图片
Feb 24 Python
python在每个字符后添加空格的实例
May 07 Python
使用 Python 实现文件递归遍历的三种方式
Jul 18 Python
Python面向对象之类的内置attr属性示例
Dec 14 Python
对python中dict和json的区别详解
Dec 18 Python
详解pandas使用drop_duplicates去除DataFrame重复项参数
Aug 01 Python
python入门之井字棋小游戏
Mar 05 Python
python爬虫要用到的库总结
Jul 28 Python
Python函数递归调用实现原理实例解析
Aug 11 Python
Python定时任务框架APScheduler原理及常用代码
Oct 05 Python
如何基于Python pygame实现动画跑马灯
Nov 18 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
欧美媒体选出10年前最流行的17部动画
2017/01/18 日漫
PHP魔术引号所带来的安全问题分析
2014/07/15 PHP
ThinkPHP验证码和分页实例教程
2014/08/22 PHP
如何使用Gitblog和Markdown建自己的博客
2015/07/31 PHP
PHP使用MPDF类生成PDF的方法
2015/12/08 PHP
通过PHP实现获取访问用户IP
2020/05/09 PHP
php7 新增功能实例总结
2020/05/25 PHP
番茄的表单验证类代码修改版
2008/07/18 Javascript
javascript concat数组累加 示例
2009/09/03 Javascript
克隆javascript对象的三个方法小结
2011/01/12 Javascript
在Iframe中获取父窗口中表单的值(示例代码)
2013/11/22 Javascript
js父页面与子页面不同时显示的方法
2014/10/16 Javascript
5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
2015/01/29 Javascript
js实现异步循环实现代码
2016/02/16 Javascript
jquery遍历标签中自定义的属性方法
2016/09/17 Javascript
JavaScript实现经典排序算法之冒泡排序
2016/12/28 Javascript
微信小程序 本地数据读取实例
2017/04/27 Javascript
解读ES6中class关键字
2017/11/20 Javascript
利用ES6实现单例模式及其应用详解
2017/12/09 Javascript
开发用到的js封装方法(20种)
2018/10/12 Javascript
[14:25]教你分分钟做大人:主宰(HEROS)
2014/12/08 DOTA
[01:03:42]VP vs VGJ.S 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python实现从一组颜色中找出与给定颜色最接近颜色的方法
2015/03/19 Python
python 删除列表里所有空格项的方法总结
2018/04/18 Python
Django中日期处理注意事项与自定义时间格式转换详解
2018/08/06 Python
python实现的MySQL增删改查操作实例小结
2018/12/19 Python
详解python编译器和解释器的区别
2019/06/24 Python
python笔记之mean()函数实现求取均值的功能代码
2019/07/05 Python
基于Python获取照片的GPS位置信息
2020/01/20 Python
英国创新设计文具、卡片和礼品包装网站:Paperchase
2018/07/14 全球购物
Booking.com德国:预订最好的酒店和住宿
2020/02/16 全球购物
土木工程个人自荐信范文
2013/11/30 职场文书
电大会计学自我鉴定
2014/02/06 职场文书
关于长城的导游词
2015/01/30 职场文书
2016年重阳节慰问信
2015/12/01 职场文书
HTML中table表格拆分合并(colspan、rowspan)
2021/04/07 HTML / CSS