51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 874|回复: 0

使用 Python Turtle 制作贪吃蛇游戏

[复制链接]
  • TA的每日心情
    无聊
    3 小时前
  • 签到天数: 919 天

    连续签到: 1 天

    [LV.10]测试总司令

    发表于 2022-6-8 10:04:11 | 显示全部楼层 |阅读模式
    贪吃蛇游戏是一款于 1976 年由格雷姆林工业(Gremlin Industries)开发,并由世嘉游戏(SEGA)发行的街机迷宫游戏。这款游戏曾经登上多款诺基亚黑白机,对上世纪的玩家来说颇有怀旧感。
      贪吃蛇的玩法
      玩家在贪吃蛇游戏中使用方向键操作贪吃蛇前进,尽可能收集食物取得高分。贪吃蛇在获取食物后,身体长度会进一步加长,而当玩家不小心撞向墙壁或自己时,游戏便结束。
      对 Python 初学者而言,玩法逻辑较为简单的贪吃蛇游戏正适合用来练习 Turtle 框架,而这款以 Python 为核心的游戏将会使用以下三个库:
      ·Turtle - 用于在虚拟画布中绘制图形
      · Time - 计算游戏中的用时
      · Random - 在 Python 中生成随机数字,对应随机出现的食物
      这篇教程将使用 Lightly 在线编写 Python 代码,无需下载任何应用或安装环境依赖即可在浏览器中编程。
      第一步:导入模块
      在开始其他编写其他代码前,我们需要使用 import 代码分别导入 turtle、time 及 random 等模块。由于这些模块都已预安装在 Python 中,我们只需在代码中导入即可。若模块缺失,你也可以在 Lightly 中使用 Quick Fix 进行快速安装。

    第二步:设置游戏界面
      完成模块导入后,我们需要绘制游戏窗口、蛇头及食物等游戏内容,同时也需要在顶部显示游戏得分。
    1.  # 绘制窗口
    2.   wn = turtle.Screen()
    3.   wn.title("Snake Game")
    4.   wn.bgcolor("blue")
    5.   # 用户可以自行调整窗口的长度与宽度
    6.   wn.setup(width=600, height=600)
    7.   wn.tracer(0)
    8.   # 蛇头
    9.   head = turtle.Turtle()
    10.   head.shape("square")
    11.   head.color("white")
    12.   head.penup()
    13.   head.goto(0, 0)
    14.   head.direction = "Stop"
    15.   # 游戏中的食物
    16.   food = turtle.Turtle()
    17.   colors = random.choice(['red', 'green', 'black'])
    18.   shapes = random.choice(['square', 'triangle', 'circle'])
    19.   food.speed(0)
    20.   food.shape(shapes)
    21.   food.color(colors)
    22.   food.penup()
    23.   food.goto(0, 100)
    24.   pen = turtle.Turtle()
    25.   pen.speed(0)
    26.   pen.shape("square")
    27.   pen.color("white")
    28.   pen.penup()
    29.   pen.hideturtle()
    30.   pen.goto(0, 250)
    31.   pen.write("得分 : 0 最高得分 : 0", align="center",
    32.   font=("candara", 24, "bold"))
    复制代码
    代码效果:

    第三步:监听按键
      添加物体后还需要监听按键,才能通过按键控制蛇的动作。在这个游戏中,我们使用 WASD 四键分别控制上下左右移动。
    1.  # 设定按键方向
    2.   def group():
    3.       if head.direction != "down":
    4.           head.direction = "up"
    5.   def godown():
    6.       if head.direction != "up":
    7.           head.direction = "down"
    8.   def goleft():
    9.       if head.direction != "right":
    10.           head.direction = "left"
    11.   def goright():
    12.       if head.direction != "left":
    13.           head.direction = "right"
    14.   def move():
    15.       if head.direction == "up":
    16.           y = head.ycor()
    17.           head.sety(y+20)
    18.       if head.direction == "down":
    19.           y = head.ycor()
    20.           head.sety(y-20)
    21.       if head.direction == "left":
    22.           x = head.xcor()
    23.           head.setx(x-20)
    24.       if head.direction == "right":
    25.           x = head.xcor()
    26.           head.setx(x+20)
    27.   wn.listen()
    28.   wn.onkeypress(group, "w")
    29.   wn.onkeypress(godown, "s")
    30.   wn.onkeypress(goleft, "a")
    31.   wn.onkeypress(goright, "d")
    复制代码
     第四步:完善游戏机制
      我们现在已经可以通过键盘按键控制贪吃蛇移动,但我们还需要进一步添加游戏机制,让游戏变得更完善。例如:改变蛇身的长度和颜色、贪吃蛇吃下食物后计分、检查蛇头碰撞情况、计分并保存最高分等。
      游戏最终的效果:





    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-3-29 13:21 , Processed in 0.066697 second(s), 25 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表