本项目为贪吃蛇游戏,上下左右控制蛇的行走路径,并将游戏打包为exe文件,可供其他没有python环境和代码的电脑 Play 游戏!

目录

一、项目成果

二、项目架构

三、项目代码

四、环境搭建

五、矢量图标库

六、程序打包

七、程序运行


一、项目成果

二、项目架构

三、项目代码

# -*- coding: utf-8 -*-
# @Time    : 2022/11/7 14:40
# @Author  : Tuomasi
# @File    : Snake.py
# @CSDN    : http://tuomasi.blog.csdn.net/import pygame
import sys
import random
from pygame.locals import *class Snake(object):# 制作背景和蛇、果实的的颜色, 0-255,  0,0,0,是代表黑色,  255,255,255代表白色def __init__(self):self.black = pygame.Color(0, 0, 0)self.red = pygame.Color(255, 0, 0)self.white = pygame.Color(255, 255, 255)# 游戏结束def gameover(self):print("******游戏结束!******")pygame.quit()sys.exit()# 初始化def initialize(self):pygame.init()# 定义蛇运动的速度clock = pygame.time.Clock()# 定义一个游戏界面playSurface = pygame.display.set_mode((800, 600))# 设置界面名字pygame.display.set_caption('python贪吃蛇小游戏')# 初始化变量snakePosition = [80, 80]  # 贪吃蛇起始位置,前面的参数数水平方向的距离,后面的参数是垂直方向的距离# 贪吃蛇的长度,设定为方块的三百,每个方块的长度为25snakebody = [[80, 80], [60, 80], [40, 80]]targetPosition = [200, 400]  # 方块的初始位置targetflag = 1  # 定义一个标记,目的用来判断果实是否被吃掉direction = 'right'  # 初始化运动方向changeDirection = direction  # 改变方向变量self.main(snakebody, targetPosition, targetflag, direction, changeDirection, snakePosition, playSurface, clock)# 主函数def main(self, snakebody, targetPosition, targetflag, direction, changeDirection, snakePosition, playSurface,clock):while True:# 用循环来获得pygame中的所有事件for event in pygame.event.get():if event.type == QUIT:pygame.quit()sys.exit()# 创建一个键盘的事件elif event.type == KEYDOWN:# 判断键盘的方向if event.key == K_RIGHT:changeDirection = 'right'print('向右')if event.key == K_LEFT:changeDirection = 'left'print("向左")if event.key == K_DOWN:print('向下')changeDirection = 'down'if event.key == K_UP:print('向上')changeDirection = 'up'# 判断是否按下了esc键if event.key == K_ESCAPE:pygame.event.post(pygame.event.Event(QUIT))# 判断蛇的方向if changeDirection == 'left' and not direction == 'right':direction = changeDirectionif changeDirection == 'right' and not direction == 'left':direction = changeDirectionif changeDirection == 'down' and not direction == 'up':direction = changeDirectionif changeDirection == 'up' and not direction == 'down':direction = changeDirection# 根据方向移动蛇头位置if direction == 'right':snakePosition[0] += 20if direction == 'left':snakePosition[0] -= 20if direction == 'up':snakePosition[1] -= 20if direction == 'down':snakePosition[1] += 20# 增加蛇的长度# 判断蛇是否吃掉了果实snakebody.insert(0, list(snakePosition))if snakePosition[0] == targetPosition[0] and snakePosition[1] == targetPosition[1]:targetflag = 0else:snakebody.pop()# 随机再生成一个新的方块if targetflag == 0:x = random.randrange(1, 40)  # 水平方向y = random.randrange(1, 30)  # 垂直方向targetPosition = [int(x * 20), int(y * 20)]targetflag = 1# 绘制显示图playSurface.fill(self.black)  # 背景for position in snakebody:pygame.draw.rect(playSurface, self.white, Rect(position[0], position[1], 20, 20))  # 蛇的身体pygame.draw.rect(playSurface, self.red, Rect(targetPosition[0], targetPosition[1], 20, 20))  # 果实# 游戏结束pygame.display.flip()if snakePosition[0] > 900 or snakePosition[0] < 0:snake.gameover()elif snakePosition[1] > 800 or snakePosition[1] < 0:snake.gameover()for i in snakebody[1:]:if snakePosition[0] == i[0] and snakePosition[1] == i[1]:snake.gameover()# 控制游戏速度,值越大速度越快clock.tick(5)snake = Snake()
snake.initialize()

四、环境搭建

安装pygame库

pip install pygame -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

安装pyinstaller库

pip install pyinstaller -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

五、矢量图标库

1、https://www.iconsdb.com/

这个网站可以直接下载  .ico 文件,下载后放在同级目录下,如上:项目架构图

2、iconfont-阿里巴巴矢量图标库

下载png等格式图片后,可以去在线图片转 ico 网站(https://www.easyicon.net/covert/),转换一下格式,下载后放在同级目录下,如上:项目架构图

六、程序打包

pyinstaller打包的语法为:

pyinstaller -F -i 图标文件路径 .py文件路径

但是在控制台运行后你可能会遇到:

此报错为系统未找到pyinstaller程序,回到刚才安装pyinstaller的地方,找到这个目录处,pyinstaller被安装在了此处,在这个目录处可以看到这些包

于是,我的命令行为:pyinstaller -F -i D:\pycharm\Snake\snake-5-32.ico D:\pycharm\Snake\Snake.py
145 INFO: PyInstaller: 5.6.2

打包完成后,看最下方提示,此提示为exe文件存放位置,如下

七、程序运行

找到路径文件后,exe程序打包完成,发给你的朋友,双击开始属于你们的快乐吧!


使用Python语言制作贪吃蛇游戏,并制作成为exe可执行文件相关推荐

  1. python写一个游戏多少代码-使用Python写一个贪吃蛇游戏实例代码

    我在程序中加入了分数显示,三种特殊食物,将贪吃蛇的游戏逻辑写到了SnakeGame的类中,而不是在Snake类中. 特殊食物: 1.绿色:普通,吃了增加体型 2.红色:吃了减少体型 3.金色:吃了回到 ...

  2. python游戏脚本实例-使用Python写一个贪吃蛇游戏实例代码

    我在程序中加入了分数显示,三种特殊食物,将贪吃蛇的游戏逻辑写到了SnakeGame的类中,而不是在Snake类中. 特殊食物: 1.绿色:普通,吃了增加体型 2.红色:吃了减少体型 3.金色:吃了回到 ...

  3. Love2D游戏引擎制作贪吃蛇游戏

    预览游戏 love2d游戏引擎重要函数 详情: love.load:当游戏开始时被调用且仅调用一次 love.draw:回调函数,每帧更新一次游戏画面 love.update:回调函数,每帧更新一次游 ...

  4. linux贪吃蛇c程序,Linux环境下C语言实现贪吃蛇游戏

    Linux环境下C语言实现贪吃蛇游戏 [liul@test snake]$ more snake.c #include #include #include #include #include #def ...

  5. 贪吃蛇c语言经典程序下载,C语言实现贪吃蛇游戏(单人版)

    本文实例为大家分享了C语言实现贪吃蛇游戏的具体代码,供大家参考,具体内容如下 相比于第一个:贪吃蛇游戏,功能更加丰富 #include"snake.h" //蛇的移动 void m ...

  6. c语言贪吃蛇游戏的论文,基于c语言的贪吃蛇游戏论文.doc

    基于c语言的贪吃蛇游戏论文 第 PAGE \* Arabic \* MERGEFORMAT 15 页第 PAGE \* Arabic \* MERGEFORMAT 15 页 学校代码 学号 分 类 号 ...

  7. 如何用html做一个贪吃蛇,如何用HTML5制作贪吃蛇游戏

    如何用HTML5制作贪吃蛇游戏 发布时间:2020-07-09 15:09:59 来源:亿速云 阅读:122 作者:Leah 如何用HTML5制作贪吃蛇游戏?很多新手对此不是很清楚,为了帮助大家解决这 ...

  8. 手把手教你使用 Python 制作贪吃蛇游戏

    贪吃蛇游戏是有史以来最受欢迎的街机游戏之一.在这个游戏中,玩家的主要目标是在不撞墙或不撞墙的情况下抓住最大数量的水果.在学习 Python 或 Pygame 时,可以将创建蛇游戏视为一项挑战.这是每个 ...

  9. python制作贪吃蛇游戏_用Python写贪吃蛇游戏的代码实例

    这篇文章主要为大家详细介绍了Python贪吃蛇游戏的编写代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 最近在学Python,想做点什么来练练手,命令行的贪吃蛇一般是C的练手项目,但是一时之间 ...

最新文章

  1. linux命令行中,双引号中的感叹号将被解释为历史命令
  2. 58同城创始人姚劲波:未来十年是中国创业最好机会
  3. php+html5+jquery断点续传_PHP学习路线:PHP从入门到精通教程
  4. 华为手机下拉菜单变大_不能不知的华为手机菜单栏,知道3个的算你手机没白买!...
  5. OOAD 面向对象分析与设计
  6. matlab循环读取变量,Matlab for 多个变量循环能不能这样啊 ,求教高手!!!!
  7. SpringBoot入门之上传文件
  8. 课下作业:评估输入法(搜狗)
  9. 2017年度深圳市知识产权优势企业拟定名单公示(钱多,工资高的公司)
  10. 如何修改服务器上的端口号,如何修改远程服务器端口号
  11. Need ffmpeg exe. You can download it by calling: imageio.plugins.ffmpeg.download()
  12. 一些自己使用VS2015的心得
  13. [iOS]在tableview中用动画效果改变cell的高度
  14. 数字和ASII码之间的转换
  15. bit digger
  16. 【量化笔记】ARCH效应检验及GARCH建模的python实现
  17. 再见,腾讯微博!仅比新浪晚8个月,用户超3亿,宣布即将关停
  18. PaddlePaddle深度学习实战——英法文翻译机
  19. 搬文工在行动:“HP大中华区总裁孙振耀退休感言”
  20. 计算机应用中的pe是什么意思,重装系统的pe是指什么?pe有什么作用?

热门文章

  1. 影响100年的营销启示
  2. 基于Mathcad的LLC公式推导与化简(二)
  3. 两万字详解!InnoDB锁专题!
  4. 统一配置Outlook策略实现统一管理
  5. 懒人精灵ocr文字查找工具的使用
  6. excel的主要功能_晨曦计价软件新增的这项功能,你肯定不知道!
  7. 苹果6 经常显示无服务器,苹果6老是显示无服务是为什么
  8. 【附源码】计算机毕业设计JAVA汉字学习网站
  9. 小学生计算机管理员寄语,小学生励志寄语
  10. 已知A,B两点及C点(不在直线AB上)坐标,求在直线AB上距离A点距离为线段AC长度的点D坐标