作者:Sadness_小妖_619 | 来源:互联网 | 2023-06-06 20:32
本项目为贪吃蛇游戏,上下左右控制蛇的行走路径,并将游戏打包为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(&#39;python贪吃蛇小游戏&#39;)# 初始化变量snakePosition = [80, 80] # 贪吃蛇起始位置,前面的参数数水平方向的距离,后面的参数是垂直方向的距离# 贪吃蛇的长度,设定为方块的三百,每个方块的长度为25snakebody = [[80, 80], [60, 80], [40, 80]]targetPosition = [200, 400] # 方块的初始位置targetflag = 1 # 定义一个标记,目的用来判断果实是否被吃掉direction = &#39;right&#39; # 初始化运动方向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 = &#39;right&#39;print(&#39;向右&#39;)if event.key == K_LEFT:changeDirection = &#39;left&#39;print("向左")if event.key == K_DOWN:print(&#39;向下&#39;)changeDirection = &#39;down&#39;if event.key == K_UP:print(&#39;向上&#39;)changeDirection = &#39;up&#39;# 判断是否按下了esc键if event.key == K_ESCAPE:pygame.event.post(pygame.event.Event(QUIT))# 判断蛇的方向if changeDirection == &#39;left&#39; and not direction == &#39;right&#39;:direction = changeDirectionif changeDirection == &#39;right&#39; and not direction == &#39;left&#39;:direction = changeDirectionif changeDirection == &#39;down&#39; and not direction == &#39;up&#39;:direction = changeDirectionif changeDirection == &#39;up&#39; and not direction == &#39;down&#39;:direction = changeDirection# 根据方向移动蛇头位置if direction == &#39;right&#39;:snakePosition[0] += 20if direction == &#39;left&#39;:snakePosition[0] -= 20if direction == &#39;up&#39;:snakePosition[1] -= 20if direction == &#39;down&#39;: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程序打包完成,发给你的朋友,双击开始属于你们的快乐吧!