• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Python使用海龟绘图实现贪吃蛇游戏

    在实现贪吃蛇游戏时,首先需要使用python内置的turtle模块来实现创建游戏窗体与键盘按键的监听工作,然后使用freegames模块进行贪吃蛇的绘制工作。

    1、turtle模块

    turtle模块是python的内置模块,所以在使用前需要使用import导入该模块。代码如下:

    import turtle

    (1) 创建游戏窗体可以使用turtle模块中的setup()方法来实现。语法格式如下:

    turtle.setup(width=_CFG["width"],height=_CFG["height"],startx=_CFG["leftright"],starty=_CFG["topbottom"])

    参数说明如下:

    创建游戏窗体的关键代码如下:

    import turtle      # 导入绘图海龟模块
    turtle.setup(420, 420)      # 创建窗体大小
    turtle.done()       # 停止画笔绘制,但绘图窗体不关闭

    (2)通过turtle模块中的onkey()方法可以实现对应键盘中按键的监听工作。语法格式如下:

    turtle.onkey(fun,key)

    参数说明如下:

    注意:在使用onkey()方法实现键盘的监听时,还需要调用turtle.listen()方法即可实现键盘按键的监听。

    实现键盘中上、下、左、右按键监听工作的关键代码如下:

    turtle.listen()                        # 事件监听器
    turtle.onkey(lambda: change(10, 0), 'Right')    # 按键盘右键,蛇向右走
    turtle.onkey(lambda: change(-10, 0), 'Left')    # 按键盘左键,蛇向左走
    turtle.onkey(lambda: change(0, 10), 'Up')       # 按键盘上键,蛇向上走
    turtle.onkey(lambda: change(0, -10), 'Down')    # 按键盘下键,蛇向下走

    2、freegames模块

    freegames模块是第三方模块,所以在使用前需要先通过以下命令进行模块的安装:

    pip install freegames

    模块安装完成以后,首先需要导入freegames模块中的vector与square函数。代码如下:

    from freegames import vector,square  # 导入向量类与绘图函数

    (1)通过freegames模块中的vector()类可以根据指定的x、y坐标创建一个二维向量对象。vector()类的语法格式如下:

    class freegames.vector(x,y)

    参数说明如下:

    实现定义游戏中的食物位置、蛇位置以及蛇移动的位置与距离。关键代码如下:

    food = vector(0,0)        # 食物
    snake = [vector(10, 0)]   # 蛇
    position = vector(0, -10) # 移动位置,一步的距离为10

    (2)通过freegames模块中square函数可以实现在(x,y)处绘制指定边长大小的正方形,并填充指定颜色。square()函数的语法格式如下:

    freegames.square(x,y,size,name)

    参数说明如下:

    实现绘制游戏中食物、蛇。关键代码如下:

    square(body.x, body.y, 9, 'black') # 绘制黑色蛇
    square(food.x, food.y, 9, 'green')     # 绘制绿色食物

    实例

    from random import randrange          # 导入随机函数
    from freegames import vector,square  # 导入向量函数与绘图函数
    import turtle                         # 导入绘图海龟模块
    
    food = vector(0,0)        # 食物
    snake = [vector(10, 0)]   # 蛇
    position = vector(0, -10) # 移动位置,一步的距离为10
    
    def change(x, y):        # 改变蛇的移动方向
        position.x = x
        position.y = y
    
    def is_inside(head):        # 判断蛇头是否在窗体内
        return -200  head.x  190 and -200  head.y  190
    
    def move():                   # 可以让蛇移动的方法
        head = snake[-1].copy()    # 确定蛇头的位置
        head.move(position)        # 移动一步
        if not is_inside(head) or head in snake:   # 如果蛇的头部位于边界外或者蛇头在蛇的身体中
            square(head.x, head.y, 9, 'red')     # 绘制红色蛇头,说明游戏结束
            turtle.update()                      # 更新
            return
        snake.append(head)                       # 更新蛇的位置
        if head == food:                      # 如果蛇吃到食物
            print('Snake:', len(snake))       # 根据蛇的长度进行加分
            food.x = randrange(-15, 15) * 10  # 随机生成食物x坐标
            food.y = randrange(-15, 15) * 10  # 随机生成食物y坐标
        else:
            snake.pop(0)            # 移除蛇走过的坐标
        turtle.clear()              # 清空蛇走过的位置
        for body in snake:          # 循环遍历蛇的坐标
            square(body.x, body.y, 9, 'black') # 绘制黑色蛇
        square(food.x, food.y, 9, 'green')     # 绘制绿色食物
        turtle.update()
        turtle.ontimer(move, 100)           # 定时执行move函数
    
    if __name__ == '__main__':                  # 程序入口
        turtle.setup(420, 420, 370, 0)          # 创建窗体大小
        turtle.hideturtle()                     # 隐藏箭头显示
        turtle.tracer(False)                   # 关闭绘画效果
        move()          # 调用让蛇移动的方法
        turtle.listen()                        # 事件监听器
        turtle.onkey(lambda: change(10, 0), 'Right')    # 按键盘右键,蛇向右走
        turtle.onkey(lambda: change(-10, 0), 'Left')    # 按键盘左键,蛇向左走
        turtle.onkey(lambda: change(0, 10), 'Up')       # 按键盘上键,蛇向上走
        turtle.onkey(lambda: change(0, -10), 'Down')    # 按键盘下键,蛇向下走
        turtle.done()   # 停止画笔绘制,但绘图窗体不关闭

    更多关于python游戏的精彩文章请点击查看以下专题:

    python俄罗斯方块游戏集合

    python经典小游戏汇总

    python微信跳一跳游戏集合

    更多有趣的经典小游戏实现专题,分享给大家:

    C++经典小游戏汇总

    JavaScript经典游戏 玩不停

    java经典小游戏汇总

    javascript经典小游戏汇总

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    您可能感兴趣的文章:
    • 中秋快到了利用python画个月亮和月饼
    • 使用Python为中秋节绘制一块美味的月饼
    • python用海龟绘图写贪吃蛇游戏
    • 中秋快到了利用 python 绘制中秋礼物
    上一篇:Python turtle实现贪吃蛇游戏
    下一篇:python用海龟绘图写贪吃蛇游戏
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Python使用海龟绘图实现贪吃蛇游戏 Python,使用,海龟,绘图,实现,