三分钟写出一个“贪吃蛇”,只有python能这么轻松做到(附源码)
off999 2024-11-21 19:15 15 浏览 0 评论
贪吃蛇大家都玩过吧,今天手把手教你们自己写一个贪吃蛇游戏。
1.有关游戏的项目我们需要用到pygame库,用win+s输入cmd窗口,用 pip install pygame 命令安装就好了。
2.如果出现了这种版本过低的警告,可以输入 easy_install -U pip 命令进行版本升级,等待一段时间就可以了。
3.输入 pip list 可以查看当前版本。
4.下面就是完整的代码:
import pygame, sys, random, time
# 从pygame模块导入常用的函数和常量
from pygame.locals import *
# 定义颜色变量
black_colour = pygame.Color(0, 0, 0)
white_colour = pygame.Color(255, 255, 255)
red_colour = pygame.Color(255, 0, 0)
grey_colour = pygame.Color(150, 150, 150)
# 定义游戏结束函数
def GameOver(gamesurface):
# 设置提示字体的格式
GameOver_font = pygame.font.SysFont("MicrosoftYaHei", 16)
# 设置提示字体的颜色
GameOver_colour = GameOver_font.render('Game Over', True, grey_colour)
# 设置提示位置
GameOver_location = GameOver_colour.get_rect()
GameOver_location.midtop = (320, 10)
# 绑定以上设置到句柄
gamesurface.blit(GameOver_colour, GameOver_location)
# 提示运行信息
pygame.display.flip()
# 休眠5秒
time.sleep(5)
# 退出游戏
pygame.quit()
# 退出程序
sys.exit()
# 定义主函数
def main():
# 初始化pygame,为使用硬件做准备
pygame.init()
pygame.time.Clock()
ftpsClock = pygame.time.Clock()
# 创建一个窗口
gamesurface = pygame.display.set_mode((640, 480))
# 设置窗口的标题
pygame.display.set_caption('tanchishe snake')
# 初始化变量
# 初始化贪吃蛇的起始位置
snakeposition = [100, 100]
# 初始化贪吃蛇的长度
snakelength = [[100, 100], [80, 100], [60, 100]]
# 初始化目标方块的位置
square_purpose = [300, 300]
# 初始化一个数来判断目标方块是否存在
square_position = 1
# 初始化方向,用来使贪吃蛇移动
derection = "right"
change_derection = derection
# 进行游戏主循环
while True:
# 检测按键等pygame事件
for event in pygame.event.get():
if event.type == QUIT:
# 接收到退出事件后,退出程序
pygame.quit()
sys.exit()
elif event.type == KEYDOWN:
# 判断键盘事件,用w,s,a,d来表示上下左右
if event.key == K_RIGHT or event.key == ord('d'):
change_derection = "right"
if event.key == K_LEFT or event.key == ord('a'):
change_derection = "left"
if event.key == K_UP or event.key == ord('w'):
change_derection = "up"
if event.key == K_DOWN or event.key == ord('s'):
change_derection = "down"
if event.key == K_ESCAPE:
pygame.event.post(pygame.event.Event(QUIT))
# 判断移动的方向是否相反
if change_derection == 'left' and not derection == 'right':
derection = change_derection
if change_derection == 'right' and not derection == 'left':
derection = change_derection
if change_derection == 'up' and not derection == 'down':
derection = change_derection
if change_derection == 'down' and not derection == 'up':
derection = change_derection
# 根据方向,改变坐标
if derection == 'left':
snakeposition[0] -= 20
if derection == 'right':
snakeposition[0] += 20
if derection == 'up':
snakeposition[1] -= 20
if derection == 'down':
snakeposition[1] += 20
# 增加蛇的长度
snakelength.insert(0, list(snakeposition))
# 判断是否吃掉目标方块
if snakeposition[0] == square_purpose[0] and snakeposition[1] == square_purpose[1]:
square_position = 0
else:
snakelength.pop()
# 重新生成目标方块
if square_position == 0:
# 随机生成x,y,扩大二十倍,在窗口范围内
x = random.randrange(1, 32)
y = random.randrange(1, 24)
square_purpose = [int(x * 20), int(y * 20)]
square_position = 1
# 绘制pygame显示层
gamesurface.fill(black_colour)
for position in snakelength:
pygame.draw.rect(gamesurface, white_colour, Rect(position[0], position[1], 20, 20))
pygame.draw.rect(gamesurface, red_colour, Rect(square_purpose[0], square_purpose[1], 20, 20))
# 刷新pygame显示层
pygame.display.flip()
# 判断是否死亡
if snakeposition[0] < 0 or snakeposition[0] > 620:
GameOver(gamesurface)
if snakeposition[1] < 0 or snakeposition[1] > 460:
GameOver(gamesurface)
for snakebody in snakelength[1:]:
if snakeposition[0] == snakebody[0] and snakeposition[1] == snakebody[1]:
GameOver(gamesurface)
# 控制游戏速度
ftpsClock.tick(5)
if __name__ == "__main__":
main()
5.下面是游戏界面:
最后:感谢每一个读完我文章的人,你们的点赞和关注是我最大的鼓舞和动力。我给大家整理了一些资料和小游戏,供大家白嫖。只是由于这些文件较多,用链接其实也可以,但是链接公开之后容易被封,需要的可以私信我“学习”即可
相关推荐
- python pip 命令 参数(python pip命令用不了)
-
usage:python[option]...[-ccmd|-mmod|file|-][arg]...Options(andcorrespondingenvironm...
- Python 包管理:uv 来了!比 pip 快 100 倍的神器,开发者的终极选择?
-
为什么Python开发者需要uv?Python生态虽繁荣,但包管理一直是痛点:pip安装慢如蜗牛、依赖冲突让人头秃、虚拟环境配置繁琐……直到uv横空出世!这个用Rust语言打造的...
- UV:Python包管理的未来已来!比pip快100倍的新选择
-
引言Python开发者们,是否厌倦了pip的缓慢安装速度?是否希望有一个更快、更现代、更高效的包管理工具?今天,我要向大家介绍一个革命性的Python包管理工具——UV!UV由Rust编写,是pip和...
- 「Python」 常用的pip命令和Django命令
-
pip命令如何根据关键词找到PyPI(Python包仓库)上的可用包#方法1:直接访问PyPI官网,输入关键词搜索#方法2#为何不用pipsearchdjango?因为这个命令已不可...
- python包管理工具pip freeze详解(python工具包怎么用)
-
freeze就像其名字表示的意思一样,主要用来以requirement的格式输出已安装的包,这里我们主要讨论以下3个选项:--local、--user、--pathlocal--local选项一般用在...
- python包管理工具pip config详解(python的pulp包)
-
pipconfig主要包含以下子命令:set、get、edit、list、debug、unset。下面我们逐一介绍下它们。pipconfigset这个命令允许我们以name=value的形式配...
- pip常用命令,学Python不会这个寸步难行哦(26)
-
小朋友们好,大朋友们好!我是猫妹,一名爱上Python编程的小学生。欢迎和猫妹一起,趣味学Python。今日主题学习下pip的使用。pip什么是pippip全称PythonPackageIndex...
- Python pip 包管理需知(python的包管理)
-
简介在Python编程中,pip是一个强大且广泛使用的包管理工具。它使我们能够方便地安装、升级和管理Python包。无论是使用第三方库还是分享自己的代码,pip都是我们的得力助手。本文将深入解析pip...
- 比pip快100倍的Python包安装工具(python如何用pip安装包)
-
简介uv是一款开源的Python包安装工具,GitHubstar高达56k,以性能极快著称,具有以下特性(官方英文原文):Asingletooltoreplacepip,pip-tool...
- Python安装包总报错?这篇解决指南让你告别pip烦恼!
-
在Python开发中,pip是安装和管理第三方包的必备工具,但你是否经常遇到各种报错,比如无法创建进程、权限不足、版本冲突,甚至SSL证书错误?这些问题不仅浪费时间,还让人抓狂!别担心!本文整理了...
- pip vs pipx: Python 包管理器,你选择哪个?
-
高效的包管理对于Python开发至关重要。pip和pipx是两个最常用的工具。虽然两者都支持安装Python包,但它们的设计和用例却大相径庭。本文将探讨这些差异,解释何时使用每种工具,并...
- 【python】5分钟掌握pip(包管理)操作
-
安装一个软件包从庞大的仓库中找到一个库,将其导入您的环境:pipinstallnumpy2.已安装软件包列表调查您领域内存在的库的概要,注意它们的版本:piplist3.升级软件包赋予已安装...
- Python pip安装与使用步骤(python的pip安装方法)
-
安装和使用Python的包管理工具pip是管理Python包和依赖项的基础技能。以下是详细的步骤:安装pip使用系统包管理器安装Windows:通常,安装Python时会自动安装p...
- Python自动化办公应用学习笔记3—— pip工具安装
-
3.1pip工具安装最常用且最高效的Python第三方库安装方式是采用pip工具安装。pip是Python包管理工具,提供了对Python包的查找、下载、安装、卸载的功能。pip是Python官方提...
- Python文件压缩神器:ZipFile功能全解析,支持一键压缩和解压
-
在Python中处理ZIP文件时,zipfile模块是最常用的工具。它提供了创建、读取、修改ZIP文件的完整功能,无需依赖外部命令。本文将通过核心函数、实战案例和避坑指南,带你掌握这个高效的文件处理模...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- python pip 命令 参数(python pip命令用不了)
- Python 包管理:uv 来了!比 pip 快 100 倍的神器,开发者的终极选择?
- UV:Python包管理的未来已来!比pip快100倍的新选择
- 「Python」 常用的pip命令和Django命令
- python包管理工具pip freeze详解(python工具包怎么用)
- python包管理工具pip config详解(python的pulp包)
- pip常用命令,学Python不会这个寸步难行哦(26)
- Python pip 包管理需知(python的包管理)
- 比pip快100倍的Python包安装工具(python如何用pip安装包)
- Python安装包总报错?这篇解决指南让你告别pip烦恼!
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python字典遍历 (54)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (60)
- python读取文件夹下所有文件 (59)
- java调用python脚本 (56)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)