背包格子的物品交换加移动的实现
背景嘛~ QQ群有人提起,自己又刚好需要一个,于是写下了这篇.
--main.lua require "MAIN_BOX" --最好把背包格子写成类 ---------------------------- --MAIN_BOX.lua box={} --初始化格子的数据 总共6*4格 for n=1,6 do for i=1,4 do box[n][m]={ id=0 --物品id boxline=70, --我用的是边长为70xp的正方形格子 light=false --高亮边框 end end -- boxin是一个放入的函数 function boxin(id) local full=true for n=1,6 do for i=1,4 do if(box[n][m].id==0)then box[n][m].id=id full=false end end end if(full)then --满了给出的代码 end end --放入物品 boxin(1) boxin(2)
然后问题就是QQ群有人问:"怎么实现交换物品啊?"
首先写个物品的"操纵杆",什么意思?
就是光标(或鼠标)选择物品时 记录选择的物品数据的那个东西.
ub={}--物品的"操纵杆"usebox if(首先要光标确定,或鼠标点击后是否在包裹区域内) and(这里检测光标的位置,或判断鼠标在包裹区域内的位置)then local x,y = 这里返回光标取整后的位置,或鼠标取整后的位置 ub.out=box[x],box[x],box[x][y].id --电脑知道你选的什么了 box[x][y].light=true --选定的物品高亮 --[[ 如果是鼠标操作则可以加上个缓存 用来在鼠标位置显示正在移动的物品 并且可以让被移动的物品图片隐藏显示]]
接下来就是放置或交换物品了
在光标在新位置确定时,或鼠标在新位置松开左键时
即可以调用确定位置的函数
*注意 要加上是否和原来位置相同的判断
--光标确定的瞬间,或鼠标松开左键的瞬间 实现物品交换或放置 if(......)then -- newX,newY表示新位置 ub.ID=newX,newY,box[newX][newY].id --拿到物品的ID box[newX][newY].id=ub.id --新旧交替 box[ub.x][ub.y].id=ub.ID --如果新的是空的 那么相当于移动位置 ub.x,ub.y,ub.id=newX,newY,ub.ID --选择的格子发生变化 --还有一些光标位置的改变啊 --高亮边框什么的东东我就不写了 ... ... ... end
嗯 就是这样
感觉讲这么多很废话,不过鉴于自己打字不累 心情好就算了~
反正硬是不懂或者有什么 简-单-的-奇思妙想不会写代码再来@我吧.