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源码)相关推荐

  1. python拼图_利用python制作拼图小游戏的全过程

    开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Python自带的模块 关注公众号:Python学习指南,回复"拼图"即可获取源码 环境搭建 安装P ...

  2. 利用python制作拼图_利用python制作拼图小游戏的全过程

    开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Python自带的模块 关注公众号:Python学习指南,回复"拼图"即可获取源码 环境搭建 安装P ...

  3. matlab GUI制作拼图小游戏

    matlab GUI制作拼图小游戏 最近帮同学的忙制作一个拼图贴上代码和效果图,以后再详细说明.之前一般找到的拼图游戏都是"推格子"形式的,由于具体的要求,不能应用这种模板. 本人 ...

  4. python程序员工资-被Python程序员高工资惊到!报告却显示Python热度降了?

    原标题:被Python程序员高工资惊到!报告却显示Python热度降了? 作为爱刷抖音一族,最近有可能会刷到这样一张工资条. 工资条上,一 位岗位为Python工程师名叫李成志的兄弟,月基本工资为12 ...

  5. Python小游戏——Pygame制作2048小游戏

    pygame之2048小游戏 初学python,发现看网上的python理论太过枯燥. 哎嘿~~干脆直接弄个小游戏叭,一边学习,一边写代码. 备注: 1.很多地方我尽量注解,方便大家观看. 2.完整代 ...

  6. 神探Python程序员,带你千里捉小三!

    程序员的隐秘 大家好我是小P 在众人眼中,我是一名Python程序员. 但其实我还有个不为人知的身份,私家侦探! 今天,我接到了一份委托-. 一份委托 通过委托人的述说,专门查了一下深圳最近的天气,保 ...

  7. python应用学习(六)——tkinter制作连连看小游戏

    python 制作连连看小游戏 前言 一.准备 二.游戏简单介绍 1.游戏规则 2.游戏设计所需的图片库: 三.游戏设计 I.创建Point点类 II.定义函数 III.游戏的主函数逻辑 IV.完整代 ...

  8. python程序员月薪多少-Python程序员就业行情以及前景分析

    最近Python大热,就想要分析一下相关的市场需求,看一下Python到底集中在哪些城市,企业对Python工程师的一些需求到底是怎样的,基于此,爬取了国内某招聘平台的相关数据,获取到30000+条相 ...

  9. python经典教程游戏_使用pygame制作经典小游戏:五子棋

    准备 python基础相关准备: pygame的基础知识,参考目光博客的"用Python和Pygame写游戏-从入门到精通" 安装python 3.8.0 在python官网下载, ...

  10. 什么样的python程序员好找工作-Python学到什么程度才可以去找工作?掌握这4点足够了!...

    大家在学习Python的时候,有人会问"Python要学到什么程度才能出去找工作",对于在Python培训机构学习Python的同学来说这都不是问题,因为按照Python课程大纲来 ...

最新文章

  1. 【新书】分布式强化学习
  2. 怎么修改nginx的access.log的时间格式
  3. java 等额本金等额本息工具类
  4. 五、资本资产定价模型 CAPM
  5. 山工kw什么意思_【山工装载机故障灯KW什么意思】专区-山工-装载机-铁甲网
  6. 976 AlvinZH想回家(背包DP大作战T)
  7. Cow Bowling POJ - 3176(基础的动态规划算法)
  8. python算法入门_GitHub标星2.6万!Python算法新手入门大全
  9. c语言exit_看了这几个C语言例子,你一定会说5个哇塞,声音一次比一次大
  10. 如何修改和配置idea编辑器的编码
  11. 『TensorFlow』通过代码理解gan网络_中
  12. http请求过程_“HTTP请求的整个过程”与它引出了整个计算机网络知识图谱(一)...
  13. clover如何使用UEFI引导和EFI驱动选择
  14. juk互粉攻略set结构体
  15. C++二进制文件读写,以及数据的拼合与还原
  16. hⅰgh怎么读音发音英语_英语发音规则---gh
  17. 【LeetCode每日一题】1723. 完成所有工作的最短时间
  18. 又涨了?2021年4月程序员工资新鲜出炉!
  19. 算法-二叉树:合并两颗二叉树
  20. 已解决AttributeError: module ‘tkinter‘ has no attribute ‘TK

热门文章

  1. DataX 异构数据源离线同步
  2. 深度学习在搜索推荐领域的应用(一次阿里云天池平台技术分享)
  3. 苹果自带相册打马赛克_科普 | 谨慎使用苹果自带的笔打码订单哦!
  4. 92.发光文字加载特效
  5. 邮箱客户端程序的实现
  6. mac pro词典无法使用问题
  7. 木子-数据库-sqlServer数据库安装方式
  8. you-get下载bilibili视频
  9. python制作时间,如何利用python制作时间戳转换工具详解
  10. Google收购Urchin