当前位置:首页 » 《随便一记》 » 正文

60行Python代码实现闯关升级的贪吃蛇,很少有人能到第十关(附源码和成品)_m0_60765379的博客

3 人参与  2022年05月16日 09:27  分类 : 《随便一记》  评论

点击全文阅读


一、前言

<<点我获取【可直接运行】的文件,或滑至文末获取<<


文章目录(PS:源码直接点击第四项)

  • 一、前言
  • 二、实现效果
  • 三、环境要求
  • 四、源码和成品分享
  • 五、总结


<<点我获取【可直接运行】的文件,或滑至文末获取<<

二、实现效果

在这里插入图片描述


个人最高纪录


在这里插入图片描述


三、环境要求

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

四、源码和成品分享





1. 完整版源码扫下方码,回复:贪吃蛇源码,进行获取;
2. 可直接运行版扫下方码,回复:贪吃蛇游戏,进行获取;

在这里插入图片描述


蛇的身体判断逻辑和食物代码如下:

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)  # 绘制文字

五、总结

就这样,我们从0开始优雅的揭开了pygame的面纱!你可以利用这个做一些有趣的事情

当然,这个可能难度不大,对于老鸟老说很简单(勿喷)。

但是对于新手来说特别适合练手,当然,这个代码不知道能保存多久会失效。所以请抓紧收藏尝试!如果感觉可以还请奉献爱心点点赞!

当然,这个只是我脑洞的一个开端,好玩的还在后面!


Python 是一种解释型、面向对象、动态数据类型的高级程序设计语言。

Python 由 Guido van Rossum 于 1989 年底发明,第一个公开发行版发行于 1991 年。

像 Perl 语言一样, Python 源代码同样遵循 GPL(GNU General Public License) 协议。

官方宣布,2020 年 1 月 1 日, 停止 Python 2 的更新。

Python 2.7 被确定为最后一个 Python 2.x 版本。


Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。

Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。


点击全文阅读


本文链接:http://www.zhangshiyu.com/post/40220.html

获取  源码  可直接  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 夏清烟季憬湛+后续+结局(季憬湛夏清烟)_(夏清烟季憬湛+后续+结局后续)季憬湛夏清烟列表_笔趣阁(夏清烟季憬湛+后续+结局)
  • 夏清烟季憬湛+后续+结局(季憬湛夏清烟)结局_季憬湛夏清烟+结局列表_笔趣阁(夏清烟季憬湛+后续+结局)
  • 愿将过往秋收冬藏(孟棠音季怀瑾)_愿将过往秋收冬藏孟棠音季怀瑾
  • [夺我羽翼]小说章节试读_「杜思予荣誉白月光」小说后续在线免费阅读
  • 忘川不渡相思劫精心打造(江书熠顾司月)_忘川不渡相思劫精心打造江书熠顾司月
  • (番外)+(全书)竹林杏晚清风起全书+后续+结局(沈千鹤段清野)全书在线_竹林杏晚清风起全书+后续+结局免费列表_笔趣阁(沈千鹤段清野)
  • 相隔忘川,不复相望结局+番外榜单(秦沐川陆晚意)_相隔忘川,不复相望结局+番外榜单(秦沐川陆晚意)
  • 神女老婆,却在背地承欢作乐全书+后续+结局(温南枝沈清宴)结局_温南枝沈清宴+结局列表_笔趣阁(神女老婆,却在背地承欢作乐全书+后续+结局)
  • 今夜无人告白结局+番外(段珂怡贺砚清)列表_今夜无人告白结局+番外(段珂怡贺砚清)全书+后续+结局在线
  • [五一出游,我被妻子岳母送进监狱]悬念章节免费释出_小雅李倩王桂芳节选免费试读
  • 从此冬夏再无你结局+番外全书+后续+结局(陈至柔陈路安)列表_从此冬夏再无你结局+番外(陈至柔陈路安)从此冬夏再无你结局+番外全书+后续+结局在线
  • 江以蓁的潮起时问归期一口气读完好文分享江以蓁秦司礼全书在线

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1