68行Python代码实现带难度升级的贪吃蛇,你能坚持到第10关吗

这篇具有很好参考价值的文章主要介绍了68行Python代码实现带难度升级的贪吃蛇,你能坚持到第10关吗。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、前言

之前版本很多小伙伴都觉得难度过高,另外也有粉丝问还能不能精简代码。

所以这版降低了难度 (由原来过关增加5km/h改为3.5KM/h)
并通过反射代替IF ELSE的写法,删除了一些冗余的代码,将代码由85行压缩到了68行 (不必要的压缩代码是不建议的,这里压缩代码只是为了好玩)



二、实现效果

贪吃蛇代码算难吗,Python进阶,python,pygame,开发语言


个人最高纪录


贪吃蛇代码算难吗,Python进阶,python,pygame,开发语言


三、环境要求

  1. python 3+
  2. pygame包 安装命令:打开cmd 输入: pip install pygame

四、源码分享

公众号:Python砖家,回复:贪吃蛇获取完整版
import pygame,sys,random
SCREEN,dirction_node = 600, {pygame.K_LEFT:['left',-25],pygame.K_RIGHT:['right',25],pygame.K_UP:['top',-25],pygame.K_DOWN:['top',25]}  # 屏幕尺寸,移动的定义
class Snake:  # 蛇类
    def __init__(self):  # 初始化各种需要的属性 [开始时默认向右/身体块x5]
        self.dirction, self.body = pygame.K_RIGHT, []
        [self.add_node() for _ in range(5)]
    def add_node(self):
        node = pygame.Rect(((self.body[0].left, self.body[0].top) if self.body else (0, 0)) + (25, 25))  # 随时增加蛇块
        setattr(node, dirction_node[self.dirction][0], getattr(node, dirction_node[self.dirction][0]) + dirction_node[self.dirction][1])
        self.body.insert(0, node)
    def is_dead(self):
        body_h = self.body[0]
        if body_h.x not in range(SCREEN) or body_h.y not in range(SCREEN) or body_h in self.body[1:]:  # 撞墙、撞自己则死亡
            return True
    def move(self):
        self.add_node()
        self.body.pop()
    def change_direction(self, curkey):  # 改变方向 但是左右、上下不能被逆向改变
        LR, UD = [pygame.K_LEFT, pygame.K_RIGHT], [pygame.K_UP, pygame.K_DOWN]
        if curkey in LR + UD:
            if not ((curkey in LR) and (self.dirction in LR) or (curkey in UD) and (self.dirction in UD)):
                self.dirction = curkey
class Food:  # 食物类
    def __init__(self):
        self.rect = pygame.Rect(-25, 0, 25, 25)
    def remove(self):
        self.rect.x = -25
    def set(self):
        if self.rect.x == -25:
            allpos = [pos for pos in range(75, SCREEN - 75, 25)]  # 生成的食物距离墙在75 ~ SCREEN-55 之间
            self.rect.left, self.rect.top = random.choice(allpos), random.choice(allpos)
def show_text(screen, pos, text, color, font_size=30):
    cur_font = pygame.font.SysFont("SimHei", font_size)  # 设置文字样式
    text_fmt = cur_font.render(text, True, color)  # 设置文字内容
    screen.blit(text_fmt, pos)  # 绘制文字
def main():
    pygame.init()
    screen = pygame.display.set_mode((SCREEN, SCREEN))
    pygame.display.set_caption('贪吃蛇:是男人就坚持到第10关!')
    snake,food,clock, scores, isdead = Snake(),Food(),pygame.time.Clock(), 0, False
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                sys.exit()
            if event.type == pygame.KEYDOWN:
                snake.change_direction(event.key)
                if event.key == pygame.K_SPACE and isdead:  # 死后按space重新
                    return main()
        screen.fill((255, 255, 255))
        if not isdead:  # 画蛇身 / 每一步+1分
            snake.move()
        for rect in snake.body:
            pygame.draw.rect(screen, (144, 238, 144), rect)
        isdead = snake.is_dead()  # 显示死亡文字
        if isdead:
            show_text(screen, (150, 200), '翻车了!', (227, 29, 18), 80)
            show_text(screen, (50, 320), '是男人就超过45KM/h,按空格键重试...', (0, 0, 22))
        if food.rect == snake.body[0]:  # 当食物rect与蛇头重合,吃掉 -> Snake增加一个Node
            scores += 1  # 食物处理 / 吃到+1分
            food.remove()
            snake.add_node()
        food.set()  # 食物投递
        pygame.draw.rect(screen, (233, 150, 122), food.rect)
        speed = 10 + scores * 3.5 if scores else 10  # 蛇移动速度
        show_text(screen, (20, 550), '关卡:' + str(scores) + '   速度:' + str(speed) + 'KM/h', (0, 0, 205))  # 显示得分和速度
        pygame.display.update()
        clock.tick(speed)
main()

五、总结

再强调一遍:这里减少代码量只是为了好玩,不必要的压缩代码是不建议的!代码可读性、可维护性才是我们在编码中首要考虑的事情!

这也只是随便弄的一个小玩意,如果真要做游戏还是建议使用游戏引擎。

市面上常见的cocos、unity都是不错的游戏引擎,能够让你开发游戏的效率达到事半功倍的效果文章来源地址https://www.toymoban.com/news/detail-555351.html

到了这里,关于68行Python代码实现带难度升级的贪吃蛇,你能坚持到第10关吗的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python实现贪吃蛇【含代码和讲解】

    Python实现贪吃蛇:打造属于自己的经典游戏 在程序开发中,一些简单有趣的小游戏是最受欢迎的。其中,贪吃蛇游戏是一款经典且受欢迎的小游戏,许多人喜欢玩这个游戏。Python 语言可以帮助我们轻松实现贪吃蛇游戏,本文将介绍如何使用 Python 语言实现这个小游戏。 首先

    2024年02月16日
    浏览(28)
  • python实现自动贪吃蛇,含完整代码

    【Python自动化贪吃蛇游戏实现】- 用代码让AI自动吃食物 贪吃蛇游戏是一款经典、简单却挑战性极高的小游戏,让我们忍不住想用代码去写一个自动化的贪吃蛇游戏。本文将为您提供Python自动化实现游戏的全套代码。 首先,我们需要使用Pygame库来完成游戏界面的创建。然后,

    2024年02月16日
    浏览(28)
  • python贪吃蛇代码怎么运行,python贪吃蛇代码手机版

    大家好,小编来为大家解答以下问题,python贪吃蛇代码为什么不能动,python贪吃蛇代码和说明文档,今天让我们一起来看看吧! 大家小时候都玩过贪吃蛇吧?小编小时候可喜欢拿爸妈的手机玩了,厉害着呢!今天,小编就来用100行代码实现一个简易版的贪吃蛇。在网上,贪吃

    2024年04月13日
    浏览(30)
  • python贪吃蛇游戏代码详解,python贪吃蛇最简单代码

    大家好,给大家分享一下python贪吃蛇游戏代码详解外加中文,很多人还不知道这一点。下面详细解释一下。现在让我们来看看! 01 整体框架 平台:pycharm 关于pygame的安装这里就不在赘述,大家自行上网找合适自己的版本的安装即可。关于pygame模块知识会穿插在下面代码中介绍

    2024年04月17日
    浏览(36)
  • python贪吃蛇最简单代码,python代码贪吃蛇小游戏

    大家好,小编来为大家解答以下问题,python贪吃蛇游戏代码详解外加中文,python贪吃蛇最简单代码,现在让我们一起来看看吧! Source code download: 本文相关源码 import pygame import sys import random SCREEN_X=600 SCREEN_Y=600 class Snake(object): def __init__(self): self.direction=pygame.K_RIGHT self.body = []

    2024年02月21日
    浏览(34)
  • Python代码之贪吃蛇

    Python贪吃蛇游戏的最简单代码: 这是一个简单的贪吃蛇游戏,它使用了Python的Pygame库。玩家控制蛇在屏幕上移动,并尽可能吃到食物来得分。如果玩家撞到边界或撞到蛇的身体,游戏就会结束。 在这个代码中,我们使用 pygame 库来创建了一个游戏窗口。我们使用 snake_positio

    2024年02月08日
    浏览(24)
  • python贪吃蛇代码

      文末用python写好了贪吃蛇代码可直接复制使用! 今天和大家分享一下贪吃蛇的代码,主要是贪吃蛇的一些基本知识,以及怎么去玩。 首先,我们先了解一下什么是贪吃蛇?它是一个具有多种功能的游戏,可以通过点击屏幕来吃到食物,但是无法移动。其实这款游戏的原理

    2023年04月11日
    浏览(21)
  • 【华为OD机试真题 Python语言】68、矩阵扩散 | 机试题+算法思路+考点+代码解析

    🍂个人博客首页: 鲨鱼狼臧   🍂专栏介绍: 2023华为OD机试真题,使用Python进行解答,专栏每篇文章都包括真题,思路参考,代码分析,订阅有问题后续可与博主解答问题 🎃题目描述 存在一个m*n的二维数组,其成员取值范围为0或1   其中值为1的成员具备扩散性,每经过

    2024年02月15日
    浏览(41)
  • 教你用322行Python代码编写贪吃蛇

    安装和导入  规则 初始化 设定Surface,变量和显示数字的坐标  函数 线程  主要部分 总结 源码下载   贪吃蛇是一个很常见的小游戏,我们如何用Python去实现呢。 通过命令提示符安装所需模块。(以上非Python代码) 这个程序用到了pygame作为显示模块,keyboard捕获键盘操,

    2023年04月09日
    浏览(38)
  • 可以,很强,68行代码实现Bean的异步初始化,粘过去就能用。

    你好呀,我是歪歪。 前两天在看 SOFABoot 的时候,看到一个让我眼前一亮的东西,来给大家盘一下。 SOFABoot,你可能不眼熟,但是没关系,本文也不是给你讲这个东西的,你就认为它是 SpringBoot 的变种就行了。 因为有蚂蚁金服背书,所以主要是一些金融类的公司在使用这个框

    2024年02月07日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包