Python开发接水果小游戏

本文介绍了使用Python游戏引擎Pylash开发接水果小游戏的全过程,包括创建项目、编写Hello World、游戏逻辑实现、精灵类和事件监听器的使用。游戏玩法是控制人物接水果得分,避开障碍物。文章详细讲解了Pylash的使用,包括加载资源、创建开始界面、编写Player和Item类,以及处理碰撞和计分系统。源代码可在Pylash项目仓库中找到。
摘要由CSDN通过智能技术生成

我研发的Python游戏引擎Pylash已经更新到1.4了。现在我们就来使用它完成一个极其简单的小游戏:接水果。以下是游戏截图:

接水果 游戏截图

游戏操作说明:点击屏幕左右两边或者使用键盘方向键控制人物移动,使人物与水果接触得分,碰到非水果的物品,如碎玻璃,就会game over。

接下来是详尽的开发过程,篇幅较长,请看官耐心阅读。

Pylash项目地址

由于本次开发用到了pylash,大家可以先去Github上对引擎进行了解。
https://github.com/yuehaowang/pylash_engine

创建项目

首先在工作目录创建一个名为get_fruits的目录。然后到Github下载Pylash。引擎是基于Python3和PyQt4构建的,所以在使用前请确保你使用的是Python3并且安装了PyQt4。如果没有,可以在上述项目地址中找到他们的相关网页链接进行下载安装,安装和配置步骤都十分简单。这里不再赘述。

下载完Pylash后,我们得到这样的目录结构:

+- pylash_engine/
    |
    +- pylash/
    |
    +- demo/
    |
    +- examples/

大家可以在demo/examples/两个目录下查看示例。本文的源代码可以在examples/get_fruits中找到。

pylash目录就是引擎源代码。接下来把这个目录复制到我们创建的get_fruits目录下,再在get_fruits目录下创建一个images目录,用于储存图片。最后创建一个Main.py文件。这时,我们的get_fruits目录结构如下:

+- get_fruits/
    |
    +- pylash/
    |
    +- images/
    |
    +- Main.py

然后将引擎目录plash_engine/examples/get_fruits/images/下图片复制到项目目录get_fruits/images/下,用作游戏素材。

images/目录 截图

这样一来,我们的项目就创建好了,接下来只用往Main.py里填写代码,然后运行即可。

编写Hello World小程序

用代码编辑器(推荐Sublime Text)打开Main.py文件,写入以下代码:

# !/usr/bin/env python3
# -*- coding: utf-8 -*-

from pylash.utils import init, addChild
from pylash.text import TextField

def main():
    # 创建文本显示对象
    txt = TextField()
    # 设置文本内容
    txt.text = "Hello World"
    # 设置文本颜色
    txt.textColor = "red"
    # 设置文本位置
    txt.x = 50
    txt.y = 100
    # 设置文本字体大小
    txt.size = 50
    # 将文本对象加入到最底层
    addChild(txt)

# 初始化窗口,参数:界面刷新时间(单位:毫秒),窗口标题,窗口宽度,窗口高度,初始化完毕后回调函数
init(1000 / 60, "Hello World", 800, 600, main)

运行Main.py,如果得到了如下图所示的界面,说明程序正常运转起来了。

Hello World 演示截图

大家可以结合注释初步认识Pylash。熟悉flash的同学不难发现,TextField就是flash里显示文本的类,而且用法十分相近。
我们从代码的第4行看起,这里我们引入了pylash中的一些函数和类。pylash提供了很多模块,大家可以到这里查看它们的简介。
再往下看,我们会发现,pylash提供了一个用于显示文本的类,通过设置这个类的不同属性来设定文本样式。最后使用addChild将文本显示对象加入到界面中。我们可以把游戏看作分为很多层:地图层、人物层、UI层……,通过分层我们就能实现层次化显示效果。比如人物一直是在地图上方显示的,那么人物层就在地图层上方。addChild函数就是把一个显示对象加到最底层。
最后,我们使用init函数初始化窗口。

Pylash提供了许多基础显示对象,除了TextField文本显示类,还有Bitmap图片显示类,Sprite精灵类等。下文会提及。

编写游戏

有了上述对pylash的大致了解,我们就可以开始编写游戏了。首先,删除第四行以后所有代码。

引入所需

首先引入我们所需的所有类和函数,修改Main.py

from pylash.utils import stage, init, addChild, KeyCode
from pylash.system import LoadManage
from pylash.display import Sprite, BitmapData, Bitmap, FPS
from pylash.text import TextField, TextFormatWeight
from pylash.events import MouseEvent, Event, KeyboardEvent
from pylash.ui import LoadingSample1

这些类和函数在下面的代码中都会被用到。由于我是提前写好了游戏,所以在这里把这部分代码一块儿贴出来了,大家使用的时候可以根据自己使用情况,每用一个引入一个。

全局变量

游戏中需要用到一些全局变量,大家可以先浏览一遍,不同知道它们是干什么的,后文会用到它们:

dataList = {}

stageLayer = None
player = None
itemLayer = None
scoreTxt = None
addItemSpeed = 40
addItemSpeedIndex = 0
score = 0
keyboardEnabled = False

加载资源

我们的游戏中要用到图片,所以要提前加载图片(存储于images/目录下)。加载图片我们用到LoadManage静态类和LoadingSample1进度条类(还有LoadingSample2LoadingSample3这两款不同样式的进度条。或者大家深入学习后,可以自己写一个进度条类)。修改main函数:

def main():
    # 资源列表,一个list对象,格式:{"name" : 资源名称, "path" : 资源路径}
    loadList = [
        {
  "name" : "player", "path" : <
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值