gamemaker吧 关注:13,629贴子:95,027
  • 26回复贴,共1

求助:关于背包的问题?

只看楼主收藏回复

请教一个新手game maker的问题,如下图所示,红色选择框选0号物品时,按下空格键背包便填充0号物品,每此按一下空格键填充一个物品,直到填满背包,选择框选1号物品时,按下空格键背包便填充1号物品,选择框选2号物品时,也是如此,暂时只做填充0,1,2号物品,这个应该怎么做?做好能给出源码。


IP属地:湖北来自iPhone客户端1楼2024-10-15 11:55回复
    以下是物品素材
    通过百度网盘分享的文件:物品数字图标及其选择框
    链接:网盘链接
    提取码:28c6


    IP属地:湖北来自iPhone客户端2楼2024-10-15 12:00
    回复
      选择框是按键盘上上下左右键移动的


      IP属地:湖北来自iPhone客户端3楼2024-10-15 12:26
      回复
        声明一个长度9的数组
        你上面选品给到数组
        下面读取数组显示到自己


        IP属地:吉林4楼2024-10-16 07:03
        回复
          分享的文件是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)来做背包格子,建议先改这一部分。


          IP属地:北京5楼2024-10-16 08:40
          回复
            @q糖豆p 之前的链接现在添加了gmk工程文件进度,我大致实现了我想要的功能,可我认为功能虽然实现了,但方法却并不正确,我是在购买物品时将每一个元素一个一个替换,而不是使用矩阵算法在单个数组里操作,因为不懂编程矩阵算法,也不知道gm编程矩阵算法里的情况?可以帮我修改一下吗?谢谢


            IP属地:湖北来自iPhone客户端6楼2024-10-16 12:38
            收起回复
              这代码,诡异的很啊……建议重新构思一下,背包/购买的逻辑究竟是什么
              0、目前按下回车时的动作并不是购买,而是移动隐藏光标(变量xx和xx2);
              1、目前向背包的格子填充物品并不是“按下按键时”,而是在step事件一个无if判定的区域里;//意思就是只要隐藏光标满足条件就会一直向那个格子里填入物品,虽说你还没做物品堆叠但这做法显然不合理
              2、隐藏光标是顺序增加的,即根本不会判断当前格子是否有物品;
              -----------分割线-----------
              我确实可以写一个答案出来,但如果不引导你思考整个过程的话,对将来的制作没什么好处。
              另外每个sprite是可以有多帧的(一个sprite有多个image),会有一些帮助。


              IP属地:北京7楼2024-10-16 16:35
              收起回复

                按咱的考虑,背包应该有的逻辑。


                IP属地:北京8楼2024-10-16 17:09
                收起回复
                  链接: https://pan.baidu.com/s/1EREnvx6zLfQEMSnqAnlYrg?pwd=3x3b
                  有些地方偷懒,但在没有后续的情况下也没啥可改的,凑合用吧。
                  sprite0到sprite8打包到sBags之后,原来的其实可以删了(但没删)
                  多余的代码有些只是做了注释处理,没清除。


                  IP属地:北京9楼2024-10-23 14:58
                  收起回复
                    @镜湖月与云 谢谢,问题已经解决了,而且现在还实现了物品的移动与替换


                    IP属地:湖北来自iPhone客户端12楼2024-10-28 10:35
                    回复