摘要

Pygame 是一组用来开发游戏软件的 Python 程序模块,此项目就是导入Pygame模块来设计开发简单拼图游戏,引入Random模块,随机打乱拼图次数、拼图块坐标、拼图图片,将图像分为m×n个矩形块,并将图像右下角的矩形块替换为空白块后,将这些矩形块随机摆放成原图像的形状。游戏目标为通过移动非空白块将随机摆放获得的图像恢复成原图像的模样,且规定移动操作仅存在于非空白块移动到空白块。
关键字:Pygame、Python、Random

Abstract

Pygame is a set of Python programs to develop game software module, this project is to import Pygame module to design a simple puzzle game, the introduction of the Random module, Random disturb jigsaw puzzle, jigsaw puzzle piece of coordinates, image, the image is divided into m * n rectangle block, and replaced with blank blocks of the image at the bottom right corner rectangle, the rectangle block randomized into the shape of the original image.The goal of the game is to restore the image obtained by randomly placing the non-blank block to the original image by moving the non-blank block, and the movement operation only exists when the non-blank block is moved to the blank block.
Keywords: Pygame, Python, Random

第1章 引言

1.1 课题背景

拼图游戏是家喻户晓的益智类小游戏,不管是哪个年龄段都有它的爱好者,随着社会的发展,生活节奏越来越快,人们的压力也越来越大,通过玩休闲益智类游戏解压,成为忙碌的都市人们的不二选择。拼图游戏就是其中很有代表性的一种,它可以使人在休闲娱乐的同时锻炼记忆力、观察力。

1.2 目的和意义

选择这个拼图游戏作为课题,一方面是想学习和掌握Pygame的课外知识,另一方面可增加学习的趣味性和培养对此课程的兴趣。相对国外对Pygame研究的热火朝天,国内则显得比较冷淡,甚至商场上都没有一本完整地介绍Pygame框架的指导书,希望通过这次的游戏设计,使得更多人投入研究Pygame框架中。

1.3 国内外的发展现状

96,97年的国产游戏产品是单机版的游戏,在当时的市场上虽然品质和档次不如外来产品,但也占有一定的市场,例如《仙剑奇侠传》、《三国志》等系列带有鲜明中国特色与气息的游戏在市场上掀起了一波高潮。1998年联众与中国游戏中心等老牌的游戏平台的推出标志着电脑游戏在中国的开荒与生根。但是到了1999年在没有形成主流产品的情况下,政策不明朗,包括开发资金出现问题等原因国产游戏开始走下坡路。一直到了2000年,网络游戏问世并且很快流行起来我国的游戏行业才又渐渐的复苏,但是由于投入差距太大,起步晚等原因与外国游戏相对而言并没有竞争力。
但如今,网络游戏走入盛世,成为一部分人休闲娱乐的主要行为。国产游戏渐渐走入国际市场,而且基于网络的发展真正实现了网络全球化。

1.4 开发环境

Python版本:3.8.2
相关模块 :Pygame模块;
以及一些Python自带的模块
环境搭建 :安装Python;
pip安装需要的模块

第2章 系统开发平台的阐述

2.1 Python之Pygame

Pygame就是Python中使用它的一个库,是建立在SDL基础上,允许实时电子游戏研发而无需被低级语言束缚。基于这样一个设想,所有需要的游戏功能和理念都都完全简化为游戏逻辑本身,所有的资源结构都可以由高级语言提供,如Python。Pygame作为Python下的一个开源框架,平台的兼容性非常的好,目前市面上流行的操作系统都有很好的支持。
Pygame环境搭建:利用pip安装Pygame

图2.1 安装Pygame

2.2 Pygame环境的要求

Pygame作为Python下的一个开源框架,平台的兼容性非常的好,目前市面上流行的几乎所有的操作系统都有很好的支持,随意对平台要求不是很高。而且,作为一个非编译的语言种类,对开发平台的硬件需求也不会有很大的要求,一般的平台配置就满足开发需求。而本文为方便起见所有的代码都运行在windows7下的平台上,其他操作系统例如MAC系统可以参照windows7系统下的操作来进行环境的配置和搭建。

第3章 总体设计

3.1 游戏流程概述

游戏基本规则:将图像分为m×n个矩形块,并将图像右下角的矩形块替换为空白块后,将这些矩形块随机摆放成原图像的形状。游戏目标为通过移动非空白块将随机摆放获得的图像恢复成原图像的模样,且规定移动操作仅存在于非空白块移动到空白块。
游戏流程图:

图3.1 游戏流程图
游戏基本流程如下:

  1. 运行:run “python pintu.py”,进入初始化界面
  2. 初始化:显示窗口大小及内容、加载图片和背景音乐
  3. 游戏循环:玩家输入对应难度的字符,开始游戏
  4. 游戏控件:玩家可以通过键盘或鼠标来完成移动拼图
  5. 游戏结束:完成拼图,提示:“真聪明!挑战成 功”游戏结束
    按Esc游戏结束

3.2 游戏总体设计

3.2.1 总体设计流程图


图3.2 设计流程图
整体设计思想:进入游戏主菜单后,显示游戏规则、游戏名、游戏难度等级,加载音乐,用户可选择游戏难度,拼图图片随机,按Esc可退出游戏。

3.2.2 游戏选择模块设计

游戏选择模块提供了4个难度设置选项:分别是3×3、4×4、5×5。难度选择灵活,供不同水平的玩家自由选择,避免打击入门级玩家的自信心或让高手级玩家缺乏挑战。选择好后,即可开始游戏。

3.3 图片模块设计

图片模块实现随机分配图片给玩家,引发玩家的好奇心,开始游戏后,按比例及不同挑战难道将切割后的图片随机分布到界面。

3.4 音乐模块

音乐模块可使玩家一边享受着悦耳的音乐,一边进行拼图游戏,给玩家舒适的体验。

第4章 详细设计

4.1图片模块

4.1.1随机选取一张图片

 定义一个名为GetImagePath的类,引入os和random模块,用os.listdir()、os.path.join()和random.choice()方法,使得游戏开始时,从根目录中获取随机图片。
 os.listdir()方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。
 os.path.join()函数,连接两个或更多的路径名组件。
 choice()方法返回一个列表,元组或字符串的随机项。

图4.1 定义GetImagePath()

图4.2 根目录下图片素材

图4.3 主函数初始化加载图片

图4.4 配置文件中设置屏幕大小及图片素材目录

4.1.2获得打乱的拼图

 定义名为CreateBoard的类,引入random模块,用random.randint()方法,使得去掉右下角那块(即用白块代替),并获得打乱后大小一样的方块拼图。
 random.randint(a,b)方法用于生成一个指定范围内的正数,其中参数a是下限,参数b是上限,生成的随机数n:a<=n<=b。

图4.5 定义CreateBoard()


图4.6 获得大小一样的方块及避免初始化就为原图代码

图4.7 在配置文件中设计随机打乱拼图次数代码

4.2 控制模块

4.2.1 控制白块移动的位置

 定义moveR、moveL、moveD、moveU的类,控制空白块的移动
 moveR()将空白Cell左边的Cell右移到空白Cell位置
 moveL()将空白Cell右边的Cell左移到空白Cell位置
 moveD()将空白Cell上边的Cell下移到空白Cell位置
 moveU()将空白Cell下边的Cell上移到空白Cell位置

图4.8 白块移动的位置代码

4.2.2 控制定义移动操作

 此游戏可以使用键盘操作,也可直接鼠标操作。

图4.9 游戏操作代码

4.3 界面显示模块

 设计游戏开始和结束界面,根据判断游戏是否结束类来展示不同的界面,从游戏界面一出现并伴随着背景音乐

图4.10 游戏初始界面代码

图4.11 判断游戏是否结束代码


图4.12 游戏开始时界面代码

图4.13 游戏结束时界面代码

图4.14 加载背景音乐代码

4.4 配置模块

 把屏幕大小、图片素材根目录、字体路径、定义颜色、FPS、随机打乱拼图次数、背景音乐及路径封装到同一个配置文件中。


图4.15 配置文件

第5章 实验展示

图5.1 实验展示 (1)

图5.2 实验展示 (2)

图5.3 实验展示 (3)

结论

通过本次实验,我学习了Pygame模块的一些基础知识,并结合自己喜欢的素材制作了一个简单的拼图游戏,激发了对此门课程的兴趣。作为一个轻量级的开发语言,Pygame有着无比的先天优势,大量的完整的安全的调用API接口,可以大大的加快开发者的开发速度,同时也避免了平台不兼容而影响游戏开发的进程。更为重要的一点,作为开源语言Python 的扩展库,其开源的特性使得这个Pygame库不断的在壮大,更多功能更高级的接口被程序员开发出来,这些不断推陈出新的技术支持,使得Pygame开发的游戏也会越发的完美,开发出的游戏的可玩性也会越来越好。

致谢

在此感谢在同学的帮助下,完成了这个拼图游戏,对此作品的分析设计和实现都下了很大功夫,查阅了众多资料文献,最终的设计成果令大家十分满意。也感谢本课程老师的耐心指导和鼓励。同时,也感谢各位读者朋友耐心读完本文,你们的支持便是我们前进的动力!

Python语言程序设计课程论文——Python小游戏相关推荐

  1. lenpython执行结果_哪个选项是下面代码的执行结果? len ( Python 语言程序设计课程 )_学小易找答案...

    [填空题]构成地衣体的真菌绝大部分属于____亚门,少数为____亚门和____亚门的真菌. [单选题]给定字典 d ,哪个选项对 d.get(x, y) 的描述是正确的? [单选题]对于序列 s , ...

  2. python语言程序设计嵩天-Python语言程序设计基础(第2版)嵩天课后答案

    嵩天.礼欣.黄天羽Python语言程序设计基础(第2版)习题答案本书提出了以理解和运用计算生态为目标的Python语言教学思想,在系统讲解Python语言语法的同时介绍了从数据理解到图像处理的14个P ...

  3. python语言程序设计是什么,python语言程序设计教程

    python语言程序设计是什么 Python是一种跨平台的计算机程序设计语言. 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. 最初被设计用于编写自动化脚本(shell),随着版本的 ...

  4. python语言程序设计有用吗,python对设计师有什么用

    python对电商设计师有帮助吗 python对电商设计师有帮助.Python是完全面向对象的语言.函数.模块.数字.字符串都是对象.并且完全支持继承.重载.派生.多继承,有益于增强源代码的复用性. ...

  5. python语言程序设计——深入学习python

    写在这里的初衷,一是备忘,二是希望得到高人指点,三是希望能遇到志同道合的朋友. 1.编程语言种类的发展 2.Python特点与优势 Python语言是通用语言,适用于普适的计算机问题求解的开发. 最大 ...

  6. python语言程序设计梁勇-Python语言程序设计(美-梁勇)第1章习题解答

    Python语言程序设计(美-梁勇)第1章计算机.程序和Python概述习题解答 第一章 计算机.程序和python概述 1.1什么是硬件?什么是软件? 答:硬件包括计算机上能看到的物理元素,而软件提 ...

  7. [Python语言程序设计]课程选课系统

    项目文件:课程选课系统 开发环境:PyCharm 2021.1.1 文章目录 一.任务描述及数据 1.1 要求 二.需求分析及实现路线 2.1 管理视图 2.2 学员视图 2.3 讲师视图 三.模块设 ...

  8. python语言程序设计基础网课-Python语言程序设计基础答案

    [填空题]逻辑型数据在参与算术运算的过程中可以被当作整数进行操作,通常True的值对应整数1,False的值对应整数____________. [单选题]在Python中,不可以用来表示字符串的符号是 ...

  9. python语言程序设计嵩天-python语言程序设计基础(嵩天版),第二章程序练习题...

    python语言程序设计基础(嵩天版),第二章程序练习题 欢迎访问江南烧酒的博客 2.2汇率兑换程序.按照1美元=6人民币汇率编写一个美元和人民币的双向兑换程序. """ ...

  10. 总结Python语言程序设计课程-推荐的Python第三方库

    从数据处理到人工智能 python数据分析方向第三方库有:Numpy, SciPy, Pandas Python数据可视化方向的第三方库有: Seaborn, Matplotblib, Mayavi, ...

最新文章

  1. Binary Tree Postorder Traversal
  2. OpenCV 相机校正
  3. JQuery弹出层,点击按钮后弹出遮罩层,有关闭按钮
  4. c#中消息机制阻塞实例与结论
  5. Linux怎么删除虚拟硬盘,2017.05.10 qemu-nbd 全自动挂载/卸载 虚拟硬盘中所有可用分区 的 脚本...
  6. python中while的用法_Python学习笔记之While循环用法分析
  7. CRM 2013 中业务流程的
  8. java实现SPFA算法
  9. 网页播放器代码集中营(2)
  10. 简洁404页面源码 | 自适应404页面HTML源代码下载
  11. 3D引擎优化: 分布式渲染系统能聚沙成塔
  12. 2014 usnews 计算机科学 排名 天道留学,2014年USNews美国公立大学排名
  13. 大白菜超级U盘启动盘制作工具极速装机版
  14. 定时器应用—选项卡自动切换
  15. ARM Cortex-M3/M4内核相关
  16. 层次、网状、关系模型
  17. 解决索尼WH-1000XM3使用蓝牙连接电脑无法使用麦克风的问题
  18. 鹰潭高通量测序建设细节概述
  19. 接口测试—-工具篇,实现接口自动化
  20. 计算机科学与技术学习路线编程基础四大件应用实践编程(含C++学习路线)

热门文章

  1. js数组去重(for循环去遍历源数组)
  2. windows下使用rsync
  3. SQL Server2012新特性
  4. 自己写好记的Oracle的 Group By 、 Group By Rollup和Group By Cube基础
  5. QT制作动画收缩效果
  6. C/C++中的位运算
  7. vue style.css,vue * !!vue-style-loader!css-loader?
  8. Linux socket程序演示
  9. 基于国产密码算法的开源OpenSSL密码库
  10. telegtram的通信协议MTproto2.0学习3 之 (telethon代码分析与TL的实现1)