[Ren'Py 进阶教程] 商店/物品/背包(后端部分)
效果展示:

代码下载地址见评论
使用规则
教程中的代码可以用于非商用/商用的游戏,不需要和本人联系,但是需要在发布的时候署名。
署名信息:
Black Pineapple
blue.pepper.2019@gmail.com
禁止事项
非代码素材,比如美术,声音等,未经过本人许可,都禁止使用。
代码禁止用于非游戏的商用场合,比如在付费的教程中使用本代码,再比如加工后单纯出售代码。
前言
本系列教程是Ren'Py的进阶教程,适合于有一定基础的同学。推荐至少读完了官方文档里起步,官方自带的教程(Ren’Py Launcher里那个),或者各大新手教程中的一个。
本教程是关于如何实现一个商店/物品系统。
物品类(ItemClass.rpy)
物品类在这个教程里有两个一个是基类Item,一个是派生类BoosterItem。简单的来说,Item就是所有的东西,BoosterItem是一个具体的东西,BoosterItem这里是使用来可以增加人物属性的东西。同学们后面可以自己定义别的类型的物品,比如可以无限次使用的耐用品。
关于继承方面的知识请查阅python Inheritance(继承), 关于类的知识请直接搜python class(类)。
Item
__init__函数
这是所有类都有的初始化函数,这里定义了两个变量,一个是name是物品的名字,一个是img是物品的图片。如果需要添加什么自己需要的变量,可以仿照name增加。
__eq__函数和__hash__函数
因为后面用了item这个类来做字典的键值,所以需要这两个函数,用来比较两个物品对象是不是一个物品。
请自行查阅python dict(字典),来了解字典相关知识。
get_icon函数
返回一个物品图片位置的字符串。e.g. “images/items/fox.png”
BoosterItem
__init__函数
因为是派生类,所以会有下面的语句
所有图片的路径都被直接设定为:'images/items/' + name + '.png
use函数
这个函数会根据这个物品的booster属性,增加使用者对应的属性。
例子:
如果在按钮里调用函数,可以参考Function
关于物品的例子,可以参考0shop_items.rpy
Inventory(InventoryClass.rpy)
字典可以理解为一个储物柜,需要号码,才能找到具体是哪个格子,然后拿到里面的东西。关于字典的知识请直接搜python dict(字典)。这个类可以理解为一个储物柜,每种物品放一格,可以用于商店的库存,玩家的物品格等。
__init__函数
__str__函数
这个函数是用来在控制台debug的时候,可以打印出目前仓库里所有的东西和数量。
剩下的函数解释请看代码中的注释。
商店Shop (ShopClass.rpy)
请看代码中的注释。
玩家Player(PlayerClass.rpy)
请参考代码内注释
GridHelper(GridHelper.rpy)
这个函数是用来计算,格子的数量,配合grid关键字使用。
MINIMUM_NUM_ROWS 是格子至少有多少行,比如物品比较少的时候可能只有1行,但是制作者可以指定至少显示2行。
NUM_COLUMN 是有多少列。