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二分法实现实例
Nov 21 Python
Python语言实现将图片转化为html页面
Dec 06 Python
DataFrame 将某列数据转为数组的方法
Apr 13 Python
Python Opencv任意形状目标检测并绘制框图
Jul 23 Python
python实现各种插值法(数值分析)
Jul 30 Python
用Python批量把文件复制到另一个文件夹的实现方法
Aug 16 Python
python3 实现的对象与json相互转换操作示例
Aug 17 Python
对python中UDP,socket的使用详解
Aug 22 Python
python线程的几种创建方式详解
Aug 29 Python
pytorch SENet实现案例
Jun 24 Python
python实现腾讯滑块验证码识别
Apr 27 Python
Python实现随机生成迷宫并自动寻路
Jun 13 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
redis 队列操作的例子(php)
2012/04/12 PHP
PHP递归实现层级树状展开
2016/04/01 PHP
php正则表达式使用方法整理集合
2020/01/31 PHP
php redis setnx分布式锁简单原理解析
2020/10/23 PHP
Uglifyjs(JS代码优化工具)入门 安装使用
2020/04/13 Javascript
qq悬浮代码(兼容各个浏览器)
2014/01/29 Javascript
jQuery对象初始化的传参方式
2015/02/26 Javascript
Bootstrap中的Dropdown下拉菜单更改为悬停(hover)触发
2016/08/31 Javascript
Javascript使用uploadify来实现多文件上传
2016/11/16 Javascript
vue+node+webpack环境搭建教程
2017/11/05 Javascript
详解Javascript 中的 class、构造函数、工厂函数
2017/12/20 Javascript
vue实现树形菜单效果
2018/03/19 Javascript
jsonp跨域及实现百度首页联想功能的方法
2018/08/30 Javascript
Node.JS在命令行中检查Chrome浏览器是否安装并打开指定网址
2019/05/21 Javascript
JS秒杀倒计时功能完整实例【使用jQuery3.1.1】
2019/09/03 jQuery
vue 页面回退mounted函数不执行的解决方案
2020/07/26 Javascript
vue 项目软键盘回车触发搜索事件
2020/09/09 Javascript
解决vue prop传值default属性如何使用,为何不生效的问题
2020/09/21 Javascript
python用ConfigObj读写配置文件的实现代码
2013/03/04 Python
PHP网页抓取之抓取百度贴吧邮箱数据代码分享
2016/04/13 Python
浅谈python抛出异常、自定义异常, 传递异常
2016/06/20 Python
python制作简单五子棋游戏
2019/06/18 Python
python爬虫之遍历单个域名
2019/11/20 Python
python list数据等间隔抽取并新建list存储的例子
2019/11/27 Python
pytorch实现CNN卷积神经网络
2020/02/19 Python
Python基于requests实现模拟上传文件
2020/04/21 Python
在校生汽车维修实习自我鉴定
2013/09/19 职场文书
消防应急演练方案
2014/02/12 职场文书
小学二年级学生评语
2014/04/21 职场文书
给校长的建议书600字
2014/05/15 职场文书
促销活动总结模板
2014/07/01 职场文书
房屋租赁合同解除协议书
2014/10/11 职场文书
天坛导游词
2015/02/02 职场文书
2016学校元旦晚会经典开场白台词
2015/12/03 职场文书
筑梦中国心得体会
2016/01/18 职场文书
导游词之天下银坑景区
2019/11/21 职场文书