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的Django框架中更新数据库数据的方法
Jul 17 Python
Python使用sorted排序的方法小结
Jul 28 Python
Python爬虫实现百度图片自动下载
Feb 04 Python
详解python的sorted函数对字典按key排序和按value排序
Aug 10 Python
pandas通过索引进行排序的示例
Nov 16 Python
Python实战购物车项目的实现参考
Feb 20 Python
Python 3.8中实现functools.cached_property功能
May 29 Python
python程序变成软件的实操方法
Jun 24 Python
在django-xadmin中APScheduler的启动初始化实例
Nov 15 Python
Python 序列化和反序列化库 MarshMallow 的用法实例代码
Feb 25 Python
python中pickle模块浅析
Dec 29 Python
python 基于pygame实现俄罗斯方块
Mar 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
php 多关键字 高亮显示实现代码
2012/04/23 PHP
基于php实现随机合并数组并排序(原排序)
2015/11/26 PHP
PHP实现自动识别原编码并对字符串进行编码转换的方法
2016/07/13 PHP
js中通过split函数分割字符串成数组小例子
2013/09/21 Javascript
Jquery操作js数组及对象示例代码
2014/05/11 Javascript
window.location.href的用法(动态输出跳转)
2014/08/09 Javascript
jquery比较简洁的软键盘特效实现方法
2015/03/19 Javascript
jquery 实现输入邮箱时自动补全下拉提示功能
2015/10/04 Javascript
jQuery-1.9.1源码分析系列(十一)DOM操作续之克隆节点
2015/12/01 Javascript
javascript实现文字无缝滚动
2016/12/27 Javascript
jQuery实现全选、反选和不选功能
2017/08/16 jQuery
Vue中使用的EventBus有生命周期
2018/07/12 Javascript
jQuery插件实现非常实用的tab栏切换功能【案例】
2019/02/18 jQuery
利用百度echarts实现图表功能简单入门示例【附源码下载】
2019/06/10 Javascript
浅谈layui 表单元素的选中问题
2019/10/25 Javascript
VUE使用 wx-open-launch-app 组件开发微信打开APP功能
2020/08/11 Javascript
vue实现图书管理系统
2020/12/29 Vue.js
[00:43]拉比克至宝魔导师密钥展示
2018/12/20 DOTA
Python中的jquery PyQuery库使用小结
2014/05/13 Python
异步任务队列Celery在Django中的使用方法
2018/06/07 Python
Python Tkinter模块实现时钟功能应用示例
2018/07/23 Python
tensorflow使用神经网络实现mnist分类
2018/09/08 Python
Python Image模块基本图像处理操作小结
2019/04/13 Python
python买卖股票的最佳时机(基于贪心/蛮力算法)
2019/07/05 Python
Pytorch反向求导更新网络参数的方法
2019/08/17 Python
python线程的几种创建方式详解
2019/08/29 Python
Django框架反向解析操作详解
2019/11/28 Python
在tensorflow中实现去除不足一个batch的数据
2020/01/20 Python
使用卷积神经网络(CNN)做人脸识别的示例代码
2020/03/27 Python
Python join()函数原理及使用方法
2020/11/14 Python
Pycharm 设置默认解释器路径和编码格式的操作
2021/02/05 Python
AmazeUI 导航条的实现示例
2020/08/14 HTML / CSS
消费者投诉书范文
2015/07/02 职场文书
团支部组织委员竞选稿
2015/11/21 职场文书
2016继续教育培训学习心得体会
2016/01/19 职场文书
Python关于OS文件目录处理的实例分享
2021/05/23 Python