求助:关于背包的问题?
gamemaker吧
全部回复
仅看楼主
level 8
vjdnvk
楼主
请教一个新手game maker的问题,如下图所示,红色选择框选0号物品时,按下空格键背包便填充0号物品,每此按一下空格键填充一个物品,直到填满背包,选择框选1号物品时,按下空格键背包便填充1号物品,选择框选2号物品时,也是如此,暂时只做填充0,1,2号物品,这个应该怎么做?做好能给出源码。
2024年10月15日 03点10分
1
level 8
vjdnvk
楼主
以下是物品素材
通过百度网盘分享的文件:物品数字图标及其选择框
链接:
网盘链接
提取码:28c6
2024年10月15日 04点10分
2
level 8
vjdnvk
楼主
选择框是按键盘上上下左右键移动的
2024年10月15日 04点10分
3
level 2
镜湖月与云
声明一个长度9的数组
你上面选品给到数组
下面读取数组显示到自己
2024年10月15日 23点10分
4
吧务
level 13
q糖豆p
分享的文件是10个png,没有gmk,所以没办法看出你现在是怎么做的。
从描述来推测,不同的物品制作了不同的object,然后在每个object上定义“被选中且按下空格时,执行填充背包的动作”。然后现在因为制作过程重复部分很高,一旦发现一个地方出错要改的地方也会很多,现在陷入了迷茫。
首先明确两点,一个是程序这东西是尽量把大量重复的东西归类到少量的规律上,另一个是很多事情的做法并不唯一(比如5×5的25个格子既可以归类成5行也可以归类成5列)。介绍一下咱知道的几个简化/归类的方法:
方法0:parent object
制作一个专用的object,定义出包含“向背包填充”这个动作的事件(暂时不提你的背包是啥结构),然后物品0、物品1这些,全都把这个新object指定为parent,且不再定义同一个事件。
方法1:object合并
考虑是否有必要这些物品制作成不同的object,它们之间到底有多大区别,能否合并成一个object的不同instance,通过一个类似小的主控object,在创建时赋予它们不同属性来达到相同效果。
方法2:使用script
把“向背包填充”这个动作做成script(新版里的function),需要进行这个动作时直接执行。后续如果发现“填充”这个逻辑有问题的时候,改script就好,只需要改1次。
至于向背包里填充物品(或者说放入一个物品),根据你的背包制作逻辑不同,制作难度也不同。一般是推荐“用一个数据结构(如4L提到的数组)来表示整个背包”。如果你在用9个instance(甚至9个object)来做背包格子,建议先改这一部分。
2024年10月16日 00点10分
5
level 8
vjdnvk
楼主
@q糖豆p
之前的链接现在添加了gmk工程文件进度,我大致实现了我想要的功能,可我认为功能虽然实现了,但方法却并不正确,我是在购买物品时将每一个元素一个一个替换,而不是使用矩阵算法在单个数组里操作,因为不懂编程矩阵算法,也不知道gm编程矩阵算法里的情况?可以帮我修改一下吗?谢谢
2024年10月16日 04点10分
6
q糖豆p
矩阵算法是啥,这个功能里需要用到矩阵嘛
2024年10月16日 08点10分
vjdnvk
@q糖豆p
抱歉,我刚搜了一下,背包不需要矩阵算法,不过实现起来好像有点难
2024年10月16日 08点10分
vjdnvk
@q糖豆p
只是看起来要用到处理数组,我就想到了高数里的矩阵算法
2024年10月16日 08点10分
吧务
level 13
q糖豆p
这代码,诡异的很啊……建议重新构思一下,背包/购买的逻辑究竟是什么
0、目前按下回车时的动作并不是购买,而是移动隐藏光标(变量xx和xx2);
1、目前向背包的格子填充物品并不是“按下按键时”,而是在step事件一个无if判定的区域里;//意思就是只要隐藏光标满足条件就会一直向那个格子里填入物品,虽说你还没做物品堆叠但这做法显然不合理
2、隐藏光标是顺序增加的,即根本不会判断当前格子是否有物品;
-----------分割线-----------
我确实可以写一个答案出来,但如果不引导你思考整个过程的话,对将来的制作没什么好处。
另外每个sprite是可以有多帧的(一个sprite有多个image),会有一些帮助。
2024年10月16日 08点10分
7
vjdnvk
我那个代码逻辑确实不怎么样,可以说是瞎搞的,只是单纯的为了实现某些想法而已
2024年10月16日 11点10分
vjdnvk
求教
2024年10月16日 11点10分
q糖豆p
@vjdnvk
这东西是自己写出来才能会,单纯学是学不会的,更不可能教完就会。我能做的就是引导你到合适的方向上,并且已经在这么做了。这3个问题(也就是提到的诡异的地方)和那个提示至少先思考一下吧。
2024年10月17日 01点10分
吧务
level 13
q糖豆p
按咱的考虑,背包应该有的逻辑。
2024年10月16日 09点10分
8
vjdnvk
这个能不能给个gmk工程啊
2024年10月16日 11点10分
q糖豆p
@vjdnvk
不能。直接给GMK→直接给答案→扼杀你的思考过程→把一个本能让你学会东西的机会毁掉。
2024年10月17日 01点10分
vjdnvk
@q糖豆p
好吧,那我自己找找资料研究看看
2024年10月17日 03点10分
vjdnvk
能给个提示需要用到哪些算法吗,我现在一点头绪也没有
2024年10月17日 04点10分
吧务
level 13
q糖豆p
链接:
[有效] https://pan.baidu.com/s/1EREnvx6zLfQEMSnqAnlYrg?pwd=3x3b
有些地方偷懒,但在没有后续的情况下也没啥可改的,凑合用吧。
sprite0到sprite8打包到sBags之后,原来的其实可以删了(但没删)
多余的代码有些只是做了注释处理,没清除。
2024年10月23日 06点10分
9
vjdnvk
谢谢,辛苦了
2024年10月23日 08点10分
q糖豆p
@vjdnvk
辛苦倒是不辛苦,甚至因为做出这样的东西被称作大佬感觉心情复杂。能搞定矩阵却写不出循环的话,“偏科”有点严重啊……建议找一些编程方面的基础教程,熟悉一下编程的相关思路。
2024年10月24日 01点10分
level 8
vjdnvk
楼主
@镜湖月与云
谢谢,问题已经解决了,而且现在还实现了物品的移动与替换
2024年10月28日 02点10分
12
1