基于 python 的德云消消乐益智小游戏设计论文+源码

 

 

 

 

致谢  15

参考文献  15

第一章 引言

 

 

1.1 课题背景

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

1.2 目的和意义

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

1.3 国内外的发展现状

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

但如今,网络游戏走入盛世,成为一部分人休闲娱乐的主要行为。国产游戏渐

渐走入国际市场,而且基于网络的发展真正实现了网络全球化。

1.4 开发环境

Python 版本:3.9

相关模块 :Pygame 模块;

以及⼀些 Python自带的模块

环境搭建 :安装 Python;pip 安装需要的模块

 

 

 

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

2.1Python 之 pygame

 

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

Pygame 环境搭建:利用pip 安装 Pygame

15db9bc2eec34963a3d410ffe8f9e8e6.png

 

2.2pygame 环境的要求

Pygame 作为Python 下的一个开源框架,平台的兼容性非常的好,  目前市面上 流行的几乎所有的操作系统都有很好的支持,随意对平台要求不是很高。而且, 作为一个非编译的语言种类,对开发平台的硬件需求也不会有很大的要求,一 般的平台配置就满足开发需求。

第三章总体设计

3.1 游戏流程概述

游戏流程图如图 3.1 所示:

0dff39715e7a45738836d06287bca904.png

4.3 游戏实现

4.3.1 游戏图形化界面

 

先创建一个主窗口,代码如下:

pygame.init()

screen = pygame.display.set_mode((WIDTH, HEIGHT))

pygame.display.set_caption('德云消消乐')

效果如下:

 

15aa0eb22a574b6588bc85362ff8815b.png

 

在主窗口中画一个 8x8 的网格,代码如下:

def drawGrids(self):

for x in range(NUMGRID):

for y in range(NUMGRID):

rect=pygame.Rect((XMARGIN+x*GRIDSIZE,YMARGIN+y*GRIDSIZE, GRIDSIZE, GRIDSIZE))#网格位置和尺寸

self.drawBlock(rect, color=(0, 0, 255), size= 1)#网格的颜色大小 效果如下:

 

d23a9e9f6b9e48f4915a0aa33a3ff0ef.png

 

在网格中放入各种拼图块:

while True: #while 是循环语句,True 在 while 后面表示 while 开始循环的条件 self.all_gems = []#空的块

self.gems_group = pygame.sprite.Group()#定义块组

for x in range(NUMGRID):#range 函数的 for 循环;numgrid 是一个库,它 基于原子坐标、原子类型和基集的分子信息

self.all_gems.append([])#append 添加到列表中

for y in range(NUMGRID):

gem=gemSprite(img_path=random.choice(self.gem_imgs), size=(GRIDSIZE,GRIDSIZE),

position=[XMARGIN+x*GRIDSIZE,YMARGIN+y*GRIDSIZ

E-NUMGRID*GRIDSIZE],

downlen=NUMGRID*GRIDSIZE)

 

 

 

 

self.all_gems[x].append(gem)

self.gems_group.add(gem)#.add()将对象作为一个整体,为字典添 加元素,若添加的元素已在字典中中,则不执行任何操作

if self.isMatch()[0] == 0:

break #终止循环

效果如下:

a43f783b1f104c76a0a163664fb5b8a0.png

其余部分见论文 

 

 

 

  • 3
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值