Python贪吃蛇最简单代码,这波进入了童年回忆~

曾经被诺基亚作为卖点的游戏,无数玩家的童年游戏,它就是... ​​​​​​​ 2000年诺基亚最为经典的机型3310正式推出,其中包含三款预装游戏,作为著名的便是贪吃蛇和俄罗斯方块,这也是贪吃蛇和俄罗斯方块系列的第一次亮相,不可否认的是,它们能成为一代经典被玩家们记住,而且后面出现各种各样的贪吃蛇、俄罗斯方块以及连连看。 阅读详情


前言

贪吃蛇游戏简单而有趣,让很多玩家非常上头,我相信在座的不少人都玩过这个小游戏。今天就教给大家python贪吃蛇的最简单代码。

玩家通过控制一条蛇的移动,不断吃食物,蛇的身体会逐渐变长,同时要注意避免碰到自己的身体或者墙壁。游戏目标是尽可能地吃到更多的食物,获得更高的分数。
在这里插入图片描述


贪吃蛇代码

使用Python Pygame库可以编写出贪吃蛇游戏的最简单代码。
玩家通过控制蛇的移动来吃食物得分。
当蛇撞到边界或自己的身体时,游戏结束。

代码使用了pygame库创建了游戏窗口,并跟踪蛇和食物的位置。
它使用while循环来处理用户的输入并更新游戏状态。
代码简洁易懂,是初学者学习pygame库的好例子。

以下是Python贪吃蛇游戏的最简单代码:

import pygame, sys
from pygame.locals import *

pygame.init()
fpsClock = pygame.time.Clock()

WINDOW = pygame.display.set_mode((400, 300))
pygame.display.set_caption('贪吃蛇')

BLACK = pygame.Color(0, 0, 0)
WHITE = pygame.Color(255, 255, 255)
RED = pygame.Color(255, 0, 0)

snake_position = [100, 50]
snake_body = [[100, 50], [90, 50], [80, 50]]

food_position = [300, 150]
food_spawn = True

direction = 'RIGHT'
change_to = direction

def game_over():
    pygame.quit()
    sys.exit()

while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            game_over()
        elif event.type == KEYDOWN:
            if event.key == K_RIGHT or event.key == ord('d'):
                change_to = 'RIGHT'
            if event.key == K_LEFT or event.key == ord('a'):
                change_to = 'LEFT'
            if event.key == K_UP or event.key == ord('w'):
                change_to = 'UP'
            if event.key == K_DOWN or event.key == ord('s'):
                change_to = 'DOWN'
            if event.key == K_ESCAPE:
                pygame.event.post(pygame.event.Event(QUIT))

    if change_to == 'RIGHT' and not direction == 'LEFT':
        direction = 'RIGHT'
    if change_to == 'LEFT' and not direction == 'RIGHT':
        direction = 'LEFT'
    if change_to == 'UP' and not direction == 'DOWN':
        direction = 'UP'
    if change_to == 'DOWN' and not direction == 'UP':
        direction = 'DOWN'

    if direction == 'RIGHT':
        snake_position[0] += 10
    if direction == 'LEFT':
        snake_position[0] -= 10
    if direction == 'UP':
        snake_position[1] -= 10
    if direction == 'DOWN':
        snake_position[1] += 10

    snake_body.insert(0, list(snake_position))
    if snake_position[0] == food_position[0] and snake_position[1] == food_position[1]:
        food_spawn = False
    else:
        snake_body.pop()

    if not food_spawn:
        food_position = [pygame.randint(0, 39) * 10, pygame.randint(0, 29) * 10]
    food_spawn = True
    WINDOW.fill(BLACK)
    for pos in snake_body:
        pygame.draw.rect(WINDOW, RED, pygame.Rect(
            pos[0], pos[1], 10, 10))
    pygame.draw.rect(WINDOW, WHITE, pygame.Rect(
        food_position[0], food_position[1], 10, 10))
    if snake_position[0] >= 400 or snake_position[0] < 0:
        game_over()
    if snake_position[1] >= 300 or snake_position[1] < 0:
        game_over()
    for block in snake_body[1:]:
        if snake_position[0] == block[0] and snake_position[1] == block[1]:
            game_over()
    pygame.display.update()
    fpsClock.tick(12)
  • 这是一个简单的贪吃蛇游戏,它使用了Python的Pygame库。玩家控制蛇在屏幕上移动,并尽可能吃到食物来得分。如果玩家撞到边界或撞到蛇的身体,游戏就会结束。
  • 在这个代码中,我们使用pygame库来创建了一个游戏窗口。我们使用snake_position来跟踪蛇的位置,并使用snake_body来跟踪蛇的身体。蛇的初始长度为3,位于屏幕上方的中央位置。我们使用food_position来跟踪食物的位置,使用food_spawn来判断是否需要生成新的食物。
  • 在游戏循环中,我们处理用户的输入,并根据输入来更新蛇的方向。如果蛇的方向与输入方向相反,则不允许蛇掉头。然后,我们将根据方向更新蛇的位置。我们还将蛇的新位置添加到snake_body列表的开头,并从列表的末尾删除最后一个元素,以确保蛇的身体长度不变。
  • 如果蛇吃到了食物,我们将不再生成新的食物,而是将蛇的身体长度加1。否则,我们将生成新的食物,以便玩家继续游戏。
  • 我们还检查蛇是否碰到了边界或撞到了自己的身体。如果是,游戏就会结束,并调用game_over()函数来退出游戏。
  • 最后,我们使用pygame.display.update()来更新游戏窗口,并使用fpsClock.tick(12)来限制帧率为12FPS,以确保游戏不会运行得太快。

总结

在这里插入图片描述
祝大家一边学习,一边游玩愉快。


关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

👉优快云大礼包:《Python入门资料&实战源码&安装工具】免费领取(安全链接,放心点击)

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

二、Python基础学习视频

② 路线对应学习视频

还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~在这里插入图片描述
在这里插入图片描述

③练习题

每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
在这里插入图片描述
因篇幅有限,仅展示部分资料

三、精品Python学习书籍

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
在这里插入图片描述

四、Python工具包+项目源码合集

①Python工具包

学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!
在这里插入图片描述

②Python实战案例

光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!
在这里插入图片描述

③Python小游戏源码

如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!
在这里插入图片描述

五、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述

六、Python兼职渠道

而且学会Python以后,还可以在各大兼职平台接单赚钱,各种兼职渠道+兼职注意事项+如何和客户沟通,我都整理成文档了。
在这里插入图片描述
在这里插入图片描述
这份完整版的Python全套学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

用python写一个简单的贪吃蛇游戏(附代码) 今天要给大家分享的是一个 pygame 写的“贪吃蛇”小游戏 阅读详情

相关推荐

Python贪吃蛇游戏教程:免费源码,简单易懂的Python游戏开发指导

游戏主循环:游戏的主要循环,处理用户输入、蛇的移动、食物的生成和碰撞检测。print("贪吃蛇的位置: ", snake_pos)print("食物的位置: ", food_pos)食物随机重新生成:当蛇身体增长后,食物在新的位置生成。定义蛇的初始位置和长度:设定蛇的起始位置和初始长度。定义食物的位置:在游戏区域内随机生成食物的位置。确定蛇的方向:根据用户的输入改变蛇的移动方向。print("游戏结束!定义蛇的方向:设定蛇的初始移动方向。显示蛇和食物:打印出蛇和食物的位置。移动蛇:根据方向移动蛇的位置。

程序熊的博客 1456

python 简单小游戏之贪吃蛇

10个函数完成贪吃蛇小游戏

qq_25976859的博客 1万+

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

接下来我们定义了蛇和食物的类,蛇类拥有绘制、移动、改变方向以及检查碰撞等方法,食物类拥有随机位置、绘制等方法。当蛇的头部碰到自己的身体或者碰到边界时,游戏结束。首先,让我们了解一下贪吃蛇游戏的规则:玩家需要控制一条蛇去吃食物,每吃一个食物长度加一,当蛇的头部碰到自己的身体或者碰到边界时,游戏结束。我们知道,蛇是由多个方块组成,每条蛇都有一个头部和若干个身体节,蛇可以通过移动改变自己的方向和位置。通过以上代码实现,我们可以轻松地打造出属于自己的贪吃蛇游戏,是一款非常有趣的小游戏,大家感受一下吧!

. 3831

Python实现简单贪吃蛇(附完整代码)

②简洁明了:虽然实现的是一个完整的游戏,但代码量适中,没有冗余部分,每个方法的职责明确,如game_loop负责游戏循环,move_snake负责蛇的移动逻辑等。随机食物位置:通过set_new_food_position方法确保食物出现在蛇身体之外的位置,实现了食物随机出现的机制,增加了游戏的不可预测性和乐趣。⑥良好的用户反馈:游戏过程中实时显示得分,并在游戏结束时显示“Game Over!③响应式控制:通过绑定键盘事件<Key>,实现了玩家可以通过上下左右键控制蛇的移动方向,增加了游戏的互动性。

2301_79377597的博客 6107

从报错到定位:Memtest86 DQ位算法解析与实践指南

本文深入解析了Memtest86内存测试工具报错信息的解读方法,重点介绍了通过地址解析、数据转换、位比对和DQ定位四步算法,精准锁定故障DQ位的实践流程。文章以DDR4和DDR5为例,详细拆解了从十六进制报错到二进制比对的完整步骤,并提供了从单个报错分析到故障模式诊断的进阶指南,帮助用户将抽象的报错信息转化为具体的维修或排查依据。

sre5engineer的博客 486

C语言头文件完全解析(连“#”我都给你讲明白)

C语言头文件完全解析 引言 本文将尽量详细的介绍c语言的头文件所包含的知识,如有错误,还望指正。 萌新们肯定疑惑为什么每次打代码都要写一个所谓的头文件(如:#include<stdio.h>),这里先简单让大家有个了解,你所用的 printf("%d",a)就是这个 stdio里的东西,如果没有这个头文件,编译器都不知道 printf是个什么东东。所以头文件就是一个准备好的大仓库,你可...

CRAZY_eyes的博客 7万+

一行Python代码,畅玩童年经典游戏~

大家好,我是丁小杰! 今天在Github上看到一个有趣的Python项目free-python-games,它包含了22个简单的小游戏,所有游戏都是使用Python和它的Turtle模块实现的,Windows、Mac OS或Linux皆可运行,我们先来看看有哪些游戏! Snake 贪吃蛇——经典街机游戏。 Pacmax 吃豆人——经典街机游戏。 Cannon 加农炮——抛射运动。类似愤怒的小鸡~ Maze 迷宫小游戏 Pong 碰球——经典街机游戏。 满满的童年回忆,其他的游戏就等待大家自己去尝试

向日葵的专属太阳 1万+

Qt图表库三选一:Qwt、QChart、QCustomPlot实战性能对比与避坑指南

本文深入对比了Qt开发中三大主流图表库Qwt、QChart和QCustomPlot的性能与适用场景。通过实测数据展示各库在渲染效率、内存占用和功能特性上的差异,并提供针对不同项目需求的选型建议和集成避坑指南,帮助开发者高效选择最适合的Qt图表解决方案。

weixin_33691700的博客 450

python小游戏代码大全-【程序源代码】python贪吃蛇小游戏

关键字:python 游戏 贪吃蛇正文 | 内容在网络还不发达,没有平板电脑和手机的童年;电视机里的动画片和小游戏曾经陪伴我们度过了欢乐的时光.扫雷、贪吃蛇、俄罗斯方块、58坦克大战、超级玛丽、魂斗罗...每一个都是回忆满满的游戏02—【一条蛇】# 无论何时 都在前端增加蛇块def addnode(self):left,top = (0,0)if self.body:left,top = (sel...

weixin_37988176的博客 4836

Multisim14.3中FPGA接口电路设计:原理图项目应用

深入讲解在multisim14.3环境下构建FPGA接口电路的方法,结合原理图设计与项目实践,展现multisim14.3强大的电路仿真能力,提升数字系统开发效率。

weixin_42578963的博客 1158

Python+whisper/vosk实现语音识别

Whisper 是一个由 OpenAI 开发的人工智能语音识别模型,它能够将语音转换为文本。Whisper 模型特别之处在于它的设计目标是能够理解和转录多种语言的语音,包括但不限于英语。Whisper 模型在训练时使用了大量不同语言的语音数据,这使得它具有很好的跨语言能力。Vosk 是一个开源的语音识别库,它可以在离线环境下工作,不依赖于任何外部服务。Vosk 基于Kaldi语音识别框架,支持多种语言,包括中文。Vosk提供了多种预训练模型,可以根据需求选择适合的模型进行语音识别。

weixin_44458771的博客 5942

python手机版做小游戏代码大全-【程序源代码】python贪吃蛇小游戏

关键字:python 游戏 贪吃蛇正文 | 内容在网络还不发达,没有平板电脑和手机的童年;电视机里的动画片和小游戏曾经陪伴我们度过了欢乐的时光.扫雷、贪吃蛇、俄罗斯方块、58坦克大战、超级玛丽、魂斗罗...每一个都是回忆满满的游戏02—【一条蛇】# 无论何时 都在前端增加蛇块def addnode(self):left,top = (0,0)if self.body:left,top = (sel...

weixin_37988176的博客 1168

HybridCLR热更新打包报错全解析:从原理到实战解决方案

热更新技术是现代游戏和应用开发中实现动态内容交付与Bug修复的核心机制,它允许开发者在无需重新发布完整应用的情况下更新代码逻辑。其原理通常涉及在运行时加载并执行新的代码模块,这要求框架在底层实现安全的代码隔离、内存管理与元数据桥接。在Unity生态中,HybridCLR作为基于IL2CPP的高性能热更新解决方案,通过补充元数据和AOT泛型引用技术,实现了对C#代码的原生级热更支持,显著提升了开发迭代效率与线上问题修复能力。然而,在实际的工程实践中,尤其是在面向Android、iOS等多平台打包构建时,开发者

weixin_29017445的博客 309

利用pygame写贪吃蛇小游戏

相信很多小伙伴在小时候都玩过贪吃蛇、超级玛丽、扫雷、魂斗罗、俄罗斯方块、58坦克等这些小游戏,这些小游戏我小时候都玩过;还记得当时家里有一台黑白电视,我当时特别喜欢玩游戏然后把零花钱全部存起来买了游戏器材。回忆起了小时候的画面,一种兴奋感就上来了,于是写了贪吃蛇小游戏来记录过去的美好时光。 环境: python3.8、pycharm 下面的代码注释也很详细,不了解pygame如何使用的小伙伴也可以看我之前写的超级详细的pygame,一起来学习吧! # 导入模块及库 import pygame, sys, r

qq_41405475的博客 362

HTML5+CSS3+JS小实例:扇形展开折叠菜单

你肯定见过那种圆形浮动按钮(FAB),点一下弹出几个选项。大部分实现就是菜单项从底下往上"弹"出来,排成一列——能用,但没啥记忆点。后来我看到 Path 那个经典的扇形菜单,点一下,五个按钮像花瓣一样从中心散开,每个带不同的延迟和弹性曲线。当时就觉得:这才对嘛,交互就该有点"戏剧性"。今天拆一个纯手写版本,HTML + CSS + JS,不依赖任何库。六菜单项、扇形 144° 展开、弹性过渡、点击关闭、键盘可达——该有的都有。

艾恩小灰灰的博客 164

Hermes Agent 彩蛋大盘点:藏在终端里的浪漫

本文主要介绍了Hermes Agent 彩蛋大盘点:藏在终端里的浪漫,希望能对使用Hermes Agent的同学们有所帮助。 文章目录 1. 前言 2. Spinner 动画 3. Kawaii 表情 4. 思考动词 THINKING_VERBS 5. 皮肤主题 6. 启动 Banner 7. 工具 Emoji 8. 内置人格 9. SOUL.md —— Agent 的灵魂 10. BOOT.md —— 启动自动执行 11. 随机 Tips 12. 统计总览

weixin_43178406的博客 7万+

手机编程代码大全python,python3ide手机简单代码

学习中发现了一个比较好的软件xmind,通过xmind这个思维导图软件制作了一些自学笔记,把每节的重点整理成图形的方式,很容易直观理解和掌握。if snakePosition1[0] == snakePosition2[0] and snakePosition1[1] == snakePosition2[1]: # 头碰头,谁长谁赢,否则平局。当1号玩家撞墙或被2号玩家吃了时,游戏结束,显示1号玩家失败,以及双方分数。当2号玩家撞墙或被1号玩家吃了时,游戏结束,显示2号玩家失败,以及双方分数。

Bxwfjdjdbdgj的博客 1038

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

python代码大全可复制免费,手机编程代码大全python

学习中发现了一个比较好的软件xmind,通过xmind这个思维导图软件制作了一些自学笔记,把每节的重点整理成图形的方式,很容易直观理解和掌握。if snakePosition1[0] == snakePosition2[0] and snakePosition1[1] == snakePosition2[1]: # 头碰头,谁长谁赢,否则平局。当1号玩家撞墙或被2号玩家吃了时,游戏结束,显示1号玩家失败,以及双方分数。当2号玩家撞墙或被1号玩家吃了时,游戏结束,显示2号玩家失败,以及双方分数。

S1112_的博客 1033

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

python游戏实战项目之童年经典超级玛丽

好啦~看着这个游戏界面是不是一下子回到了童年了~哈哈哈到此这篇关于python游戏实战项目之童年经典超级玛丽的文章就介绍到这了。

2501_94114815的博客 328

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

手机编程代码大全小游戏,手机上python编程工具

学习中发现了一个比较好的软件xmind,通过xmind这个思维导图软件制作了一些自学笔记,把每节的重点整理成图形的方式,很容易直观理解和掌握。if snakePosition1[0] == snakePosition2[0] and snakePosition1[1] == snakePosition2[1]: # 头碰头,谁长谁赢,否则平局。当1号玩家撞墙或被2号玩家吃了时,游戏结束,显示1号玩家失败,以及双方分数。当2号玩家撞墙或被1号玩家吃了时,游戏结束,显示2号玩家失败,以及双方分数。

m0_73979992的博客 889

自学python有什么用吗

学习中发现了一个比较好的软件xmind,通过xmind这个思维导图软件制作了一些自学笔记,把每节的重点整理成图形的方式,很容易直观理解和掌握。if snakePosition1[0] == snakePosition2[0] and snakePosition1[1] == snakePosition2[1]: # 头碰头,谁长谁赢,否则平局。当1号玩家撞墙或被2号玩家吃了时,游戏结束,显示1号玩家失败,以及双方分数。当2号玩家撞墙或被1号玩家吃了时,游戏结束,显示2号玩家失败,以及双方分数。

x3088的博客 469

python基础有哪些,python 基础 详细

学习中发现了一个比较好的软件xmind,通过xmind这个思维导图软件制作了一些自学笔记,把每节的重点整理成图形的方式,很容易直观理解和掌握。if snakePosition1[0] == snakePosition2[0] and snakePosition1[1] == snakePosition2[1]: # 头碰头,谁长谁赢,否则平局。当1号玩家撞墙或被2号玩家吃了时,游戏结束,显示1号玩家失败,以及双方分数。当2号玩家撞墙或被1号玩家吃了时,游戏结束,显示2号玩家失败,以及双方分数。

2401_85777843的博客 451

python可以编写手机软件吗,python可以做手机游戏吗

学习中发现了一个比较好的软件xmind,通过xmind这个思维导图软件制作了一些自学笔记,把每节的重点整理成图形的方式,很容易直观理解和掌握。if snakePosition1[0] == snakePosition2[0] and snakePosition1[1] == snakePosition2[1]: # 头碰头,谁长谁赢,否则平局。当1号玩家撞墙或被2号玩家吃了时,游戏结束,显示1号玩家失败,以及双方分数。当2号玩家撞墙或被1号玩家吃了时,游戏结束,显示2号玩家失败,以及双方分数。

w666666Wwwwwww的博客 360
上一篇: 用Python实现表白代码,程序员还能这么玩?
下一篇: Python之禅,代码如何写出禅意?来自Python的官方介绍。
一秋的编程笔记
博客等级 码龄4年 1588粉丝 319原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值