0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何用python实现贪吃蛇游戏

马哥Linux运维 来源:小张Python 作者:zeroing 2021-09-29 18:05 次阅读

贪吃蛇 具体实现部分,大致分为三个模块来介绍:游戏初始化、游戏运行(蛇移动、吃掉食物)、游戏结束

1,游戏初始化

首先,需对游戏中的 蛇、食物、游戏边界、各元素颜色属性、得分记录、速度记录 等进行初始化,初始的窗口大小设为(600,480),通过宽度为 1 的黑线将游戏窗口分为数个小方格(每个小方格大小为 (20,20))

7f7235b8-20d0-11ec-82a8-dac502259ad0.png

初始化的蛇大小占连续3个小方格;食物占 1个小方格、初始时食物随机放置在窗口内某一坐标处(当然需要排除蛇身区域外)

7fb95bf0-20d0-11ec-82a8-dac502259ad0.png

2,游戏得分

当游戏开始时需给与 **蛇 ** 运动方向设定为一个初始参数 ,这里以二维元组形式存储,赋值给变量 p,共分为四种情况:

p = (1,0),向右;

P = (0,-1),向下;

p = (0,1),向上;

p = (-1,0),向左;

配合键盘事件响应,当用户按下 上(w)、下(s)、左(a)、右(d)键时,程序会执行相应操作

for event in pygame.event.get():#事件刷新 if event.type == QUIT: sys.exit()#退出 elif event.type == KEYDOWN: if event.key == K_RETURN: if game_over: start = True game_over = False b =True snake = init_snake() food = create_food(snake) food_style = get_food_style() pos = (1,0)#方向 score = 0 last_move_time = time.time()#上次移动时间

elif event.key == K_SPACE: if not game_over: pause = not pause elif event.key in(K_w,K_UP): #判断防止蛇向上移动时按了向下键,导致Game Over if b and not pos[1]: pos = (0,-1) b = False elif event.key in (K_s,K_DOWN): if b and not pos[1]: pos =(0,1) b = False elif event.key in (K_a,K_LEFT): if b and not pos[0]: pos = (-1,0) b =False elif event.key in (K_d,K_RIGHT): if b and not pos[0]: pos =(1,0) b = False

蛇身移动

程序将 蛇 所占所有小方格坐标依次存储在一个队列中,移动一次,队列完成一次进出操作:队尾删除一个元素,对列头部插入蛇头所在的新方格坐标;

7ff25464-20d0-11ec-82a8-dac502259ad0.png

吃到食物

每吃到一次食物,蛇身多增加一个小方格区域,其队列插入一个新元素、长度加一,

803d4b2c-20d0-11ec-82a8-dac502259ad0.png

3,游戏结束

游戏终止的边界条件为两类

1,移动区域超出窗口边界;

2,蛇头碰到蛇身;

程序中用 布尔变量 game_over来标识游戏是否结束(True或者False),每次刷新页面之前默认为 False,当游戏正常运行未发生以上两类事件时设为True 游戏运行,否则游戏结束

80a6f6a8-20d0-11ec-82a8-dac502259ad0.png

为了提高游戏体验,程序中用 score 变量表示得分,speed 来表示移动速度,得分每增加100 更新一次移动速度,随着时间推移游戏难度也不断加大

score += food_style[0] speed = orispeed - 0.03*(score//100) # 更新速度

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 代码
    +关注

    关注

    30

    文章

    4555

    浏览量

    66747
  • python
    +关注

    关注

    51

    文章

    4675

    浏览量

    83466

原文标题:100行代码,实现python贪吃蛇

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于51单片机的贪吃蛇设计

    电子发烧友网站提供《基于51单片机的贪吃蛇设计.rar》资料免费下载
    发表于 01-12 09:53 2次下载

    基于51单片机的贪吃蛇设计

    电子发烧友网站提供《基于51单片机的贪吃蛇设计.rar》资料免费下载
    发表于 01-03 10:26 0次下载

    基于51单片机的贪吃蛇游戏设计

    基于51单片机的贪吃蛇游戏设计(仿真+实物)
    发表于 01-02 09:38 2次下载

    基于FPGA的贪吃蛇游戏设计

    食物产生模块完成的任务是:每次初始化就给定一个食物坐标比如(24,10),然后蛇运动的过程中用蛇头坐标跟食物坐标对比是否重合来判断是否吃掉了食物,如果相同食物就被吃掉,然后由随机数产生新的食物坐标。
    的头像 发表于 12-18 16:14 730次阅读
    基于FPGA的<b class='flag-5'>贪吃蛇</b><b class='flag-5'>游戏</b>设计

    何用python实现RFM建模

    今天给大家分享的是如何用python实现RFM建模。 RFM模型的含义 RFM模型是衡量客户价值和客户创利能力的重要工具和手段。在众多的客户关系管理(CRM)的分析模式中,RFM模型是被广泛提到
    的头像 发表于 11-02 10:36 374次阅读
    如<b class='flag-5'>何用</b><b class='flag-5'>python</b><b class='flag-5'>实现</b>RFM建模

    基于51单片机的贪吃蛇游戏设计

    电子发烧友网站提供《基于51单片机的贪吃蛇游戏设计.pdf》资料免费下载
    发表于 10-25 10:38 2次下载
    基于51单片机的<b class='flag-5'>贪吃蛇</b><b class='flag-5'>游戏</b>设计

    基于FPGA的贪吃蛇游戏实现案例

    手机游戏时代始于 1997 年,当时诺基亚在 6110 机型上发布了第一款名为〈贪吃蛇〉的手机游戏。这可能是有史以来最受欢迎的手机游戏之一,全球有超过 3.5 亿部手机提供这款
    发表于 09-08 09:32 736次阅读
    基于FPGA的<b class='flag-5'>贪吃蛇</b>小<b class='flag-5'>游戏</b><b class='flag-5'>实现</b>案例

    如何使用javascript制作一个网页端3D贪吃蛇游戏(附源码)

    3D 网页版贪吃蛇游戏!下面来具体讲一下如何实现。 该游戏使用 Hightopo 的 SDK 制作,总共 100 多行代码,没有 WebG L基础的同学们也可很快掌握。 场景初始化 首
    的头像 发表于 09-01 12:05 3626次阅读
    如何使用javascript制作一个网页端3D<b class='flag-5'>贪吃蛇</b><b class='flag-5'>游戏</b>(附源码)

    如何利用星火一号开发板制作贪吃蛇游戏

    刚拿到星火一号板子想搞事情,逛论坛发现 @zym_0208 发布了一个贪吃蛇的demo,于是下载下来玩了一下发现有些许bug,于是我在他的基础上修改了一半,且把逻辑优化了一下
    的头像 发表于 08-28 17:04 729次阅读

    python有什么用 如何用python创建数据库

    python有什么用 如何用python创建数据库 Python是一种高级编程语言,可以用于开发各种类型的应用程序和工具。它的广泛应用使它在编程领域中极为受欢迎。
    的头像 发表于 08-28 16:41 777次阅读

    有了chatGPT搞IT的是否要下岗了!看chatGPT怎样写代码

    能给我写一个贪吃蛇游戏代码吗? 当然可以!以下是一个简单的贪吃蛇游戏Python 代码示例: import pygame import
    的头像 发表于 07-24 12:35 488次阅读
    有了chatGPT搞IT的是否要下岗了!看chatGPT怎样写代码

    爱心版贪吃蛇,十分就是520 #51单片机 #贪吃蛇 #C语言

    单片机
    学习电子知识
    发布于 :2023年07月02日 13:52:00

    通过C语言设计的贪吃蛇游戏(控制台终端)

    当前通过控制台终端实现一个贪吃蛇游戏实现游戏的绘制、更新、控制等功能。
    的头像 发表于 06-30 09:53 505次阅读
    通过C语言设计的<b class='flag-5'>贪吃蛇</b><b class='flag-5'>游戏</b>(控制台终端)

    micro:bit贪吃蛇游戏开源分享

    电子发烧友网站提供《micro:bit贪吃蛇游戏开源分享.zip》资料免费下载
    发表于 06-13 10:58 2次下载
    micro:bit<b class='flag-5'>贪吃蛇</b><b class='flag-5'>游戏</b>开源分享

    基于JAVA的J2ME的手机游戏(贪吃蛇)开发设计

    的通信等功能,而且能够开发各种手机游戏。本文在介绍J2ME及其体系结构的基础上,以贪吃蛇游戏为实例,描述了借助J2ME的MIDlet类库开发手机游戏的过程。
    发表于 06-09 16:04 0次下载