Python 程序员过中秋Python+pygame 制作拼图小游戏(附源码:5源码)
Python 程序员过中秋Python+pygame 制作拼图小游戏(附源码:5源码)
又是一年中秋至一花好月 圆夜,佳文当共鉴。Python+ pygame制作拼图小游戏;
制作一个自己的拼图小游戏,看看几步可以观赏到月亮。
官方活动入口
文章目录
- 1. 引言
- 1.1 编写目的
- 1.2 术语
- 1.3 项目开发环境
- 2. 业务概述
- 3 pygame 简单介绍
- 4 . 代码介绍
- 4.1安装 pygame
- 5. 源码
- 6. 打包成exe应用程序分享给好友
1. 引言
1.1 编写目的
本文档是对Python语言制作拼图小游戏界面功能需求进行分析归纳,作为软件开发项目的需求标准
1.2 术语
1. 鼠标单击图片拼图游戏开始
1.3 项目开发环境
开发语言:python+pygame
开发环境:windows
开发工具:Pycharm
2. 业务概述
疫情原因大多数漂泊在外的码农么都回不了家了,制作一个自己的拼图小游戏,看看几步可以观赏到月亮。
3 pygame 简单介绍
Pygame 是一个专门用来开发游戏的 Python 模块,主要为开发、设计 2D 电子游戏而生,它是一个免费、开源的第三方软件包,支持多种操作系统,具有良好的跨平台性(比如 Windows、Linux、Mac 等)。Pygame 是 Pete Shinners 在 SDL(Simple DirectMedia Layer,一套开源的跨平台多媒体开发库)基础上开发而来,其目的是取代 PySDL。
Pygame 可以看做是对 SDL 的封装,在 SDL 库基础上提供了各种 Python 的 API接口。目前 SDL 主要用于多媒体领域,比如开发游戏、模拟器、媒体播放器等。
通过 Pygame 我们能够创建各种各样的游戏和多媒体程序,但相比于开发大型 3D 游戏来说,它更擅长与开发 2D 游戏,比如扫雷、纸牌游戏、贪吃蛇、超级马里奥、飞机大战等,如果是 3D 游戏,可以选择一些功能更为全面的 Python 游戏开发库,比如 Panda3D(迪士尼开发的3D游戏引擎),PyOgre(Ogre 3D渲染引擎)等。Python 作为一门解释型语言并不适合开发大型的 3D 游戏,但 Python 通过对其他语言的接口封装,使自身具备了开发大型 3D 游戏的能力,例如 Panda3D 的底层是用 C++ 语言编写的。一些较为知名的 3D 游戏,比如魔兽世界、文明帝国4、战地风云2,这些游戏都是使用 Python 语言开发的,而国内较为知名的“阴阳师”手游,也是由 Python 语言开发而成。
4 . 代码介绍
4.1安装 pygame
pip install pygame
5. 源码
# -*- coding: utf-8 -*-
# @Time : 2022-09-08 14:03
# @Author : hyh
# @File : 中秋拼图.py
# @Software : PyCharmimport pygame, sys, random
from pygame.locals import *# 一些常量
WINDOWWIDTH = 500
WINDOWHEIGHT = 500
BACKGROUNDCOLOR = (255, 255, 255)
BLUE = (0, 0, 255)
BLACK = (0, 0, 0)
FPS = 40VHNUMS = 3
CELLNUMS = VHNUMS * VHNUMS
MAXRANDTIME = 100# 退出
def terminate():pygame.quit()sys.exit()# 随机生成游戏盘面
def newGameBoard():board = []for i in range(CELLNUMS):board.append(i)blackCell = CELLNUMS - 1board[blackCell] = -1for i in range(MAXRANDTIME):direction = random.randint(0, 3)if (direction == 0):blackCell = moveLeft(board, blackCell)elif (direction == 1):blackCell = moveRight(board, blackCell)elif (direction == 2):blackCell = moveUp(board, blackCell)elif (direction == 3):blackCell = moveDown(board, blackCell)return board, blackCell# 若空白图像块不在最左边,则将空白块左边的块移动到空白块位置
def moveRight(board, blackCell):if blackCell % VHNUMS == 0:return blackCellboard[blackCell - 1], board[blackCell] = board[blackCell], board[blackCell - 1]return blackCell - 1# 若空白图像块不在最右边,则将空白块右边的块移动到空白块位置
def moveLeft(board, blackCell):if blackCell % VHNUMS == VHNUMS - 1:return blackCellboard[blackCell + 1], board[blackCell] = board[blackCell], board[blackCell + 1]return blackCell + 1# 若空白图像块不在最上边,则将空白块上边的块移动到空白块位置
def moveDown(board, blackCell):if blackCell < VHNUMS:return blackCellboard[blackCell - VHNUMS], board[blackCell] = board[blackCell], board[blackCell - VHNUMS]return blackCell - VHNUMS# 若空白图像块不在最下边,则将空白块下边的块移动到空白块位置
def moveUp(board, blackCell):if blackCell >= CELLNUMS - VHNUMS:return blackCellboard[blackCell + VHNUMS], board[blackCell] = board[blackCell], board[blackCell + VHNUMS]return blackCell + VHNUMS# 是否完成
def isFinished(board, blackCell):for i in range(CELLNUMS - 1):if board[i] != i:return Falsereturn True# 初始化
pygame.init()
mainClock = pygame.time.Clock()# 加载图片
gameImage = pygame.image.load('C:/Users/Administrator/Desktop/csdn/image/12.jpg')
gameRect = gameImage.get_rect()# 设置窗口,窗口的宽度和高度取决于图片的宽高
windowSurface = pygame.display.set_mode((gameRect.width, gameRect.height))
pygame.display.set_caption('python拼图中秋快乐-度假的鱼')cellWidth = int(gameRect.width / VHNUMS)
cellHeight = int(gameRect.height / VHNUMS)finish = FalsegameBoard, blackCell = newGameBoard()# 游戏主循环
while True:for event in pygame.event.get():if event.type == QUIT:terminate()if finish:continueif event.type == KEYDOWN:if event.key == K_LEFT or event.key == ord('a'):blackCell = moveLeft(gameBoard, blackCell)if event.key == K_RIGHT or event.key == ord('d'):blackCell = moveRight(gameBoard, blackCell)if event.key == K_UP or event.key == ord('w'):blackCell = moveUp(gameBoard, blackCell)if event.key == K_DOWN or event.key == ord('s'):blackCell = moveDown(gameBoard, blackCell)if event.type == MOUSEBUTTONDOWN and event.button == 1:x, y = pygame.mouse.get_pos()col = int(x / cellWidth)row = int(y / cellHeight)index = col + row * VHNUMSif (index == blackCell - 1 or index == blackCell + 1 or index == blackCell - VHNUMS or index == blackCell + VHNUMS):gameBoard[blackCell], gameBoard[index] = gameBoard[index], gameBoard[blackCell]blackCell = indexif (isFinished(gameBoard, blackCell)):gameBoard[blackCell] = CELLNUMS - 1finish = TruewindowSurface.fill(BACKGROUNDCOLOR)for i in range(CELLNUMS):rowDst = int(i / VHNUMS)colDst = int(i % VHNUMS)rectDst = pygame.Rect(colDst * cellWidth, rowDst * cellHeight, cellWidth, cellHeight)if gameBoard[i] == -1:continuerowArea = int(gameBoard[i] / VHNUMS)colArea = int(gameBoard[i] % VHNUMS)rectArea = pygame.Rect(colArea * cellWidth, rowArea * cellHeight, cellWidth, cellHeight)windowSurface.blit(gameImage, rectDst, rectArea)for i in range(VHNUMS + 1):pygame.draw.line(windowSurface, BLACK, (i * cellWidth, 0), (i * cellWidth, gameRect.height))for i in range(VHNUMS + 1):pygame.draw.line(windowSurface, BLACK, (0, i * cellHeight), (gameRect.width, i * cellHeight))pygame.display.update()mainClock.tick(FPS)
6. 打包成exe应用程序分享给好友
1. 安装pyinstaller
pip install pyinstaller
2. 直接cmd切换到这个脚本的目录下执行命令:
pyinstaller -F 中秋活动.py
-F参数表示覆盖打包,这样在打包时,不管我们打包几次,都是最新的,这个记住就行,固定命令。
3. 双击exe就可以启动了哈 来试试最快几步可以观赏到圆月
代码中的源图片可以保存下载
Python 程序员过中秋Python+pygame 制作拼图小游戏(附源码:5源码)相关推荐
- python拼图_利用python制作拼图小游戏的全过程
开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Python自带的模块 关注公众号:Python学习指南,回复"拼图"即可获取源码 环境搭建 安装P ...
- 利用python制作拼图_利用python制作拼图小游戏的全过程
开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Python自带的模块 关注公众号:Python学习指南,回复"拼图"即可获取源码 环境搭建 安装P ...
- matlab GUI制作拼图小游戏
matlab GUI制作拼图小游戏 最近帮同学的忙制作一个拼图贴上代码和效果图,以后再详细说明.之前一般找到的拼图游戏都是"推格子"形式的,由于具体的要求,不能应用这种模板. 本人 ...
- python程序员工资-被Python程序员高工资惊到!报告却显示Python热度降了?
原标题:被Python程序员高工资惊到!报告却显示Python热度降了? 作为爱刷抖音一族,最近有可能会刷到这样一张工资条. 工资条上,一 位岗位为Python工程师名叫李成志的兄弟,月基本工资为12 ...
- Python小游戏——Pygame制作2048小游戏
pygame之2048小游戏 初学python,发现看网上的python理论太过枯燥. 哎嘿~~干脆直接弄个小游戏叭,一边学习,一边写代码. 备注: 1.很多地方我尽量注解,方便大家观看. 2.完整代 ...
- 神探Python程序员,带你千里捉小三!
程序员的隐秘 大家好我是小P 在众人眼中,我是一名Python程序员. 但其实我还有个不为人知的身份,私家侦探! 今天,我接到了一份委托-. 一份委托 通过委托人的述说,专门查了一下深圳最近的天气,保 ...
- python应用学习(六)——tkinter制作连连看小游戏
python 制作连连看小游戏 前言 一.准备 二.游戏简单介绍 1.游戏规则 2.游戏设计所需的图片库: 三.游戏设计 I.创建Point点类 II.定义函数 III.游戏的主函数逻辑 IV.完整代 ...
- python程序员月薪多少-Python程序员就业行情以及前景分析
最近Python大热,就想要分析一下相关的市场需求,看一下Python到底集中在哪些城市,企业对Python工程师的一些需求到底是怎样的,基于此,爬取了国内某招聘平台的相关数据,获取到30000+条相 ...
- python经典教程游戏_使用pygame制作经典小游戏:五子棋
准备 python基础相关准备: pygame的基础知识,参考目光博客的"用Python和Pygame写游戏-从入门到精通" 安装python 3.8.0 在python官网下载, ...
- 什么样的python程序员好找工作-Python学到什么程度才可以去找工作?掌握这4点足够了!...
大家在学习Python的时候,有人会问"Python要学到什么程度才能出去找工作",对于在Python培训机构学习Python的同学来说这都不是问题,因为按照Python课程大纲来 ...
最新文章
- 【新书】分布式强化学习
- 怎么修改nginx的access.log的时间格式
- java 等额本金等额本息工具类
- 五、资本资产定价模型 CAPM
- 山工kw什么意思_【山工装载机故障灯KW什么意思】专区-山工-装载机-铁甲网
- 976 AlvinZH想回家(背包DP大作战T)
- Cow Bowling POJ - 3176(基础的动态规划算法)
- python算法入门_GitHub标星2.6万!Python算法新手入门大全
- c语言exit_看了这几个C语言例子,你一定会说5个哇塞,声音一次比一次大
- 如何修改和配置idea编辑器的编码
- 『TensorFlow』通过代码理解gan网络_中
- http请求过程_“HTTP请求的整个过程”与它引出了整个计算机网络知识图谱(一)...
- clover如何使用UEFI引导和EFI驱动选择
- juk互粉攻略set结构体
- C++二进制文件读写,以及数据的拼合与还原
- hⅰgh怎么读音发音英语_英语发音规则---gh
- 【LeetCode每日一题】1723. 完成所有工作的最短时间
- 又涨了?2021年4月程序员工资新鲜出炉!
- 算法-二叉树:合并两颗二叉树
- 已解决AttributeError: module ‘tkinter‘ has no attribute ‘TK