写作绅士,读作丧尸 X岛揭示板
 首页版规 |用户系统 |移动客户端下载 | 丧尸路标 | | 常用图串及路标 | 请关注 公众号:【矛盾苇草】| 人,是会思考的芦苇
常用串:·豆知识·跑团板聊天室·公告汇总串·X岛路标

No.62326498 - 无标题 - 技术宅


回应模式
No.62326498
名 称
E-mail
标题
颜文字
正文
附加图片
•程序语言、压制投稿、视频制作以及各计算机领域的技术问题
•我觉得还是CSDN靠谱一点
•本版发文间隔为15秒。

无标题 无名氏 2024-05-09(四)23:37:00 ID:TPWHppd [举报] [订阅] [只看PO] No.62326498 [回应] 管理
肥哥们,我现在在实现这样一个功能:

如果设施a存在,为巢穴提供一个数值+1

我现在的实现方式是在设施a被修建起来时令巢穴的数值+1,然后在被摧毁时令巢穴的数值-1

但这样的话就要写两个函数,感觉不够优雅,工作量也很大,有没有更好的实现方式呢(つд⊂)
Tips 无名氏 2099-01-01 00:00:01 ID:Tips超级公民 [举报] No.9999999 管理
( 」゚Д゚)」<X岛官博改名啦,认准新名称@X岛揭示板
无标题 无名氏 2024-05-09(四)23:37:27 ID:TPWHppd (PO主) [举报] No.62326507 管理
写了一天的代码,感觉脑子有点乱,如果没说清楚的话,我会补充的(つд⊂)
无标题 无名氏 2024-05-09(四)23:43:40 ID:TPWHppd (PO主) [举报] No.62326590 管理
语言是js,我们在做的是一个网页游戏,我们希望能够有类似创意工坊的功能,所以接口写得比较松散
无标题 无名氏 2024-05-10(五)00:50:18 ID:gfr22vh [举报] No.62327521 管理
A存在,A的状态为1;A不存在,A的状态为0
B的数值加上A的状态
无标题 无名氏 2024-05-10(五)05:03:10 ID:5OiFZ7z [举报] No.62328646 管理
用callback实现?
无标题 无名氏 2024-05-10(五)08:16:35 ID:8xX9yzH [举报] No.62329165 管理
修建和摧毁时发一个update事件,然后重新计算数值
无标题 无名氏 2024-05-10(五)09:07:06 ID:QbwxZDS [举报] No.62329536 管理
感觉写成两个函数/事件回调没什么问题,挺符合职责分离的


不然就写个集合,把所有的a加进去,建造/销毁的时候触发巢穴去获取a的集合的数量
无标题 无名氏 2024-05-10(五)10:27:53 ID:TPWHppd (PO主) [举报] No.62330232 管理
>>No.62327521
有点不好,因为A的数量不可控,我们的需求是失去时及时销毁( ;´д`)

>>No.62328646
那不还是函数吗( ゚∀。)

>>No.62329165
也不大行,因为设施a的效果也不可控,我们的最优期望是一个自定义函数能够实现设施a的效果,然后通过某些方式来控制这个函数是否起效(つд⊂)

>>No.62329536
理是这个理,但是工作量真的很大(;´Д`)
而且和需求是有一点不符合的|-` )
需求是“这个设施存在时提供的效果”,而不是“这个设施建设时/摧毁时提供的效果”

后两者是另外的需求了(つд⊂)
无标题 无名氏 2024-05-10(五)10:31:52 ID:TPWHppd (PO主) [举报] No.62330265 管理
>>No.62329536
集合似乎是正确的做法呢,但是设施A的效果理应是一个自定义函数,我们希望的是这个函数的触发与否能够得到控制|-` )

但问题就在于巢穴的数值要么受到这些集合的改变呢

难道说要在每一次发生设施的状态变化时,都刷新一次巢穴的状态,计算巢穴的设施集合内的设施对象的效果吗|-` )
感觉后面设施对象的量升上来的话,优化会很吃力(つд⊂)
无标题 无名氏 2024-05-10(五)11:26:06 ID:8xX9yzH [举报] No.62330879 管理
>>No.62330265
游戏60帧,一秒算60次也不会消耗多少资源吧
无标题 无名氏 2024-05-10(五)11:39:42 ID:TPWHppd (PO主) [举报] No.62331021 管理
>>No.62330879
不是那种游戏啦,是一个很简单的网页游戏,回合制的那种( ゚∀。)

另外就是我们希望“设施”的数量不会过大地影响到运行效率,一个网页游戏占用太多内存不好的吧(*´д`)

但是要把函数执行行动限制单个对象的话,似乎又没有很好的方法完成需求( ;`д´; )
无标题 无名氏 2024-05-10(五)18:36:19 ID:QbwxZDS [举报] No.62335097 管理
>>No.62330265
刷新的是数值不是巢穴效果,巢穴发动效果的时候读数值
无标题 无名氏 2024-05-10(五)19:54:19 ID:TPWHppd (PO主) [举报] No.62335932 管理
>>No.62335097
巢穴的数值要求持续性地显示呢|-` )

我们目前的解决方案是给巢穴一个不显式显示的“受影响”属性,存放这个巢穴受到不同影响,标注这个影响的来源,影响的属性键值对和影响优先级

我们决定这样比较接近需求的原生含义。

然后到时候刷新状态也不需要把巢穴的所有设施都遍历,只需要遍历这些影响的来源,判断其是否有效就可以啦|∀` )

我个人觉得最后的这个遍历影响还有一点反直觉,不过我也想不出更好的方法了,不知道肥哥们是怎么想的呢|-` )
无标题 无名氏 2024-05-10(五)20:58:24 ID:TPWHppd (PO主) [举报] No.62336585 管理
>>No.62335932
呜哇,新的需求下来了,说是要能够显示一个对象的某个属性所受到的影响(;´Д`)

也就是要显示:

巢穴空间:5+2(设施a)+10%(天赋b)

这样的数据|-` )

那这样的话“影响”数组不就没用了吗,里面没有对应属性的标识啊,总不能遍历整个“影响”数组,然后把其中包含了要显示的属性的部分摘出来再显示吧(つд⊂)

目前看下来是需要把各个属性做成数组,然后往里面填充影响对象

也就是说要做成:

巢穴空间=[
 {影响源:自身,数值:+5},
 {影响源:设施a,数值:+3},
 {影响源:天赋b,数值:+10%}
]

这种( ´_ゝ`)

那这样的话显示逻辑也要改了,得在显示时判断每个影响对象是否有效

超麻烦……!做游戏好难啊肥哥(;´Д`)
无标题 无名氏 2024-05-11(六)01:07:42 ID:QbwxZDS [举报] No.62339903 管理
上面需求规格不写清楚导致的,建议图图了(`ヮ´ )
无标题 无名氏 2024-05-11(六)11:28:06 ID:TPWHppd (PO主) [举报] No.62343119 管理
>>No.62339903
程序的一生就是被策划牵着鼻子走゚(つд`゚)
无标题 无名氏 2024-05-11(六)11:32:34 ID:TPWHppd (PO主) [举报] No.62343178 管理
做了一晚上感觉还是有些地方不清楚,把影响对象放进属性里倒是挺合理的,毕竟影响的就是属性本身嘛,但是无论是显示属性还是设置属性都变得超麻烦|-` )

我们的数据是dbmongo的json文件,也就是说生成对象时还得按照属性一个个地生成基础的影响对象再填装……

好吧其实我就是不想改之前的代码(;´Д`)
呱!我补要看史山啊( ;`д´; )
无标题 无名氏 2024-05-12(日)15:52:06 ID:TPWHppd (PO主) [举报] No.62357457 管理
>>No.62335932
我真的服了,最后还是要用一开始的“获得”+“失去”方案,因为影响有不同的失效方式,所以如果用这个发案的话,还得给不同的影响对象绑定对应的“失效”函数( ゚π。)

但是这样的话本质上和“获得”+“失去”没有区别了口牙( ゚ᯅ 。)

因为一部分效果是会采用buff的形式上给对象的,只是设施提供的buff持续时间是永久,直到设施对象失效时才会消失,但是这种buff要每回合检测的话又不是很合理( ›´ω`‹ )
无标题 无名氏 2024-05-12(日)15:53:40 ID:TPWHppd (PO主) [举报] No.62357478 管理
等一下,buff又要怎么起效呢(´゚Д゚`)
难道每种buff都要做一个“生效”和“失效”函数吗(;´Д`)
无标题 无名氏 2024-05-12(日)16:00:06 ID:TPWHppd (PO主) [举报] No.62357527 管理
不过之前做的“属性影响”确实可以用,只是要做一些改变,让“属性”本身也变成一个“影响”

因为有一些特性的效果是让对象获得特殊属性……

( ›´ω`‹ )天哪,做游戏比做软件难太多了吧……

UP主: